コード例 #1
0
 def test_11_2(self):
     a = Version('1.0.0')
     b = Version('2.0.0')
     c = Version('2.1.0')
     d = Version('2.1.1')
     self.assertTrue(a < b)
     self.assertTrue(b < c)
     self.assertTrue(c < d)
     self.assertFalse(d < c)
コード例 #2
0
ファイル: test_git.py プロジェクト: tempbottle/materialize
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"),
    ]
コード例 #3
0
 def test_1_0_0_0_build_1_rc_10000aaa_kk_0_1(self):
     version_string = '1.0.0+0.build.1-rc.10000aaa-kk-0.1'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(0, version.minor)
     self.assertEqual(0, version.patch)
     self.assertEqual('0.build.1-rc.10000aaa-kk-0.1', version.buildmetadata)
コード例 #4
0
 def test_2_0_1_alpha_1227(self):
     version_string = '2.0.1-alpha.1227'
     version = Version(version_string)
     self.assertEqual(2, version.major)
     self.assertEqual(0, version.minor)
     self.assertEqual(1, version.patch)
     self.assertEqual('alpha.1227', version.prerelease)
コード例 #5
0
 def test_1_0_0_beta(self):
     version_string = '1.0.0-beta'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(0, version.minor)
     self.assertEqual(0, version.patch)
     self.assertEqual('beta', version.prerelease)
コード例 #6
0
 def test_1_0_0_alpha_beta_1(self):
     version_string = '1.0.0-alpha.beta.1'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(0, version.minor)
     self.assertEqual(0, version.patch)
     self.assertEqual('alpha.beta.1', version.prerelease)
コード例 #7
0
 def test_99999999999999999999999_999999999999999999_99999999999999999(
         self):
     version_string = '99999999999999999999999.999999999999999999.99999999999999999'
     version = Version(version_string)
     self.assertEqual(99999999999999999999999, version.major)
     self.assertEqual(999999999999999999, version.minor)
     self.assertEqual(99999999999999999, version.patch)
コード例 #8
0
 def test_1_0_0_0A_is_legal(self):
     version_string = '1.0.0-0A.is.legal'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(0, version.minor)
     self.assertEqual(0, version.patch)
     self.assertEqual('0A.is.legal', version.prerelease)
コード例 #9
0
 def test_1_2_3____RC_SNAPSHOT_12_9_1___12(self):
     version_string = '1.2.3----RC-SNAPSHOT.12.9.1--.12'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(2, version.minor)
     self.assertEqual(3, version.patch)
     self.assertEqual('---RC-SNAPSHOT.12.9.1--.12', version.prerelease)
コード例 #10
0
 def test_1_0_0_alpha0_valid(self):
     version_string = '1.0.0-alpha0.valid'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(0, version.minor)
     self.assertEqual(0, version.patch)
     self.assertEqual('alpha0.valid', version.prerelease)
コード例 #11
0
 def test_2_0_0_build_1848(self):
     version_string = '2.0.0+build.1848'
     version = Version(version_string)
     self.assertEqual(2, version.major)
     self.assertEqual(0, version.minor)
     self.assertEqual(0, version.patch)
     self.assertEqual('build.1848', version.buildmetadata)
コード例 #12
0
 def test_1_1_2_meta_valid(self):
     version_string = '1.1.2+meta-valid'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(1, version.minor)
     self.assertEqual(2, version.patch)
     self.assertEqual('meta-valid', version.buildmetadata)
コード例 #13
0
 def test_1_2_3_SNAPSHOT_123(self):
     version_string = '1.2.3-SNAPSHOT-123'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(2, version.minor)
     self.assertEqual(3, version.patch)
     self.assertEqual('SNAPSHOT-123', version.prerelease)
コード例 #14
0
 def test_10_2_3_DEV_SNAPSHOT(self):
     version_string = '10.2.3-DEV-SNAPSHOT'
     version = Version(version_string)
     self.assertEqual(10, version.major)
     self.assertEqual(2, version.minor)
     self.assertEqual(3, version.patch)
     self.assertEqual('DEV-SNAPSHOT', version.prerelease)
コード例 #15
0
 def test_1_2_3_beta(self):
     version_string = '1.2.3-beta'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(2, version.minor)
     self.assertEqual(3, version.patch)
     self.assertEqual('beta', version.prerelease)
コード例 #16
0
 def test_1_1_2_prerelease_meta(self):
     version_string = '1.1.2-prerelease+meta'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(1, version.minor)
     self.assertEqual(2, version.patch)
     self.assertEqual('prerelease', version.prerelease)
     self.assertEqual('meta', version.buildmetadata)
