def main(): automation = Automation() parser = ReftestOptions(automation) reftest = RefTest(automation) options, args = parser.parse_args() if len(args) != 1: print >>sys.stderr, "No reftest.list specified." sys.exit(1) options = parser.verifyCommonOptions(options, reftest) options.app = reftest.getFullPath(options.app) if not os.path.exists(options.app): print """Error: Path %(app)s doesn't exist. Are you executing $objdir/_tests/reftest/runreftest.py?""" \ % {"app": options.app} sys.exit(1) if options.xrePath is None: options.xrePath = os.path.dirname(options.app) if options.symbolsPath and not isURL(options.symbolsPath): options.symbolsPath = reftest.getFullPath(options.symbolsPath) options.utilityPath = reftest.getFullPath(options.utilityPath) sys.exit(reftest.runTests(args[0], options))
def main(): automation = Automation() parser = ReftestOptions(automation) reftest = RefTest(automation) options, args = parser.parse_args() if len(args) != 1: print >> sys.stderr, "No reftest.list specified." sys.exit(1) options = parser.verifyCommonOptions(options, reftest) options.app = reftest.getFullPath(options.app) if not os.path.exists(options.app): print """Error: Path %(app)s doesn't exist. Are you executing $objdir/_tests/reftest/runreftest.py?""" \ % {"app": options.app} sys.exit(1) if options.xrePath is None: options.xrePath = os.path.dirname(options.app) if options.symbolsPath and not isURL(options.symbolsPath): options.symbolsPath = reftest.getFullPath(options.symbolsPath) options.utilityPath = reftest.getFullPath(options.utilityPath) sys.exit(reftest.runTests(args[0], options))
def main(): automation = Automation() mochitest = Mochitest(automation) parser = MochitestOptions(automation) options, args = parser.parse_args() options = parser.verifyOptions(options, mochitest) if options == None: sys.exit(1) options.utilityPath = mochitest.getFullPath(options.utilityPath) options.certPath = mochitest.getFullPath(options.certPath) if options.symbolsPath and not isURL(options.symbolsPath): options.symbolsPath = mochitest.getFullPath(options.symbolsPath) automation.setServerInfo(options.webServer, options.httpPort, options.sslPort, options.webSocketPort) sys.exit(mochitest.runTests(options))
def verifyOptions(self, options, mochitest): """ verify correct options and cleanup paths """ if options.app is None: if build_obj is not None: options.app = build_obj.get_binary_path() else: self.error("could not find the application path, --appname must be specified") if options.totalChunks is not None and options.thisChunk is None: self.error("thisChunk must be specified when totalChunks is specified") if options.totalChunks: if not 1 <= options.thisChunk <= options.totalChunks: self.error("thisChunk must be between 1 and totalChunks") if options.xrePath is None: # default xrePath to the app path if not provided # but only if an app path was explicitly provided if options.app != self.defaults['app']: options.xrePath = os.path.dirname(options.app) elif build_obj is not None: # otherwise default to dist/bin options.xrePath = build_obj.bindir else: self.error("could not find xre directory, --xre-path must be specified") # allow relative paths options.xrePath = mochitest.getFullPath(options.xrePath) options.profilePath = mochitest.getFullPath(options.profilePath) options.app = mochitest.getFullPath(options.app) if not os.path.exists(options.app): msg = """\ Error: Path %(app)s doesn't exist. Are you executing $objdir/_tests/testing/mochitest/runtests.py?""" self.error(msg % {"app": options.app}) return None if options.utilityPath: options.utilityPath = mochitest.getFullPath(options.utilityPath) if options.certPath: options.certPath = mochitest.getFullPath(options.certPath) if options.symbolsPath and not isURL(options.symbolsPath): options.symbolsPath = mochitest.getFullPath(options.symbolsPath) # Set server information on the options object options.webServer = '127.0.0.1' options.httpPort = DEFAULT_PORTS['http'] options.sslPort = DEFAULT_PORTS['https'] # options.webSocketPort = DEFAULT_PORTS['ws'] options.webSocketPort = str(9988) # <- http://hg.mozilla.org/mozilla-central/file/b871dfb2186f/build/automation.py.in#l30 # The default websocket port is incorrect in mozprofile; it is # set to the SSL proxy setting. See: # see https://bugzilla.mozilla.org/show_bug.cgi?id=916517 if options.vmwareRecording: if not mozinfo.isWin: self.error("use-vmware-recording is only supported on Windows.") mochitest.vmwareHelperPath = os.path.join( options.utilityPath, VMWARE_RECORDING_HELPER_BASENAME + ".dll") if not os.path.exists(mochitest.vmwareHelperPath): self.error("%s not found, cannot automate VMware recording." % mochitest.vmwareHelperPath) if options.testManifest and options.runOnlyTests: self.error("Please use --test-manifest only and not --run-only-tests") if options.runOnlyTests: if not os.path.exists(os.path.abspath(options.runOnlyTests)): self.error("unable to find --run-only-tests file '%s'" % options.runOnlyTests) options.runOnly = True options.testManifest = options.runOnlyTests options.runOnlyTests = None if options.manifestFile and options.testManifest: self.error("Unable to support both --manifest and --test-manifest/--run-only-tests at the same time") if options.webapprtContent and options.webapprtChrome: self.error("Only one of --webapprt-content and --webapprt-chrome may be given.") if options.jsdebugger: options.extraPrefs += [ "devtools.debugger.remote-enabled=true", "devtools.debugger.chrome-enabled=true", "devtools.chrome.enabled=true", "devtools.debugger.prompt-connection=false" ] options.autorun = False # Try to guess the testing modules directory. # This somewhat grotesque hack allows the buildbot machines to find the # modules directory without having to configure the buildbot hosts. This # code should never be executed in local runs because the build system # should always set the flag that populates this variable. If buildbot ever # passes this argument, this code can be deleted. if options.testingModulesDir is None: possible = os.path.join(os.getcwd(), os.path.pardir, 'modules') if os.path.isdir(possible): options.testingModulesDir = possible # Even if buildbot is updated, we still want this, as the path we pass in # to the app must be absolute and have proper slashes. if options.testingModulesDir is not None: options.testingModulesDir = os.path.normpath(options.testingModulesDir) if not os.path.isabs(options.testingModulesDir): options.testingModulesDir = os.path.abspath(options.testingModulesDir) if not os.path.isdir(options.testingModulesDir): self.error('--testing-modules-dir not a directory: %s' % options.testingModulesDir) options.testingModulesDir = options.testingModulesDir.replace('\\', '/') if options.testingModulesDir[-1] != '/': options.testingModulesDir += '/' if options.immersiveMode: if not mozinfo.isWin: self.error("immersive is only supported on Windows 8 and up.") mochitest.immersiveHelperPath = os.path.join( options.utilityPath, "metrotestharness.exe") if not os.path.exists(mochitest.immersiveHelperPath): self.error("%s not found, cannot launch immersive tests." % mochitest.immersiveHelperPath) if options.runUntilFailure: if not os.path.isfile(os.path.join(mochitest.oldcwd, os.path.dirname(__file__), mochitest.getTestRoot(options), options.testPath)): self.error("--run-until-failure can only be used together with --test-path specifying a single test.") if not options.repeat: options.repeat = 29 return options
def verifyOptions(self, options, mochitest): """ verify correct options and cleanup paths """ if options.contentSandbox != 'off': options.e10s = True mozinfo.update({"e10s": options.e10s}) # for test manifest parsing. mozinfo.update({"contentSandbox": options.contentSandbox}) # for test manifest parsing. if options.app is None: if build_obj is not None: options.app = build_obj.get_binary_path() else: self.error("could not find the application path, --appname must be specified") if options.totalChunks is not None and options.thisChunk is None: self.error("thisChunk must be specified when totalChunks is specified") if options.totalChunks: if not 1 <= options.thisChunk <= options.totalChunks: self.error("thisChunk must be between 1 and totalChunks") if options.xrePath is None: # default xrePath to the app path if not provided # but only if an app path was explicitly provided if options.app != self.defaults['app']: options.xrePath = os.path.dirname(options.app) if mozinfo.isMac: options.xrePath = os.path.join(os.path.dirname(options.xrePath), "Resources") elif build_obj is not None: # otherwise default to dist/bin options.xrePath = build_obj.bindir else: self.error("could not find xre directory, --xre-path must be specified") # allow relative paths options.xrePath = mochitest.getFullPath(options.xrePath) if options.profilePath: options.profilePath = mochitest.getFullPath(options.profilePath) options.app = mochitest.getFullPath(options.app) if options.dmdPath is not None: options.dmdPath = mochitest.getFullPath(options.dmdPath) if not os.path.exists(options.app): msg = """\ Error: Path %(app)s doesn't exist. Are you executing $objdir/_tests/testing/mochitest/runtests.py?""" self.error(msg % {"app": options.app}) return None if options.utilityPath: options.utilityPath = mochitest.getFullPath(options.utilityPath) if options.certPath: options.certPath = mochitest.getFullPath(options.certPath) if options.symbolsPath and not isURL(options.symbolsPath): options.symbolsPath = mochitest.getFullPath(options.symbolsPath) # Set server information on the options object options.webServer = '127.0.0.1' options.httpPort = DEFAULT_PORTS['http'] options.sslPort = DEFAULT_PORTS['https'] # options.webSocketPort = DEFAULT_PORTS['ws'] options.webSocketPort = str(9988) # <- http://hg.mozilla.org/mozilla-central/file/b871dfb2186f/build/automation.py.in#l30 # The default websocket port is incorrect in mozprofile; it is # set to the SSL proxy setting. See: # see https://bugzilla.mozilla.org/show_bug.cgi?id=916517 if options.vmwareRecording: if not mozinfo.isWin: self.error("use-vmware-recording is only supported on Windows.") mochitest.vmwareHelperPath = os.path.join( options.utilityPath, VMWARE_RECORDING_HELPER_BASENAME + ".dll") if not os.path.exists(mochitest.vmwareHelperPath): self.error("%s not found, cannot automate VMware recording." % mochitest.vmwareHelperPath) if options.testManifest and options.runOnlyTests: self.error("Please use --test-manifest only and not --run-only-tests") if options.runOnlyTests: if not os.path.exists(os.path.abspath(os.path.join(here, options.runOnlyTests))): self.error("unable to find --run-only-tests file '%s'" % options.runOnlyTests) options.runOnly = True options.testManifest = options.runOnlyTests options.runOnlyTests = None if options.manifestFile and options.testManifest: self.error("Unable to support both --manifest and --test-manifest/--run-only-tests at the same time") if options.webapprtContent and options.webapprtChrome: self.error("Only one of --webapprt-content and --webapprt-chrome may be given.") if options.jsdebugger: options.extraPrefs += [ "devtools.debugger.remote-enabled=true", "devtools.debugger.chrome-enabled=true", "devtools.chrome.enabled=true", "devtools.debugger.prompt-connection=false" ] options.autorun = False if options.debugOnFailure and not options.jsdebugger: self.error("--debug-on-failure should be used together with --jsdebugger.") # Try to guess the testing modules directory. # This somewhat grotesque hack allows the buildbot machines to find the # modules directory without having to configure the buildbot hosts. This # code should never be executed in local runs because the build system # should always set the flag that populates this variable. If buildbot ever # passes this argument, this code can be deleted. if options.testingModulesDir is None: possible = os.path.join(here, os.path.pardir, 'modules') if os.path.isdir(possible): options.testingModulesDir = possible # Even if buildbot is updated, we still want this, as the path we pass in # to the app must be absolute and have proper slashes. if options.testingModulesDir is not None: options.testingModulesDir = os.path.normpath(options.testingModulesDir) if not os.path.isabs(options.testingModulesDir): options.testingModulesDir = os.path.abspath(options.testingModulesDir) if not os.path.isdir(options.testingModulesDir): self.error('--testing-modules-dir not a directory: %s' % options.testingModulesDir) options.testingModulesDir = options.testingModulesDir.replace('\\', '/') if options.testingModulesDir[-1] != '/': options.testingModulesDir += '/' if options.immersiveMode: if not mozinfo.isWin: self.error("immersive is only supported on Windows 8 and up.") mochitest.immersiveHelperPath = os.path.join( options.utilityPath, "metrotestharness.exe") if not os.path.exists(mochitest.immersiveHelperPath): self.error("%s not found, cannot launch immersive tests." % mochitest.immersiveHelperPath) if options.runUntilFailure: if not options.repeat: options.repeat = 29 if options.dumpOutputDirectory is None: options.dumpOutputDirectory = tempfile.gettempdir() if options.dumpAboutMemoryAfterTest or options.dumpDMDAfterTest: if not os.path.isdir(options.dumpOutputDirectory): self.error('--dump-output-directory not a directory: %s' % options.dumpOutputDirectory) if options.useTestMediaDevices: if not mozinfo.isLinux: self.error('--use-test-media-devices is only supported on Linux currently') for f in ['/usr/bin/gst-launch-0.10', '/usr/bin/pactl']: if not os.path.isfile(f): self.error('Missing binary %s required for --use-test-media-devices') options.leakThresholds = { "default": options.defaultLeakThreshold, "tab": 10000, # See dependencies of bug 1051230. } # Bug 1051230 - Leak logging does not yet work for tab processes on desktop. # Bug 1065098 - The geckomediaplugin process fails to produce a leak log for some reason. options.ignoreMissingLeaks = ["tab", "geckomediaplugin"] return options
def verifyOptions(self, options, mochitest): """ verify correct options and cleanup paths """ mozinfo.update({"e10s": options.e10s}) # for test manifest parsing. if options.app is None: if build_obj is not None: options.app = build_obj.get_binary_path() else: self.error( "could not find the application path, --appname must be specified" ) if options.totalChunks is not None and options.thisChunk is None: self.error( "thisChunk must be specified when totalChunks is specified") if options.totalChunks: if not 1 <= options.thisChunk <= options.totalChunks: self.error("thisChunk must be between 1 and totalChunks") if options.xrePath is None: # default xrePath to the app path if not provided # but only if an app path was explicitly provided if options.app != self.defaults['app']: options.xrePath = os.path.dirname(options.app) elif build_obj is not None: # otherwise default to dist/bin options.xrePath = build_obj.bindir else: self.error( "could not find xre directory, --xre-path must be specified" ) # allow relative paths options.xrePath = mochitest.getFullPath(options.xrePath) if options.profilePath: options.profilePath = mochitest.getFullPath(options.profilePath) options.app = mochitest.getFullPath(options.app) if options.dmdPath is not None: options.dmdPath = mochitest.getFullPath(options.dmdPath) if not os.path.exists(options.app): msg = """\ Error: Path %(app)s doesn't exist. Are you executing $objdir/_tests/testing/mochitest/runtests.py?""" self.error(msg % {"app": options.app}) return None if options.utilityPath: options.utilityPath = mochitest.getFullPath(options.utilityPath) if options.certPath: options.certPath = mochitest.getFullPath(options.certPath) if options.symbolsPath and not isURL(options.symbolsPath): options.symbolsPath = mochitest.getFullPath(options.symbolsPath) # Set server information on the options object options.webServer = '127.0.0.1' options.httpPort = DEFAULT_PORTS['http'] options.sslPort = DEFAULT_PORTS['https'] # options.webSocketPort = DEFAULT_PORTS['ws'] options.webSocketPort = str( 9988 ) # <- http://hg.mozilla.org/mozilla-central/file/b871dfb2186f/build/automation.py.in#l30 # The default websocket port is incorrect in mozprofile; it is # set to the SSL proxy setting. See: # see https://bugzilla.mozilla.org/show_bug.cgi?id=916517 if options.vmwareRecording: if not mozinfo.isWin: self.error( "use-vmware-recording is only supported on Windows.") mochitest.vmwareHelperPath = os.path.join( options.utilityPath, VMWARE_RECORDING_HELPER_BASENAME + ".dll") if not os.path.exists(mochitest.vmwareHelperPath): self.error("%s not found, cannot automate VMware recording." % mochitest.vmwareHelperPath) if options.testManifest and options.runOnlyTests: self.error( "Please use --test-manifest only and not --run-only-tests") if options.runOnlyTests: if not os.path.exists( os.path.abspath(os.path.join(here, options.runOnlyTests))): self.error("unable to find --run-only-tests file '%s'" % options.runOnlyTests) options.runOnly = True options.testManifest = options.runOnlyTests options.runOnlyTests = None if options.manifestFile and options.testManifest: self.error( "Unable to support both --manifest and --test-manifest/--run-only-tests at the same time" ) if options.webapprtContent and options.webapprtChrome: self.error( "Only one of --webapprt-content and --webapprt-chrome may be given." ) if options.jsdebugger: options.extraPrefs += [ "devtools.debugger.remote-enabled=true", "devtools.debugger.chrome-enabled=true", "devtools.chrome.enabled=true", "devtools.debugger.prompt-connection=false" ] options.autorun = False if options.debugOnFailure and not options.jsdebugger: self.error( "--debug-on-failure should be used together with --jsdebugger." ) # Try to guess the testing modules directory. # This somewhat grotesque hack allows the buildbot machines to find the # modules directory without having to configure the buildbot hosts. This # code should never be executed in local runs because the build system # should always set the flag that populates this variable. If buildbot ever # passes this argument, this code can be deleted. if options.testingModulesDir is None: possible = os.path.join(here, os.path.pardir, 'modules') if os.path.isdir(possible): options.testingModulesDir = possible # Even if buildbot is updated, we still want this, as the path we pass in # to the app must be absolute and have proper slashes. if options.testingModulesDir is not None: options.testingModulesDir = os.path.normpath( options.testingModulesDir) if not os.path.isabs(options.testingModulesDir): options.testingModulesDir = os.path.abspath( options.testingModulesDir) if not os.path.isdir(options.testingModulesDir): self.error('--testing-modules-dir not a directory: %s' % options.testingModulesDir) options.testingModulesDir = options.testingModulesDir.replace( '\\', '/') if options.testingModulesDir[-1] != '/': options.testingModulesDir += '/' if options.immersiveMode: if not mozinfo.isWin: self.error("immersive is only supported on Windows 8 and up.") mochitest.immersiveHelperPath = os.path.join( options.utilityPath, "metrotestharness.exe") if not os.path.exists(mochitest.immersiveHelperPath): self.error("%s not found, cannot launch immersive tests." % mochitest.immersiveHelperPath) if options.runUntilFailure: if not options.repeat: options.repeat = 29 if options.dumpOutputDirectory is None: options.dumpOutputDirectory = tempfile.gettempdir() if options.dumpAboutMemoryAfterTest or options.dumpDMDAfterTest: if not os.path.isdir(options.dumpOutputDirectory): self.error('--dump-output-directory not a directory: %s' % options.dumpOutputDirectory) if options.useTestMediaDevices: if not mozinfo.isLinux: self.error( '--use-test-media-devices is only supported on Linux currently' ) for f in ['/usr/bin/gst-launch-0.10', '/usr/bin/pactl']: if not os.path.isfile(f): self.error( 'Missing binary %s required for --use-test-media-devices' ) return options
def verifyOptions(self, options, mochitest): """ verify correct options and cleanup paths """ if options.app is None: if build_obj is not None: options.app = build_obj.get_binary_path() else: self.error("could not find the application path, --appname must be specified") if options.totalChunks is not None and options.thisChunk is None: self.error("thisChunk must be specified when totalChunks is specified") if options.totalChunks: if not 1 <= options.thisChunk <= options.totalChunks: self.error("thisChunk must be between 1 and totalChunks") if options.xrePath is None: # default xrePath to the app path if not provided # but only if an app path was explicitly provided if options.app != self.defaults['app']: options.xrePath = os.path.dirname(options.app) elif build_obj is not None: # otherwise default to dist/bin options.xrePath = build_obj.bindir else: self.error("could not find xre directory, --xre-path must be specified") # allow relative paths options.xrePath = mochitest.getFullPath(options.xrePath) options.profilePath = mochitest.getFullPath(options.profilePath) options.app = mochitest.getFullPath(options.app) if not os.path.exists(options.app): msg = """\ Error: Path %(app)s doesn't exist. Are you executing $objdir/_tests/testing/mochitest/runtests.py?""" self.error(msg % {"app": options.app}) return None if options.utilityPath: options.utilityPath = mochitest.getFullPath(options.utilityPath) if options.certPath: options.certPath = mochitest.getFullPath(options.certPath) if options.symbolsPath and not isURL(options.symbolsPath): options.symbolsPath = mochitest.getFullPath(options.symbolsPath) options.webServer = self._automation.DEFAULT_WEB_SERVER options.httpPort = self._automation.DEFAULT_HTTP_PORT options.sslPort = self._automation.DEFAULT_SSL_PORT options.webSocketPort = self._automation.DEFAULT_WEBSOCKET_PORT if options.vmwareRecording: if not self._automation.IS_WIN32: self.error("use-vmware-recording is only supported on Windows.") mochitest.vmwareHelperPath = os.path.join( options.utilityPath, VMWARE_RECORDING_HELPER_BASENAME + ".dll") if not os.path.exists(mochitest.vmwareHelperPath): self.error("%s not found, cannot automate VMware recording." % mochitest.vmwareHelperPath) if options.testManifest and options.runOnlyTests: self.error("Please use --test-manifest only and not --run-only-tests") if options.runOnlyTests: if not os.path.exists(os.path.abspath(options.runOnlyTests)): self.error("unable to find --run-only-tests file '%s'" % options.runOnlyTests) options.runOnly = True options.testManifest = options.runOnlyTests options.runOnlyTests = None if options.manifestFile and options.testManifest: self.error("Unable to support both --manifest and --test-manifest/--run-only-tests at the same time") if options.webapprtContent and options.webapprtChrome: self.error("Only one of --webapprt-content and --webapprt-chrome may be given.") # Try to guess the testing modules directory. # This somewhat grotesque hack allows the buildbot machines to find the # modules directory without having to configure the buildbot hosts. This # code should never be executed in local runs because the build system # should always set the flag that populates this variable. If buildbot ever # passes this argument, this code can be deleted. if options.testingModulesDir is None: possible = os.path.join(os.getcwd(), os.path.pardir, 'modules') if os.path.isdir(possible): options.testingModulesDir = possible # Even if buildbot is updated, we still want this, as the path we pass in # to the app must be absolute and have proper slashes. if options.testingModulesDir is not None: options.testingModulesDir = os.path.normpath(options.testingModulesDir) if not os.path.isabs(options.testingModulesDir): options.testingModulesDir = os.path.abspath(options.testingModulesDir) if not os.path.isdir(options.testingModulesDir): self.error('--testing-modules-dir not a directory: %s' % options.testingModulesDir) options.testingModulesDir = options.testingModulesDir.replace('\\', '/') if options.testingModulesDir[-1] != '/': options.testingModulesDir += '/' if options.immersiveMode: if not self._automation.IS_WIN32: self.error("immersive is only supported on Windows 8 and up.") mochitest.immersiveHelperPath = os.path.join( options.utilityPath, "metrotestharness.exe") if not os.path.exists(mochitest.immersiveHelperPath): self.error("%s not found, cannot launch immersive tests." % mochitest.immersiveHelperPath) if options.runUntilFailure: if not os.path.isfile(os.path.join(mochitest.oldcwd, os.path.dirname(__file__), mochitest.getTestRoot(options), options.testPath)): self.error("--run-until-failure can only be used together with --test-path specifying a single test.") if not options.repeat: options.repeat = 29 return options
def verifyOptions(self, options, mochitest): """ verify correct options and cleanup paths """ if options.app is None: if build_obj is not None: options.app = build_obj.get_binary_path() else: self.error("could not find the application path, --appname must be specified") if options.totalChunks is not None and options.thisChunk is None: self.error("thisChunk must be specified when totalChunks is specified") if options.totalChunks: if not 1 <= options.thisChunk <= options.totalChunks: self.error("thisChunk must be between 1 and totalChunks") if options.xrePath is None: # default xrePath to the app path if not provided # but only if an app path was explicitly provided if options.app != self.defaults['app']: options.xrePath = os.path.dirname(options.app) elif build_obj is not None: # otherwise default to dist/bin options.xrePath = build_obj.bindir else: self.error("could not find xre directory, --xre-path must be specified") # allow relative paths options.xrePath = mochitest.getFullPath(options.xrePath) options.profilePath = mochitest.getFullPath(options.profilePath) options.app = mochitest.getFullPath(options.app) if not os.path.exists(options.app): msg = """\ Error: Path %(app)s doesn't exist. Are you executing $objdir/_tests/testing/mochitest/runtests.py?""" self.error(msg % {"app": options.app}) return None if options.utilityPath: options.utilityPath = mochitest.getFullPath(options.utilityPath) if options.certPath: options.certPath = mochitest.getFullPath(options.certPath) if options.symbolsPath and not isURL(options.symbolsPath): options.symbolsPath = mochitest.getFullPath(options.symbolsPath) options.webServer = self._automation.DEFAULT_WEB_SERVER options.httpPort = self._automation.DEFAULT_HTTP_PORT options.sslPort = self._automation.DEFAULT_SSL_PORT options.webSocketPort = self._automation.DEFAULT_WEBSOCKET_PORT if options.vmwareRecording: if not self._automation.IS_WIN32: self.error("use-vmware-recording is only supported on Windows.") mochitest.vmwareHelperPath = os.path.join( options.utilityPath, VMWARE_RECORDING_HELPER_BASENAME + ".dll") if not os.path.exists(mochitest.vmwareHelperPath): self.error("%s not found, cannot automate VMware recording." % mochitest.vmwareHelperPath) if options.testManifest and options.runOnlyTests: self.error("Please use --test-manifest only and not --run-only-tests") if options.runOnlyTests: if not os.path.exists(os.path.abspath(options.runOnlyTests)): self.error("unable to find --run-only-tests file '%s'" % options.runOnlyTests) options.runOnly = True options.testManifest = options.runOnlyTests options.runOnlyTests = None if options.manifestFile and options.testManifest: self.error("Unable to support both --manifest and --test-manifest/--run-only-tests at the same time") if options.webapprtContent and options.webapprtChrome: self.error("Only one of --webapprt-content and --webapprt-chrome may be given.") # Try to guess the testing modules directory. # This somewhat grotesque hack allows the buildbot machines to find the # modules directory without having to configure the buildbot hosts. This # code should never be executed in local runs because the build system # should always set the flag that populates this variable. If buildbot ever # passes this argument, this code can be deleted. if options.testingModulesDir is None: possible = os.path.join(os.getcwd(), os.path.pardir, 'modules') if os.path.isdir(possible): options.testingModulesDir = possible # Even if buildbot is updated, we still want this, as the path we pass in # to the app must be absolute and have proper slashes. if options.testingModulesDir is not None: options.testingModulesDir = os.path.normpath(options.testingModulesDir) if not os.path.isabs(options.testingModulesDir): options.testingModulesDir = os.path.abspath(options.testingModulesDir) if not os.path.isdir(options.testingModulesDir): self.error('--testing-modules-dir not a directory: %s' % options.testingModulesDir) options.testingModulesDir = options.testingModulesDir.replace('\\', '/') if options.testingModulesDir[-1] != '/': options.testingModulesDir += '/' if options.immersiveMode: if not self._automation.IS_WIN32: self.error("immersive is only supported on Windows 8 and up.") mochitest.immersiveHelperPath = os.path.join( options.utilityPath, "metrotestharness.exe") if not os.path.exists(mochitest.immersiveHelperPath): self.error("%s not found, cannot launch immersive tests." % mochitest.immersiveHelperPath) if options.runUntilFailure: if not os.path.isfile(os.path.join(mochitest.oldcwd, os.path.dirname(__file__), mochitest.getTestRoot(options), options.testPath)): self.error("--run-until-failure can only be used together with --test-path specifying a single test.") if not options.repeat: options.repeat = 29 if not options.mozInfo: if build_obj: options.mozInfo = os.path.join(build_obj.topobjdir, 'mozinfo.json') else: options.mozInfo = os.path.abspath('mozinfo.json') if not os.path.isfile(options.mozInfo): self.error("Unable to file build information file (mozinfo.json) at this location: %s" % options.mozInfo) return options