forked from qt-creator/qt-creator
SquishTests: Remove firewall handling for Windows
Handling the firewall from script is cumbersome and not worth the effort - remove all related code. Explicitly state the prerequisite of disabling notifications for the firewall. Change-Id: Icbe3075127eeb9a57724c334f0b52a24f8b08f59 Reviewed-by: Robert Löhning <robert.loehning@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Jukka Nokso <jukka.nokso@qt.io>
This commit is contained in:
@@ -63,10 +63,7 @@ started. On Windows, this has the following prerequisites:
|
||||
Either:
|
||||
* have no firewall at all enabled (sure that's a bad idea)
|
||||
Or:
|
||||
* run Windows with English UI
|
||||
* have the Windows Firewall enabled (no other firewalls are handled by the scripts)
|
||||
* run the Squish tests with administrator privileges
|
||||
* additionally the UAC should be disabled, too
|
||||
* have notifications disabled for the firewall when an application tries to access network
|
||||
|
||||
Otherwise you'll have some trouble with popping up dialogs from the firewall.
|
||||
If you're using a different firewall - try to figure out and add a rule for this.
|
||||
|
@@ -266,69 +266,3 @@ def verifyBreakPoint(bpToVerify):
|
||||
test.fatal("Expected a dict for bpToVerify - got '%s'" % className(bpToVerify))
|
||||
return False
|
||||
|
||||
# helper to check whether win firewall is running or not
|
||||
# this doesn't check for other firewalls!
|
||||
def __isWinFirewallRunning__():
|
||||
if hasattr(__isWinFirewallRunning__, "fireWallState"):
|
||||
return __isWinFirewallRunning__.fireWallState
|
||||
if platform.system() not in ('Microsoft' 'Windows'):
|
||||
__isWinFirewallRunning__.fireWallState = False
|
||||
return False
|
||||
result = getOutputFromCmdline(["netsh", "firewall", "show", "state"])
|
||||
for line in result.splitlines():
|
||||
if "Operational mode" in line:
|
||||
__isWinFirewallRunning__.fireWallState = not "Disable" in line
|
||||
return __isWinFirewallRunning__.fireWallState
|
||||
return None
|
||||
|
||||
# helper that can modify the win firewall to allow a program to communicate through it or delete it
|
||||
# param addToFW defines whether to add (True) or delete (False) this program to/from the firewall
|
||||
def __configureFW__(workingDir, projectName, isReleaseBuild, addToFW=True):
|
||||
if isReleaseBuild == None:
|
||||
if projectName[-4:] == ".exe":
|
||||
projectName = projectName[:-4]
|
||||
path = "%s%s%s" % (workingDir, os.sep, projectName)
|
||||
elif isReleaseBuild:
|
||||
path = "%s%s%s%srelease%s%s" % (workingDir, os.sep, projectName, os.sep, os.sep, projectName)
|
||||
else:
|
||||
path = "%s%s%s%sdebug%s%s" % (workingDir, os.sep, projectName, os.sep, os.sep, projectName)
|
||||
if addToFW:
|
||||
mode = "add"
|
||||
enable = "ENABLE"
|
||||
else:
|
||||
mode = "delete"
|
||||
enable = ""
|
||||
projectName = ""
|
||||
# Needs admin privileges on Windows 7
|
||||
# Using the deprecated "netsh firewall" because the newer
|
||||
# "netsh advfirewall" would need admin privileges on Windows Vista, too.
|
||||
return subprocess.call(["netsh", "firewall", mode, "allowedprogram",
|
||||
"%s.exe" % path, projectName, enable])
|
||||
|
||||
# function to add a program to allow communication through the win firewall
|
||||
# param workingDir this directory is the parent of the project folder
|
||||
# param projectName this is the name of the project (the folder inside workingDir as well as the name for the executable)
|
||||
# param isReleaseBuild should currently always be set to True (will later add debug build testing)
|
||||
def allowAppThroughWinFW(workingDir, projectName, isReleaseBuild=True):
|
||||
if not __isWinFirewallRunning__():
|
||||
return
|
||||
# WinFirewall seems to run - hopefully no other
|
||||
result = __configureFW__(workingDir, projectName, isReleaseBuild)
|
||||
if result == 0:
|
||||
test.log("Added %s to firewall" % projectName)
|
||||
else:
|
||||
test.fatal("Could not add %s as allowed program to win firewall" % projectName)
|
||||
|
||||
# function to delete a (former added) program from the win firewall
|
||||
# param workingDir this directory is the parent of the project folder
|
||||
# param projectName this is the name of the project (the folder inside workingDir as well as the name for the executable)
|
||||
# param isReleaseBuild should currently always be set to True (will later add debug build testing)
|
||||
def deleteAppFromWinFW(workingDir, projectName, isReleaseBuild=True):
|
||||
if not __isWinFirewallRunning__():
|
||||
return
|
||||
# WinFirewall seems to run - hopefully no other
|
||||
result = __configureFW__(workingDir, projectName, isReleaseBuild, False)
|
||||
if result == 0:
|
||||
test.log("Deleted %s from firewall" % projectName)
|
||||
else:
|
||||
test.warning("Could not delete %s as allowed program from win firewall" % (projectName))
|
||||
|
@@ -36,7 +36,7 @@ def main():
|
||||
for kit, config in availableConfigs:
|
||||
test.log("Selecting '%s' as build config" % config)
|
||||
verifyBuildConfig(kit, config, True, True, True)
|
||||
# explicitly build before start debugging for adding the executable as allowed program to WinFW
|
||||
# explicitly build before start debugging
|
||||
selectFromLocator("t rebuild", "Rebuild All Projects")
|
||||
waitForCompile(300000)
|
||||
if not checkCompile():
|
||||
@@ -52,7 +52,6 @@ def main():
|
||||
buildDir = os.path.join(str(waitForObject(":Qt Creator_Utils::BuildDirectoryLineEdit").text),
|
||||
"debug")
|
||||
switchViewTo(ViewConstants.EDIT)
|
||||
allowAppThroughWinFW(buildDir, projectName, None)
|
||||
if not doSimpleDebugging(kit, config, expectedBreakpointsOrder):
|
||||
try:
|
||||
stopB = findObject(':Qt Creator.Stop_QToolButton')
|
||||
@@ -60,8 +59,6 @@ def main():
|
||||
clickButton(stopB)
|
||||
except:
|
||||
pass
|
||||
if platform.system() in ('Microsoft' 'Windows'):
|
||||
deleteAppFromWinFW(buildDir, projectName, None)
|
||||
# close application output window of current run to avoid mixing older output on the next run
|
||||
ensureChecked(":Qt Creator_AppOutput_Core::Internal::OutputPaneToggleButton")
|
||||
clickButton(waitForObject("{type='CloseButton' unnamed='1' visible='1' "
|
||||
|
Reference in New Issue
Block a user