コード例 #17
0
 def test_1_2_3____R_S_12_9_1___12_meta(self):
     version_string = '1.2.3----R-S.12.9.1--.12+meta'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(2, version.minor)
     self.assertEqual(3, version.patch)
     self.assertEqual('---R-S.12.9.1--.12', version.prerelease)
     self.assertEqual('meta', version.buildmetadata)
コード例 #18
0
 def test_1_0_0_alpha_beta2(self):
     version_string = '1.0.0-alpha+beta'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(0, version.minor)
     self.assertEqual(0, version.patch)
     self.assertEqual('alpha', version.prerelease)
     self.assertEqual('beta', version.buildmetadata)
コード例 #19
0
 def test_2_0_0_rc_1_build_123(self):
     version_string = '2.0.0-rc.1+build.123'
     version = Version(version_string)
     self.assertEqual(2, version.major)
     self.assertEqual(0, version.minor)
     self.assertEqual(0, version.patch)
     self.assertEqual('rc.1', version.prerelease)
     self.assertEqual('build.123', version.buildmetadata)
コード例 #20
0
 def test_1_0_0_alpha_a_b_c_somethinglong_build_1_aef_1_its_okay(self):
     version_string = '1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(0, version.minor)
     self.assertEqual(0, version.patch)
     self.assertEqual('alpha-a.b-c-somethinglong', version.prerelease)
     self.assertEqual('build.1-aef.1-its-okay', version.buildmetadata)
コード例 #21
0
 def test_11_4(self):
     a = Version('1.0.0-alpha')
     b = Version('1.0.0-alpha.1')
     c = Version('1.0.0-alpha.beta')
     d = Version('1.0.0-beta')
     e = Version('1.0.0-beta.2')
     f = Version('1.0.0-beta.11')
     g = Version('1.0.0-rc.1')
     h = Version('1.0.0')
     self.assertLess(a, b)
     self.assertLess(b, c)
     self.assertLess(c, d)
     self.assertLess(d, e)
     self.assertLess(e, f)
     self.assertLess(f, g)
     self.assertLess(g, h)
コード例 #22
0
def finish(create_branch: Optional[str], checkout: Optional[str],
           affect_remote: bool) -> None:
    """Create the final non-rc tag and a branch to incorporate into the repo"""
    if checkout is not None:
        tags = git.get_version_tags()
        tag = Version.parse(checkout.lstrip("v"))
        if tag not in tags:
            click.confirm(
                f"This version: {tag} doesn't look like an existing tag, "
                "are you sure you want to create a release from it?",
                abort=True,
            )
    else:
        tag = get_latest_tag(fetch=True)
    if not tag.prerelease or not tag.prerelease.startswith("rc"):
        click.confirm(
            f"This version: {tag} doesn't look like a prerelease, "
            "are you sure you want to continue?",
            abort=True,
        )
    new_version = tag.replace(prerelease=None)
    checkout = f"v{tag}"
    release(
        new_version,
        checkout=checkout,
        create_branch=None,
        tag=True,
        affect_remote=affect_remote,
    )

    update_upgrade_tests_inner(new_version, force=False)
    checkout = None
    incorporate_inner(create_branch,
                      checkout,
                      affect_remote,
                      fetch=False,
                      is_finish=True)
コード例 #23
0
 def test_sort(self):
     VERSION_STRINGS = [
         '0.0.4',
         '1.2.3',
         '10.20.30',
         '1.1.2-prerelease+meta',
         '1.1.2+meta',
         '1.1.2+meta-valid',
         '1.0.0-alpha',
         '1.0.0-beta',
         '1.0.0-alpha.beta',
         '1.0.0-alpha.beta.1',
         '1.0.0-alpha.1',
         '1.0.0-alpha0.valid',
         '1.0.0-alpha.0valid',
         '1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay',
         '1.0.0-rc.1+build.1',
         '2.0.0-rc.1+build.123',
         '1.2.3-beta',
         '10.2.3-DEV-SNAPSHOT',
         '1.2.3-SNAPSHOT-123',
         '1.0.0',
         '2.0.0',
         '1.1.7',
         '2.0.0+build.1848',
         '2.0.1-alpha.1227',
         '1.0.0-alpha+beta',
         '1.2.3----RC-SNAPSHOT.12.9.1--.12+788',
         '1.2.3----R-S.12.9.1--.12+meta',
         '1.2.3----RC-SNAPSHOT.12.9.1--.12',
         '1.0.0+0.build.1-rc.10000aaa-kk-0.1',
         '99999999999999999999999.999999999999999999.99999999999999999',
         '1.0.0-0A.is.legal',
     ]
     for version in sorted([Version(x) for x in VERSION_STRINGS]):
         print(f"DEBUG: version={version}")
