Exemplo n.º 1
0
def test_relman_approval_status(status, phabdouble):
    """Check only an approval from relman allows landing"""
    relman_group = phabdouble.project("release-managers")
    repo = phabdouble.repo(name="uplift-target")
    repos = get_repos_for_env("localdev")
    assert repos["uplift-target"].approval_required is True

    # Add relman as reviewer with specified status
    revision = phabdouble.revision(repo=repo)
    phabdouble.reviewer(revision, relman_group, status=status)

    # Add a some extra reviewers
    for i in range(3):
        phabdouble.reviewer(revision,
                            phabdouble.user(username=f"reviewer-{i}"))

    phab_revision = phabdouble.api_object_for(
        revision,
        attachments={
            "reviewers": True,
            "reviewers-extra": True,
            "projects": True
        },
    )

    check = check_relman_approval(relman_group["phid"], repos)
    output = check(revision=phab_revision,
                   repo=phabdouble.api_object_for(repo))
    if status == ReviewerStatus.ACCEPTED:
        assert output is None
    else:
        assert (
            output ==
            "The release-managers group did not accept that stack: you need to wait for a group approval from release-managers, or request a new review."  # noqa
        )
Exemplo n.º 2
0
def get_blocker_checks(repositories: dict, relman_group_phid: str):
    """Build all transplant blocker checks that need extra Phabricator data"""
    assert all(map(lambda r: isinstance(r, Repo), repositories.values()))

    return DEFAULT_OTHER_BLOCKER_CHECKS + [
        # Configure relman check with extra data
        check_relman_approval(relman_group_phid, repositories)
    ]
Exemplo n.º 3
0
def test_relman_approval_missing(phabdouble):
    """A repo with an approval required needs relman as reviewer"""
    relman_group = phabdouble.project("release-managers")
    repo = phabdouble.repo(name="uplift-target")
    repos = get_repos_for_env("localdev")
    assert repos["uplift-target"].approval_required is True

    revision = phabdouble.revision(repo=repo)
    phab_revision = phabdouble.api_object_for(
        revision,
        attachments={
            "reviewers": True,
            "reviewers-extra": True,
            "projects": True
        },
    )

    check = check_relman_approval(relman_group["phid"], repos)
    assert (check(revision=phab_revision, repo=phabdouble.api_object_for(repo))
            == "The release-managers group was not requested for review")