def update(logger, wpt_dir, check_clean=True): localpaths = imp.load_source("localpaths", os.path.join(wpt_dir, "tests", "tools", "localpaths.py")) kwargs = {"config": os.path.join(wpt_dir, "wptrunner.ini"), "tests_root": None, "metadata_root": None} set_from_config(kwargs) config = kwargs["config"] test_paths = get_test_paths(config) if check_clean: old_manifests = {} for data in test_paths.itervalues(): path = os.path.join(data["metadata_path"], "MANIFEST.json") with open(path) as f: old_manifests[path] = f.readlines() try: ManifestLoader(test_paths, force_manifest_update=True).load() rv = 0 if check_clean: clean = diff_manifests(logger, old_manifests) if not clean: rv = 1 finally: if check_clean: for path, data in old_manifests.iteritems(): logger.info("Restoring manifest %s" % path) with open(path, "w") as f: f.writelines(data) return rv
def run_update(self, **kwargs): from wptrunner import update if kwargs["config"] is None: kwargs["config"] = os.path.join(self.topsrcdir, 'testing', 'web-platform', 'wptrunner.ini') wptcommandline.set_from_config(kwargs) update.run_update(**kwargs)
def check_args(kwargs): from wptrunner import wptcommandline wptcommandline.set_from_config(kwargs) if kwargs["upstream"]: if kwargs["rev"]: raise ValueError("Setting --rev with --upstream isn't supported") if kwargs["token"] is None: if kwargs["token_file"] is None: raise ValueError("Must supply either a token file or a token") with open(kwargs["token_file"]) as f: token = f.read().strip() kwargs["token"] = token del kwargs["token_file"] return kwargs
def update(logger, wpt_dir, check_clean=True, rebuild=False): localpaths = imp.load_source("localpaths", os.path.join(wpt_dir, "tests", "tools", "localpaths.py")) kwargs = {"config": os.path.join(wpt_dir, "wptrunner.ini"), "tests_root": None, "metadata_root": None} set_from_config(kwargs) config = kwargs["config"] test_paths = get_test_paths(config) do_delayed_imports(wpt_dir) if check_clean: return _check_clean(logger, test_paths) return _update(logger, test_paths, rebuild)
def update(logger, wpt_dir, rebuild=False, config_dir=None): localpaths = imp.load_source( "localpaths", os.path.join(wpt_dir, "tests", "tools", "localpaths.py")) if not config_dir: config_dir = wpt_dir config_name = "wptrunner.ini" else: if not os.path.exists(os.path.join(config_dir, 'wptrunner.local.ini')): from manifestdownload import generate_config generate_config(config_dir) config_name = "wptrunner.local.ini" kwargs = { "config": os.path.join(config_dir, config_name), "tests_root": None, "metadata_root": None } set_from_config(kwargs) do_delayed_imports(wpt_dir) return _update(logger, kwargs["test_paths"], rebuild)
def update(logger, wpt_dir, check_clean=True): localpaths = imp.load_source( "localpaths", os.path.join(wpt_dir, "tests", "tools", "localpaths.py")) kwargs = { "config": os.path.join(wpt_dir, "wptrunner.ini"), "tests_root": None, "metadata_root": None } set_from_config(kwargs) config = kwargs["config"] test_paths = get_test_paths(config) if check_clean: old_manifests = {} for data in test_paths.itervalues(): path = os.path.join(data["metadata_path"], "MANIFEST.json") with open(path) as f: old_manifests[path] = f.readlines() try: ManifestLoader(test_paths, force_manifest_update=True).load() rv = 0 if check_clean: clean = diff_manifests(logger, old_manifests) if not clean: rv = 1 finally: if check_clean: for path, data in old_manifests.iteritems(): logger.info("Restoring manifest %s" % path) with open(path, "w") as f: f.writelines(data) return rv
def load_wpt_tests(xul_tester, requested_paths, excluded_paths, update_manifest=True): """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/mozbase/mozversion", "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({}, {}) test_manifests = manifestupdate.run(repo_root, manifest_root, logger, update=update_manifest) 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) def filter_jsshell_tests(it): for item_type, path, tests in it: tests = set(item for item in tests if item.jsshell) if tests: yield item_type, path, tests 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) release_or_beta = xul_tester.test("getBuildConfiguration().release_or_beta") run_info["release_or_beta"] = release_or_beta run_info["nightly_build"] = not release_or_beta path_filter = testloader.TestFilter(test_manifests, include=requested_paths, exclude=excluded_paths) loader = testloader.TestLoader(test_manifests, ["testharness"], run_info, manifest_filters=[path_filter, filter_jsshell_tests]) 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) tests = [] for test in loader.tests["testharness"]: test_path = os.path.relpath(test.path, wpt) scripts = [resolve(test_path, s) for s in test.scripts] extra_helper_paths_for_test = extra_helper_paths + scripts # We must create at least one test with the default options, along with # one test for each option given in a test-also annotation. options = [None] for m in test.itermeta(): if m.has_key("test-also"): # NOQA: W601 options += m.get("test-also").split() for option in options: test_case = RefTestCase( wpt, test_path, extra_helper_paths=extra_helper_paths_for_test[:], wpt=test ) if option: test_case.options.append(option) tests.append(test_case) return tests
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 set_defaults(kwargs): if kwargs["config"] is None: kwargs["config"] = wpt_path('config_css.ini') wptcommandline.set_from_config(kwargs)
def set_defaults(kwargs): if kwargs["product"] is None: kwargs["product"] = "servo" if kwargs["config"] is None: kwargs["config"] = wpt_path('config_css.ini') wptcommandline.set_from_config(kwargs)
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"]) ]
def set_defaults(kwargs): if kwargs["config"] is None: kwargs["config"] = wpt_path("config_css.ini") wptcommandline.set_from_config(kwargs)