summaryrefslogtreecommitdiffstats
path: root/testing/xpcshell/xpcshellcommandline.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/xpcshell/xpcshellcommandline.py')
-rw-r--r--testing/xpcshell/xpcshellcommandline.py420
1 files changed, 420 insertions, 0 deletions
diff --git a/testing/xpcshell/xpcshellcommandline.py b/testing/xpcshell/xpcshellcommandline.py
new file mode 100644
index 0000000000..ba8bdf3eab
--- /dev/null
+++ b/testing/xpcshell/xpcshellcommandline.py
@@ -0,0 +1,420 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import argparse
+
+from mozlog import commandline
+
+
+def add_common_arguments(parser):
+ parser.add_argument(
+ "--app-binary",
+ type=str,
+ dest="app_binary",
+ default=None,
+ help="path to application binary (eg: c:\\program files\\mozilla firefox\\firefox.exe)",
+ )
+ parser.add_argument(
+ "--app-path",
+ type=str,
+ dest="appPath",
+ default=None,
+ help="application directory (as opposed to XRE directory)",
+ )
+ parser.add_argument(
+ "--interactive",
+ action="store_true",
+ dest="interactive",
+ default=False,
+ help="don't automatically run tests, drop to an xpcshell prompt",
+ )
+ parser.add_argument(
+ "--verbose",
+ action="store_true",
+ dest="verbose",
+ default=False,
+ help="always print stdout and stderr from tests",
+ )
+ parser.add_argument(
+ "--verbose-if-fails",
+ action="store_true",
+ dest="verboseIfFails",
+ default=False,
+ help="Output the log if a test fails, even when run in parallel",
+ )
+ parser.add_argument(
+ "--keep-going",
+ action="store_true",
+ dest="keepGoing",
+ default=False,
+ help="continue running tests after test killed with control-C (SIGINT)",
+ )
+ parser.add_argument(
+ "--logfiles",
+ action="store_true",
+ dest="logfiles",
+ default=True,
+ help="create log files (default, only used to override --no-logfiles)",
+ )
+ parser.add_argument(
+ "--dump-tests",
+ type=str,
+ dest="dump_tests",
+ default=None,
+ help="Specify path to a filename to dump all the tests that will be run",
+ )
+ parser.add_argument(
+ "--manifest",
+ type=str,
+ dest="manifest",
+ default=None,
+ help="Manifest of test directories to use",
+ )
+ parser.add_argument(
+ "--no-logfiles",
+ action="store_false",
+ dest="logfiles",
+ help="don't create log files",
+ )
+ parser.add_argument(
+ "--sequential",
+ action="store_true",
+ dest="sequential",
+ default=False,
+ help="Run all tests sequentially",
+ )
+ parser.add_argument(
+ "--temp-dir",
+ dest="tempDir",
+ default=None,
+ help="Directory to use for temporary files",
+ )
+ parser.add_argument(
+ "--testing-modules-dir",
+ dest="testingModulesDir",
+ default=None,
+ help="Directory where testing modules are located.",
+ )
+ parser.add_argument(
+ "--total-chunks",
+ type=int,
+ dest="totalChunks",
+ default=1,
+ help="how many chunks to split the tests up into",
+ )
+ parser.add_argument(
+ "--this-chunk",
+ type=int,
+ dest="thisChunk",
+ default=1,
+ help="which chunk to run between 1 and --total-chunks",
+ )
+ parser.add_argument(
+ "--profile-name",
+ type=str,
+ dest="profileName",
+ default=None,
+ help="name of application profile being tested",
+ )
+ parser.add_argument(
+ "--build-info-json",
+ type=str,
+ dest="mozInfo",
+ default=None,
+ help="path to a mozinfo.json including information about the build "
+ "configuration. defaults to looking for mozinfo.json next to "
+ "the script.",
+ )
+ parser.add_argument(
+ "--shuffle",
+ action="store_true",
+ dest="shuffle",
+ default=False,
+ help="Execute tests in random order",
+ )
+ parser.add_argument(
+ "--xre-path",
+ action="store",
+ type=str,
+ dest="xrePath",
+ # individual scripts will set a sane default
+ default=None,
+ help="absolute path to directory containing XRE (probably xulrunner)",
+ )
+ parser.add_argument(
+ "--symbols-path",
+ action="store",
+ type=str,
+ dest="symbolsPath",
+ default=None,
+ help="absolute path to directory containing breakpad symbols, "
+ "or the URL of a zip file containing symbols",
+ )
+ parser.add_argument(
+ "--jscov-dir-prefix",
+ action="store",
+ type=str,
+ dest="jscovdir",
+ default=argparse.SUPPRESS,
+ help="Directory to store per-test javascript line coverage data as json.",
+ )
+ parser.add_argument(
+ "--debugger",
+ action="store",
+ dest="debugger",
+ help="use the given debugger to launch the application",
+ )
+ parser.add_argument(
+ "--debugger-args",
+ action="store",
+ dest="debuggerArgs",
+ help="pass the given args to the debugger _before_ "
+ "the application on the command line",
+ )
+ parser.add_argument(
+ "--debugger-interactive",
+ action="store_true",
+ dest="debuggerInteractive",
+ help="prevents the test harness from redirecting "
+ "stdout and stderr for interactive debuggers",
+ )
+ parser.add_argument(
+ "--jsdebugger",
+ dest="jsDebugger",
+ action="store_true",
+ help="Waits for a devtools JS debugger to connect before " "starting the test.",
+ )
+ parser.add_argument(
+ "--jsdebugger-port",
+ type=int,
+ dest="jsDebuggerPort",
+ default=6000,
+ help="The port to listen on for a debugger connection if "
+ "--jsdebugger is specified.",
+ )
+ parser.add_argument(
+ "--tag",
+ action="append",
+ dest="test_tags",
+ default=None,
+ help="filter out tests that don't have the given tag. Can be "
+ "used multiple times in which case the test must contain "
+ "at least one of the given tags.",
+ )
+ parser.add_argument(
+ "--utility-path",
+ action="store",
+ dest="utility_path",
+ default=None,
+ help="Path to a directory containing utility programs, such "
+ "as stack fixer scripts.",
+ )
+ parser.add_argument(
+ "--xpcshell",
+ action="store",
+ dest="xpcshell",
+ default=None,
+ help="Path to xpcshell binary",
+ )
+ parser.add_argument(
+ "--http3server",
+ action="store",
+ dest="http3server",
+ default=None,
+ help="Path to http3server binary",
+ )
+ # This argument can be just present, or the path to a manifest file. The
+ # just-present case is usually used for mach which can provide a default
+ # path to the failure file from the previous run
+ parser.add_argument(
+ "--rerun-failures",
+ action="store_true",
+ help="Rerun failures from the previous run, if any",
+ )
+ parser.add_argument(
+ "--failure-manifest",
+ action="store",
+ help="Path to a manifest file from which to rerun failures "
+ "(with --rerun-failure) or in which to record failed tests",
+ )
+ parser.add_argument(
+ "--threads",
+ type=int,
+ dest="threadCount",
+ default=0,
+ help="override the number of jobs (threads) when running tests "
+ "in parallel, the default is CPU x 1.5 when running via mach "
+ "and CPU x 4 when running in automation",
+ )
+ parser.add_argument(
+ "--setpref",
+ action="append",
+ dest="extraPrefs",
+ metavar="PREF=VALUE",
+ help="Defines an extra user preference (can be passed multiple times.",
+ )
+ parser.add_argument(
+ "testPaths", nargs="*", default=None, help="Paths of tests to run."
+ )
+ parser.add_argument(
+ "--verify",
+ action="store_true",
+ default=False,
+ help="Run tests in verification mode: Run many times in different "
+ "ways, to see if there are intermittent failures.",
+ )
+ parser.add_argument(
+ "--verify-max-time",
+ dest="verifyMaxTime",
+ type=int,
+ default=3600,
+ help="Maximum time, in seconds, to run in --verify mode.",
+ )
+ parser.add_argument(
+ "--headless",
+ action="store_true",
+ default=False,
+ dest="headless",
+ help="Enable headless mode by default for tests which don't specify "
+ "whether to use headless mode",
+ )
+ parser.add_argument(
+ "--conditioned-profile",
+ action="store_true",
+ default=False,
+ dest="conditionedProfile",
+ help="Run with conditioned profile instead of fresh blank profile",
+ )
+ parser.add_argument(
+ "--self-test",
+ action="store_true",
+ default=False,
+ dest="self_test",
+ help="Run self tests",
+ )
+ parser.add_argument(
+ "--run-failures",
+ action="store",
+ default="",
+ dest="runFailures",
+ help="Run failures matching keyword",
+ )
+ parser.add_argument(
+ "--timeout-as-pass",
+ action="store_true",
+ default=False,
+ dest="timeoutAsPass",
+ help="Harness level timeouts will be treated as passing",
+ )
+ parser.add_argument(
+ "--crash-as-pass",
+ action="store_true",
+ default=False,
+ dest="crashAsPass",
+ help="Harness level crashes will be treated as passing",
+ )
+ parser.add_argument(
+ "--disable-fission",
+ action="store_true",
+ default=False,
+ dest="disableFission",
+ help="disable fission mode (back to e10s || 1proc)",
+ )
+ parser.add_argument(
+ "--repeat",
+ action="store",
+ default=0,
+ type=int,
+ dest="repeat",
+ help="repeat the test X times, default [0]",
+ )
+
+
+def add_remote_arguments(parser):
+ parser.add_argument(
+ "--objdir",
+ action="store",
+ type=str,
+ dest="objdir",
+ help="Local objdir, containing xpcshell binaries.",
+ )
+
+ parser.add_argument(
+ "--apk",
+ action="store",
+ type=str,
+ dest="localAPK",
+ help="Local path to Firefox for Android APK.",
+ )
+
+ parser.add_argument(
+ "--deviceSerial",
+ action="store",
+ type=str,
+ dest="deviceSerial",
+ help="adb serial number of remote device. This is required "
+ "when more than one device is connected to the host. "
+ "Use 'adb devices' to see connected devices.",
+ )
+
+ parser.add_argument(
+ "--adbPath",
+ action="store",
+ type=str,
+ dest="adbPath",
+ default=None,
+ help="Path to adb binary.",
+ )
+
+ parser.add_argument(
+ "--noSetup",
+ action="store_false",
+ dest="setup",
+ default=True,
+ help="Do not copy any files to device (to be used only if "
+ "device is already setup).",
+ )
+ parser.add_argument(
+ "--no-install",
+ action="store_false",
+ dest="setup",
+ default=True,
+ help="Don't install the app or any files to the device (to be used if "
+ "the device is already set up)",
+ )
+
+ parser.add_argument(
+ "--local-bin-dir",
+ action="store",
+ type=str,
+ dest="localBin",
+ help="Local path to bin directory.",
+ )
+
+ parser.add_argument(
+ "--remoteTestRoot",
+ action="store",
+ type=str,
+ dest="remoteTestRoot",
+ help="Remote directory to use as test root " "(eg. /data/local/tmp/test_root).",
+ )
+
+
+def parser_desktop():
+ parser = argparse.ArgumentParser()
+ add_common_arguments(parser)
+ commandline.add_logging_group(parser)
+
+ return parser
+
+
+def parser_remote():
+ parser = argparse.ArgumentParser()
+ common = parser.add_argument_group("Common Options")
+ add_common_arguments(common)
+ remote = parser.add_argument_group("Remote Options")
+ add_remote_arguments(remote)
+ commandline.add_logging_group(parser)
+
+ return parser