コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
    def run(self, **kwargs):
        sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__),
                                                        "tests", "tools")))
        from wptrunner import wptcommandline
        from manifest import testpaths
        import manifestupdate

        import logging
        logger = logging.getLogger("web-platform-tests")

        src_root = self.topsrcdir
        obj_root = self.topobjdir
        src_wpt_dir = os.path.join(src_root, "testing", "web-platform")

        config_path = manifestupdate.generate_config(logger, src_root, src_wpt_dir,
                                                     os.path.join(obj_root, "_tests", "web-platform"),
                                                     False)

        test_paths = wptcommandline.get_test_paths(wptcommandline.config.read(config_path))
        results = {}
        for url_base, paths in iteritems(test_paths):
            if "manifest_path" not in paths:
                paths["manifest_path"] = os.path.join(paths["metadata_path"],
                                                      "MANIFEST.json")
            results.update(
                testpaths.get_paths(path=paths["manifest_path"],
                                    src_root=src_root,
                                    tests_root=paths["tests_path"],
                                    update=kwargs["update"],
                                    rebuild=kwargs["rebuild"],
                                    url_base=url_base,
                                    cache_root=kwargs["cache_root"],
                                    test_ids=kwargs["test_ids"]))
        testpaths.write_output(results, kwargs["json"])
        return True
コード例 #4
0
ファイル: manifestupdate.py プロジェクト: wenshiqi0/gecko-dev
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)
コード例 #5
0
    def run(self, **kwargs):
        sys.path.insert(
            0,
            os.path.abspath(
                os.path.join(os.path.dirname(__file__), "tests", "tools")),
        )
        from serve import serve
        from wptrunner import wptcommandline
        import manifestupdate

        import logging

        logger = logging.getLogger("web-platform-tests")

        src_root = self.topsrcdir
        obj_root = self.topobjdir
        src_wpt_dir = os.path.join(src_root, "testing", "web-platform")

        config_path = manifestupdate.generate_config(
            logger,
            src_root,
            src_wpt_dir,
            os.path.join(obj_root, "_tests", "web-platform"),
            False,
        )

        test_paths = wptcommandline.get_test_paths(
            wptcommandline.config.read(config_path))

        def get_route_builder(*args, **kwargs):
            route_builder = serve.get_route_builder(*args, **kwargs)

            for url_base, paths in iteritems(test_paths):
                if url_base != "/":
                    route_builder.add_mount_point(url_base,
                                                  paths["tests_path"])

            return route_builder

        return 0 if serve.run(route_builder=get_route_builder, **kwargs) else 1
コード例 #6
0
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