def load_wpt_tests(xul_tester, requested_paths, excluded_paths): """Return a list of `RefTestCase` objects for the jsshell testharness.js tests filtered by the given paths and debug-ness.""" repo_root = abspath(os.path.join(here, "..", "..", "..")) wp = os.path.join(repo_root, "testing", "web-platform") wpt = os.path.join(wp, "tests") sys_paths = [ "python/mozterm", "python/mozboot", "testing/mozbase/mozcrash", "testing/mozbase/mozdevice", "testing/mozbase/mozfile", "testing/mozbase/mozinfo", "testing/mozbase/mozleak", "testing/mozbase/mozlog", "testing/mozbase/mozprocess", "testing/mozbase/mozprofile", "testing/mozbase/mozrunner", "testing/web-platform/", "testing/web-platform/tests/tools", "testing/web-platform/tests/tools/third_party/html5lib", "testing/web-platform/tests/tools/third_party/webencodings", "testing/web-platform/tests/tools/wptrunner", "testing/web-platform/tests/tools/wptserve", "third_party/python/requests", ] abs_sys_paths = [os.path.join(repo_root, path) for path in sys_paths] failed = False for path in abs_sys_paths: if not os.path.isdir(path): failed = True print("Could not add '%s' to the path") if failed: return [] sys.path[0:0] = abs_sys_paths import manifestupdate from wptrunner import products, testloader, wptcommandline, wpttest, wptlogging manifest_root = tempfile.gettempdir() path_split = os.path.dirname(xul_tester.js_bin).split(os.path.sep) if path_split[-2:] == ["dist", "bin"]: maybe_root = os.path.join(*path_split[:-2]) if os.path.exists(os.path.join(maybe_root, "_tests")): # Assume this is a gecko objdir. manifest_root = maybe_root logger = wptlogging.setup({}, {}) manifestupdate.run(repo_root, manifest_root, logger) kwargs = vars(wptcommandline.create_parser().parse_args([])) kwargs.update({ "config": os.path.join(manifest_root, "_tests", "web-platform", "wptrunner.local.ini"), "gecko_e10s": False, "verify": False, "wasm": xul_tester.test("wasmIsSupported()"), }) wptcommandline.set_from_config(kwargs) test_paths = kwargs["test_paths"] def filter_jsshell_tests(it): for test in it: if test[1].get("jsshell"): yield test test_manifests = testloader.ManifestLoader(test_paths, types=["testharness"], meta_filters=[filter_jsshell_tests]).load() run_info_extras = products.load_product(kwargs["config"], "firefox")[-1](**kwargs) run_info = wpttest.get_run_info(kwargs["test_paths"]["/"]["metadata_path"], "firefox", debug=xul_tester.test("isDebugBuild"), extras=run_info_extras) path_filter = testloader.TestFilter(test_manifests, include=requested_paths, exclude=excluded_paths) loader = testloader.TestLoader(test_manifests, ["testharness"], run_info, manifest_filters=[path_filter]) extra_helper_paths = [ os.path.join(here, "web-platform-test-shims.js"), os.path.join(wpt, "resources", "testharness.js"), os.path.join(here, "testharnessreport.js"), ] def resolve(test_path, script): if script.startswith("/"): return os.path.join(wpt, script[1:]) return os.path.join(wpt, os.path.dirname(test_path), script) return [ RefTestCase( wpt, test_path, extra_helper_paths=extra_helper_paths + [resolve(test_path, s) for s in test.scripts], wpt=test ) for test_path, test in ( (os.path.relpath(test.path, wpt), test) for test in loader.tests["testharness"] ) ]
def load_wpt_tests(requested_paths, excluded_paths, debug, wasm): """Return a list of `RefTestCase` objects for the jsshell testharness.js tests filtered by the given paths and debug-ness.""" repo_root = abspath(os.path.join(here, "..", "..", "..")) wp = os.path.join(repo_root, "testing", "web-platform") wpt = os.path.join(wp, "tests") sys_paths = [ "python/mozterm", "testing/mozbase/mozcrash", "testing/mozbase/mozdevice", "testing/mozbase/mozfile", "testing/mozbase/mozinfo", "testing/mozbase/mozleak", "testing/mozbase/mozlog", "testing/mozbase/mozprocess", "testing/mozbase/mozprofile", "testing/mozbase/mozrunner", "testing/web-platform/tests/tools", "testing/web-platform/tests/tools/third_party/html5lib", "testing/web-platform/tests/tools/third_party/webencodings", "testing/web-platform/tests/tools/wptrunner", "testing/web-platform/tests/tools/wptserve", ] abs_sys_paths = [os.path.join(repo_root, path) for path in sys_paths] failed = False for path in abs_sys_paths: if not os.path.isdir(path): failed = True print("Could not add '%s' to the path") if failed: return [] sys.path[0:0] = abs_sys_paths from wptrunner import products, testloader, wptcommandline, wpttest, wptlogging wptlogging.setup({}, {}) kwargs = { "config": None, "tests_root": wpt, "metadata_root": os.path.join(wp, "meta"), "gecko_e10s": False, "verify": False, "wasm": wasm, } wptcommandline.set_from_config(kwargs) test_paths = kwargs["test_paths"] def filter_jsshell_tests(it): for test in it: if test[1].get("jsshell"): yield test test_manifests = testloader.ManifestLoader(test_paths, types=["testharness"], meta_filters=[ filter_jsshell_tests ]).load() run_info_extras = products.load_product(kwargs["config"], "firefox")[-1](**kwargs) run_info = wpttest.get_run_info(kwargs["metadata_root"], "firefox", debug=debug, extras=run_info_extras) path_filter = testloader.TestFilter(test_manifests, include=requested_paths, exclude=excluded_paths) loader = testloader.TestLoader(test_manifests, ["testharness"], run_info, manifest_filters=[path_filter]) extra_helper_paths = [ os.path.join(wpt, "resources", "testharness.js"), os.path.join(here, "testharnessreport.js"), ] def resolve(test_path, script): if script.startswith("/"): return os.path.join(wpt, script[1:]) return os.path.join(wpt, os.path.dirname(test_path), script) return [ RefTestCase(wpt, test_path, extra_helper_paths=extra_helper_paths + [resolve(test_path, s) for s in test.scripts], wpt=test) for test_path, test in ((os.path.relpath(test.path, wpt), test) for test in loader.tests["testharness"]) ]