diff options
author | Dave Walker (Daviey) <email@daviey.com> | 2014-12-16 16:07:58 +0000 |
---|---|---|
committer | Robert Collins <rbtcollins@hp.com> | 2015-04-17 10:06:51 +1200 |
commit | 1b4a8bd554a65384638f06d556d8d0063800c080 (patch) | |
tree | a5461376e47191525ed5b3a86900b07fc092dbe3 | |
parent | da0f226cc461bb6555f459e3fd7b4af51ca7a63a (diff) | |
download | pbr-1b4a8bd554a65384638f06d556d8d0063800c080.tar.gz |
Ignore non-release related tags
Previously we were accepting many string tags to be release
tags for versions. This change enforces tags that are
considered to start with a digit, and ignore if not.
Change-Id: Ib1ca0eda62e375cdee70d35ed7c82a544082ef0a
Closes-bug: 1403124
Signed-off-by: Dave Walker (Daviey) <email@daviey.com>
-rw-r--r-- | pbr/tests/test_packaging.py | 7 | ||||
-rw-r--r-- | pbr/tests/test_version.py | 4 | ||||
-rw-r--r-- | pbr/version.py | 3 |
3 files changed, 14 insertions, 0 deletions
diff --git a/pbr/tests/test_packaging.py b/pbr/tests/test_packaging.py index eac76b2..7924fa9 100644 --- a/pbr/tests/test_packaging.py +++ b/pbr/tests/test_packaging.py @@ -427,6 +427,13 @@ class TestVersions(base.BaseTestCase): self.repo.tag('badver4') version = packaging._get_version_from_git() self.assertThat(version, matchers.StartsWith('1.2.4.0a2.dev1')) + # Non-release related tags are ignored. + self.repo.commit() + self.repo.tag('2') + self.repo.commit() + self.repo.tag('non-release-tag/2014.12.16-1') + version = packaging._get_version_from_git() + self.assertThat(version, matchers.StartsWith('2.0.1.dev1')) def test_valid_tag_honoured(self): # Fix for bug 1370608 - we converted any target into a 'dev version' diff --git a/pbr/tests/test_version.py b/pbr/tests/test_version.py index e2824bb..cd092a0 100644 --- a/pbr/tests/test_version.py +++ b/pbr/tests/test_version.py @@ -115,6 +115,10 @@ class TestSemanticVersion(base.BaseTestCase): parsed = from_pip_string('2014.2.b2') self.assertEqual(expected, parsed) + def test_from_pip_string_non_digit_start(self): + self.assertRaises(ValueError, from_pip_string, + 'non-release-tag/2014.12.16-1') + def test_final_version(self): semver = version.SemanticVersion(1, 2, 3) self.assertEqual((1, 2, 3, 'final', 0), semver.version_tuple()) diff --git a/pbr/version.py b/pbr/version.py index e297da7..d3fe401 100644 --- a/pbr/version.py +++ b/pbr/version.py @@ -142,6 +142,9 @@ class SemanticVersion(object): ever released - we're treating that as a critical bug that we ever made them and have stopped doing that. """ + # Versions need to start numerically, ignore if not + if not version_string[:1].isdigit(): + raise ValueError("Invalid version %r" % version_string) input_components = version_string.split('.') # decimals first (keep pre-release and dev/hashes to the right) components = [c for c in input_components if c.isdigit()] |