testing/web-platform/mach_commands_base.py
author Maja Frydrychowicz <mjzffr@gmail.com>
Fri, 15 Jun 2018 16:30:58 +0000
changeset 479391 266c6cfb96a76daaa7bd2e3574f7d1d8ae60c4a6
parent 427391 91cfa54b94d2d10a48a469696a914e7e02406725
child 497351 ace8fc8c112ec192ae853157875f1be6ea43a755
permissions -rw-r--r--
Bug 1323620 - Add "fennec" product to wptrunner. r=jgraham This allows running web-platform-tests on Fennec given a running emulator. (Which is how we expect the tests to run in automation as well -- the android_emulator_unittest mozharness script takes care of emulator start-up.) It also hooks up ./mach wpt. wptrunner sets up a profile for Fennec, forwards the marionette port and starts up Fennec, etc. = Usage = Set your mozconfig to build fennec. Start an emulator: `./mach android-emulator --version x86` Install fennec: `./mach build && ./mach package && ./mach install` Run the tests: ``` ./mach wpt --product=fennec --testtype=testharness --certutil-binary path/to/host/os/certutil path/to/some/tests ``` Differential Revision: https://phabricator.services.mozilla.com/D1587

# 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 sys


def create_parser_wpt():
    from wptrunner import wptcommandline
    return wptcommandline.create_parser(["fennec", "firefox", "chrome", "edge", "servo"])


class WebPlatformTestsRunner(object):
    """Run web platform tests."""

    def __init__(self, setup):
        self.setup = setup

    def run(self, **kwargs):
        from wptrunner import wptrunner
        if kwargs["product"] in ["firefox", None]:
            kwargs = self.setup.kwargs_firefox(kwargs)
        elif kwargs["product"] == "fennec":
            from wptrunner import wptcommandline
            kwargs = wptcommandline.check_args(self.setup.kwargs_common(kwargs))
        elif kwargs["product"] in ("chrome", "edge", "servo"):
            kwargs = self.setup.kwargs_wptrun(kwargs)
        else:
            raise ValueError("Unknown product %s" % kwargs["product"])
        logger = wptrunner.setup_logging(kwargs, {self.setup.default_log_type: sys.stdout})
        result = wptrunner.start(**kwargs)
        return int(not result)