diff options
Diffstat (limited to 'testing/marionette/mach_test_package_commands.py')
-rw-r--r-- | testing/marionette/mach_test_package_commands.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/testing/marionette/mach_test_package_commands.py b/testing/marionette/mach_test_package_commands.py new file mode 100644 index 000000000..66d99d2a4 --- /dev/null +++ b/testing/marionette/mach_test_package_commands.py @@ -0,0 +1,67 @@ +# 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 +import os +import sys +from functools import partial + +from mach.decorators import ( + CommandProvider, + Command, +) + +parser = None + + +def run_marionette(context, **kwargs): + from marionette.runtests import ( + MarionetteTestRunner, + MarionetteHarness + ) + from mozlog.structured import commandline + + + args = argparse.Namespace(**kwargs) + args.binary = args.binary or context.firefox_bin + args.e10s = context.mozharness_config.get('e10s', args.e10s) + + test_root = os.path.join(context.package_root, 'marionette', 'tests') + if not args.tests: + args.tests = [os.path.join(test_root, 'testing', 'marionette', 'harness', + 'marionette_harness', 'tests', 'unit-tests.ini')] + + normalize = partial(context.normalize_test_path, test_root) + args.tests = map(normalize, args.tests) + + commandline.add_logging_group(parser) + parser.verify_usage(args) + + args.logger = commandline.setup_logging("Marionette Unit Tests", + args, + {"mach": sys.stdout}) + status = MarionetteHarness(MarionetteTestRunner, args=vars(args)).run() + return 1 if status else 0 + + +def setup_marionette_argument_parser(): + from marionette.runner.base import BaseMarionetteArguments + global parser + parser = BaseMarionetteArguments() + return parser + + +@CommandProvider +class MachCommands(object): + + def __init__(self, context): + self.context = context + + @Command( + 'marionette-test', category='testing', + description='Run a Marionette test (Check UI or the internal JavaScript ' + 'using marionette).', + parser=setup_marionette_argument_parser) + def run_marionette_test(self, **kwargs): + return run_marionette(self.context, **kwargs) |