Beispiel #1
0
def tag_docker_latest_maybe(repo: mzbuild.Repository, tag: str) -> None:
    """If this tag is greater than all other tags, and is a release, tag it `latest`"""
    this_tag = semver.VersionInfo.parse(tag.lstrip("v"))
    if this_tag.prerelease is not None:
        return

    highest_release = next(t for t in git.get_version_tags()
                           if t.prerelease is None)
    if this_tag == highest_release:
        tag_docker(repo, "latest")
Beispiel #2
0
def confirm_on_latest_rc() -> None:
    tags = git.get_version_tags()
    latest_tag = tags[0]
    if not git.is_ancestor(f"v{latest_tag}", "HEAD"):
        ancestor_tag = git.describe()
        click.confirm(
            f"You are about to create a release based on: {ancestor_tag}\n"
            f"Which is not the latest prerelease:         v{latest_tag}\n"
            "Are you sure?",
            abort=True,
        )
Beispiel #3
0
def test_tags_returns_ordered_newest_first() -> None:
    with patch("materialize.spawn.capture") as mock:
        # NOTE(benesch): we mock out the return value of `git tag` because local
        # Git clones are missing tags weirdly often. I'm not sure why.
        # Regardless, it's better for unit tests not to depend on the local Git
        # repository state.
        mock.return_value = """0.2.0
0.3.2-rc1
0.3.1"""
        tags = git.get_version_tags(fetch=False)
    assert tags == [
        Version.parse("0.3.2-rc1"),
        Version.parse("0.3.1"),
        Version.parse("0.2.0"),
    ]
Beispiel #4
0
def test_tags_returns_ordered_newest_first() -> None:
    tags = git.get_version_tags(fetch=False)
    # use a couple hard coded tags for extra sanity
    current_latest = VersionInfo.parse("0.3.1")
    older = VersionInfo.parse("0.2.0")
    seen_latest = False
    prev = tags[0]
    for tag in tags:
        # ensure that actual versions are correctly ordered
        assert (prev.major, prev.minor, prev.patch) >= (
            tag.major,
            tag.minor,
            tag.patch,
        )
        if prev.prerelease and tag.prerelease:
            assert prev.prerelease >= tag.prerelease
        prev = tag

        if tag == current_latest:
            seen_latest = True
        elif tag == older:
            assert seen_latest, "We should see newer tags first"