Exemple #1
0
async def l10n_bump(config, task, repo_path):
    """Perform a version bump.

    This function takes its inputs from task by using the ``get_l10n_bump_info``
    function from treescript.task. Using `next_version` and `files`.

    This function does nothing (but logs) if the current version and next version
    match, and nothing if the next_version is actually less than current_version.

    Args:
        config (dict): the running config
        task (dict): the running task
        repo_path (str): the source directory

    Raises:
        TaskVerificationError: if a file specified is not allowed, or
                               if the file is not in the target repository.

    Returns:
        bool: True if there are any changes.

    """
    log.info("Preparing to bump l10n changesets.")
    dontbuild = get_dontbuild(task)
    ignore_closed_tree = get_ignore_closed_tree(task)
    l10n_bump_info = get_l10n_bump_info(task)
    revision_info = None
    changes = 0

    if not ignore_closed_tree:
        if not await check_treestatus(config, task):
            log.info("Treestatus is closed; skipping l10n bump.")
            return
    for bump_config in l10n_bump_info:
        if bump_config.get("revision_url"):
            revision_info = await get_revision_info(bump_config, repo_path)
        path = os.path.join(repo_path, bump_config["path"])
        old_contents = load_json_or_yaml(path, is_path=True)
        new_contents = build_revision_dict(bump_config, revision_info,
                                           repo_path)
        if old_contents == new_contents:
            continue
        with open(path, "w") as fh:
            fh.write(
                json.dumps(new_contents,
                           sort_keys=True,
                           indent=4,
                           separators=(",", ": ")))
        locale_map = build_locale_map(old_contents, new_contents)
        message = build_commit_message(bump_config["name"],
                                       locale_map,
                                       dontbuild=dontbuild,
                                       ignore_closed_tree=ignore_closed_tree)
        await run_hg_command(config,
                             "commit",
                             "-m",
                             message,
                             repo_path=repo_path)
        changes += 1
    return changes
async def _maybe_bump_l10n(config, task, repo_path):
    if get_l10n_bump_info(task, raise_on_empty=False):
        await l10n_bump(config, task, repo_path)
        output = await run_hg_command(config, "log", "--patch", "--verbose", "-r", ".", repo_path=repo_path, return_output=True, expected_exit_codes=(0, 1))
        path = os.path.join(config["artifact_dir"], "public", "logs", "l10n_bump.diff")
        makedirs(os.path.dirname(path))
        with open(path, "w") as fh:
            fh.write(output)
async def l10n_bump(config, task, repo_path, repo_type="hg"):
    """Perform a l10n revision bump.

    This function takes its inputs from task by using the ``get_l10n_bump_info``
    function from treescript.task. It then calculates the locales, the platforms
    for each locale, and the locale revision for each locale.

    Args:
        config (dict): the running config
        task (dict): the running task
        repo_path (str): the source directory
        repo_type (str): the repository type

    Raises:
        TaskVerificationError: if a file specified is not allowed, or
                               if the file is not in the target repository.

    Returns:
        int: non-zero if there are any changes.

    """
    vcs = get_vcs_module(repo_type)

    log.info("Preparing to bump l10n changesets.")

    ignore_closed_tree = get_ignore_closed_tree(task)
    if not ignore_closed_tree:
        if not await check_treestatus(config, task):
            log.info("Treestatus is closed; skipping l10n bump.")
            return 0

    dontbuild = get_dontbuild(task)
    l10n_bump_info = get_l10n_bump_info(task)
    changes = 0

    for bump_config in l10n_bump_info:
        path = os.path.join(repo_path, bump_config["path"])
        old_contents = load_json_or_yaml(path, is_path=True)
        new_contents = await build_revision_dict(bump_config, repo_path,
                                                 deepcopy(old_contents))
        if old_contents == new_contents:
            continue
        with open(path, "w") as fh:
            fh.write(
                json.dumps(new_contents,
                           sort_keys=True,
                           indent=4,
                           separators=(",", ": ")))
        locale_map = build_locale_map(old_contents, new_contents)
        message = build_commit_message(bump_config["name"],
                                       locale_map,
                                       dontbuild=dontbuild,
                                       ignore_closed_tree=ignore_closed_tree)
        await vcs.commit(config, repo_path, message)
        changes += 1
    return changes
def test_missing_l10n_bump_info(task_defn):
    with pytest.raises(TaskVerificationError):
        ttask.get_l10n_bump_info(task_defn)
def test_get_l10n_bump_info(task_defn, l10n_bump_info):
    task_defn["payload"]["l10n_bump_info"] = l10n_bump_info
    tested_info = ttask.get_l10n_bump_info(task_defn)
    assert tested_info == l10n_bump_info