def wpt_manifest_download(self, logger=None, **params): self.setup() if logger is None: from wptrunner import wptlogging logger = wptlogging.setup(params, {"mach": sys.stdout}) wpt_manifest_downloader = self._spawn(WPTManifestDownloader) return wpt_manifest_downloader.run_download(logger, **params)
def run(src_root, obj_root, logger=None, **kwargs): kwargs = ensure_kwargs(kwargs) if logger is None: from wptrunner import wptlogging logger = wptlogging.setup(kwargs, {"mach": sys.stdout}) src_wpt_dir = os.path.join(src_root, "testing", "web-platform") do_delayed_imports(src_wpt_dir) if not kwargs["config_path"]: config_path = generate_config( logger, src_root, src_wpt_dir, os.path.join(obj_root, "_tests", "web-platform"), kwargs["rewrite_config"]) else: config_path = kwargs["config_path"] if not os.path.exists(config_path): logger.critical("Config file %s does not exist" % config_path) return None logger.debug("Using config path %s" % config_path) test_paths = wptcommandline.get_test_paths( wptcommandline.config.read(config_path)) for paths in six.itervalues(test_paths): if "manifest_path" not in paths: paths["manifest_path"] = os.path.join(paths["metadata_path"], "MANIFEST.json") ensure_manifest_directories(logger, test_paths) local_config = read_local_config(src_wpt_dir) for section in ["manifest:upstream", "manifest:mozilla"]: url_base = local_config.get(section, "url_base") manifest_rel_path = os.path.join(local_config.get(section, "metadata"), "MANIFEST.json") test_paths[url_base]["manifest_rel_path"] = manifest_rel_path if not kwargs["rebuild"] and kwargs["download"] is not False: force_download = False if kwargs["download"] is None else True manifestdownload.download_from_taskcluster(logger, src_root, test_paths, force=force_download) else: logger.debug("Skipping manifest download") update = kwargs["update"] or kwargs["rebuild"] manifests = load_and_update(logger, src_wpt_dir, test_paths, update=update, rebuild=kwargs["rebuild"], cache_root=kwargs["cache_root"]) return manifests
def run_update(self, check_clean=False, rebuild=False, **kwargs): import manifestupdate from wptrunner import wptlogging logger = wptlogging.setup(kwargs, {"mach": sys.stdout}) wpt_dir = os.path.abspath( os.path.join(self.topsrcdir, 'testing', 'web-platform')) manifestupdate.update(logger, wpt_dir, check_clean, rebuild)
def run_download(self, path=None, tests_root=None, force=False, **kwargs): import manifestdownload from wptrunner import wptlogging logger = wptlogging.setup(kwargs, {"mach": sys.stdout}) wpt_dir = os.path.abspath( os.path.join(self.topsrcdir, 'testing', 'web-platform')) manifestdownload.run(logger, wpt_dir, self.topsrcdir, force)
def run_update(self, check_clean=False, **kwargs): import manifestupdate from wptrunner import wptlogging logger = wptlogging.setup(kwargs, {"mach": sys.stdout}) wpt_dir = os.path.abspath(os.path.join(self.topsrcdir, 'testing', 'web-platform')) manifestupdate.update(logger, wpt_dir, check_clean)
def run_download(self, manifest_update=True, force=False, **kwargs): import manifestdownload from wptrunner import wptlogging logger = wptlogging.setup(kwargs, {"mach": sys.stdout}) wpt_dir = os.path.abspath( os.path.join(self.topobjdir, '_tests', 'web-platform')) manifestdownload.run(wpt_dir, self.topsrcdir, logger, force, manifest_update)
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 setup_logging(self, **kwargs): from wptrunner import wptlogging logger = wptlogging.setup(kwargs, {"mach": sys.stdout})
def run_update(topdir, check_clean=False, rebuild=False, **kwargs): import manifestupdate from wptrunner import wptlogging logger = wptlogging.setup(kwargs, {"mach": sys.stdout}) wpt_dir = os.path.abspath(os.path.join(topdir, 'tests', 'wpt')) return manifestupdate.update(logger, wpt_dir, check_clean, rebuild)
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 run_update(topdir, check_clean=False, rebuild=False, **kwargs): import manifestupdate from wptrunner import wptlogging logger = wptlogging.setup(kwargs, {"mach": sys.stdout}) wpt_dir = os.path.abspath(os.path.join(topdir, 'tests', 'wpt')) manifestupdate.update(logger, wpt_dir, check_clean, rebuild)
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"]) ]