コード例 #24
0
def list_prs(recent_ref: Optional[str], ancestor_ref: Optional[str]) -> None:
    """
    List PRs between a range of refs

    If no refs are specified, then this will find the refs between the most
    recent tag and the previous semver tag (i.e. excluding RCs)
    """
    git.fetch()
    if recent_ref is None or ancestor_ref is None:
        tags = git.get_version_tags(fetch=False)
        if recent_ref is None:
            recent = tags[0]
            recent_ref = str(tags[0])
        else:
            recent = Version.parse(recent_ref)
        if ancestor_ref is None:
            for ref in tags[1:]:
                ancestor = ref
                if (
                    ancestor.major < recent.major
                    or ancestor.minor < recent.minor
                    or ancestor.patch < recent.patch
                ):
                    ancestor_ref = str(ref)
                    break

            ui.say(
                f"Using recent_ref={recent_ref}  ancestor_ref={ancestor_ref}",
            )

    commit_range = f"v{ancestor_ref}..v{recent_ref}"
    commits = spawn.capture(
        [
            "git",
            "log",
            "--pretty=format:%d %s",
            "--abbrev-commit",
            "--date=iso",
            commit_range,
            "--",
        ],
        unicode=True,
    )

    pattern = re.compile(r"^\s*\(refs/pullreqs/(\d+)|\(#(\d+)")
    prs = []
    found_ref = False
    for commit in commits.splitlines():
        if "build(deps)" in commit:
            continue

        match = pattern.search(commit)
        if match is not None:
            pr = match.group(1)
            if pr:
                found_ref = True
            else:
                pr = match.group(2)
            prs.append(pr)

    if not found_ref:
        ui.say(
            "WARNING: you probably don't have pullreqs configured for your repo",
        )
        ui.say(
            "Add the following line to the MaterializeInc/materialize remote section in your .git/config",
        )
        ui.say("  fetch = +refs/pull/*/head:refs/pullreqs/*")

    username = input("Enter your github username: "******"~/.config/materialize/dev-tools-access-token")

    try:
        with open(creds_path) as fh:
            token = fh.read().strip()
    except FileNotFoundError:
        raise UIError(
            f"""No developer tool api token at {creds_path!r}
    please create an access token at https://github.com/settings/tokens"""
        )

    def get(pr: str) -> Any:
        return requests.get(
            f"https://{username}:{token}@api.github.com/repos/MaterializeInc/materialize/pulls/{pr}",
            headers={
                "Accept": "application/vnd.github.v3+json",
            },
        ).json()

    collected = []
    with concurrent.futures.ThreadPoolExecutor(max_workers=10) as pool:
        futures = {pool.submit(get, pr): pr for pr in prs}
        for future in concurrent.futures.as_completed(futures):
            pr = futures[future]
            contents = future.result()
            try:
                url = contents["html_url"]
                title = contents["title"]
                collected.append((url, title))
            except KeyError:
                raise UIError(contents)
    for url, title in sorted(collected):
        print(url, title)
コード例 #25
0
 def test_1_2_RC_SNAPSHOT(self):
     with self.assertRaises(ValueError):
         Version('1.2-RC-SNAPSHOT')
コード例 #26
0
 def test_1_0_0_alpha(self):
     version_string = '1.0.0-alpha'
     version = Version(version_string)
     self.assertEqual(1, version.major)
     self.assertEqual(0, version.minor)
     self.assertEqual('alpha', version.prerelease)
コード例 #27
0
 def test__1_0_3_gamma_b7718(self):
     with self.assertRaises(ValueError):
         Version('-1.0.3-gamma+b7718')
コード例 #28
0
 def test_99999999999999999999999_999999999999999999_99999999999999999____RC_SNAPSHOT_12_09_1__________________________________12(
         self):
     with self.assertRaises(ValueError):
         Version(
             '99999999999999999999999.999999999999999999.99999999999999999----RC-SNAPSHOT.12.09.1--------------------------------..12'
         )
コード例 #29
0
 def test_9_8_7_whatever_meta_meta(self):
     with self.assertRaises(ValueError):
         Version('9.8.7-whatever+meta+meta')
コード例 #30
0
 def test__justmeta(self):
     with self.assertRaises(ValueError):
         Version('+justmeta')