aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wpt/run.py
blob: 0ee62500f73777ab6ee10b8eab7e06bea3c549f0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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 multiprocessing
import os
import sys
import mozlog
import grouping_formatter

here = os.path.split(__file__)[0]
servo_root = os.path.abspath(os.path.join(here, "..", ".."))


def wpt_path(*args):
    return os.path.join(here, *args)


def servo_path(*args):
    return os.path.join(servo_root, *args)

# Imports
sys.path.append(wpt_path("harness"))
from wptrunner import wptrunner, wptcommandline


def run_tests(paths=None, **kwargs):
    if paths is None:
        paths = {}
    set_defaults(paths, kwargs)

    mozlog.commandline.log_formatters["servo"] = \
        (grouping_formatter.GroupingFormatter, "A grouping output formatter")
    wptrunner.setup_logging(kwargs, {"servo": sys.stdout})

    success = wptrunner.run_tests(**kwargs)
    return 0 if success else 1


def set_defaults(paths, kwargs):
    if kwargs["product"] is None:
        kwargs["product"] = "servo"

    if kwargs["config"] is None and "config" in paths:
        kwargs["config"] = paths["config"]

    if kwargs["include_manifest"] is None and "include_manifest" in paths:
        kwargs["include_manifest"] = paths["include_manifest"]

    if kwargs["binary"] is None:
        bin_dir = "release" if kwargs["release"] else "debug"
        bin_path = servo_path("target", bin_dir, "servo")

        kwargs["binary"] = bin_path

    if kwargs["processes"] is None:
        kwargs["processes"] = multiprocessing.cpu_count()

    kwargs["user_stylesheets"].append(servo_path("resources", "ahem.css"))

    wptcommandline.check_args(kwargs)


def main(paths=None):
    parser = wptcommandline.create_parser()
    kwargs = vars(parser.parse_args())
    return run_tests(paths, **kwargs)