Merge branch 'bump-version-2' of https://github.com/MinchinWeb/python-semanticversion into MinchinWeb-bump-version-2
This commit is contained in:
commit
c321d091d9
3
CREDITS
3
CREDITS
|
@ -18,9 +18,10 @@ Contributors
|
|||
The project has received contributions from (in alphabetical order):
|
||||
|
||||
* Raphaël Barrois <raphael.barrois+semver@polytechnique.org> (https://github.com/rbarrois)
|
||||
* Michael Hrivnak <mhrivnak@hrivnak.org> (https://github.com/mhrivnak)
|
||||
* Rick Eyre <rick.eyre@outlook.com> (https://github.com/rickeyre)
|
||||
* Hugo Rodger-Brown <hugo@yunojuno.com> (https://github.com/yunojuno)
|
||||
* Michael Hrivnak <mhrivnak@hrivnak.org> (https://github.com/mhrivnak)
|
||||
* William Minchin <w_minchin@hotmail.com> (https://github.com/minchinweb)
|
||||
|
||||
|
||||
Contributor license agreement
|
||||
|
|
|
@ -31,6 +31,8 @@ ChangeLog
|
|||
parameters differ only by build metadata
|
||||
* ``Spec('<=1.3.0')`` now matches ``Version('1.3.0+abde24fe883')``
|
||||
|
||||
* `#24 <https://github.com/rbarrois/python-semanticversion/issues/24>`_: Fix handling of bumping pre-release versions, thanks to @minchinweb.
|
||||
|
||||
2.4.2 (2015-07-02)
|
||||
------------------
|
||||
|
||||
|
|
|
@ -89,15 +89,24 @@ class Version(object):
|
|||
return int(value)
|
||||
|
||||
def next_major(self):
|
||||
return Version('.'.join(str(x) for x in [self.major + 1, 0, 0]))
|
||||
if self.prerelease and self.minor is 0 and self.patch is 0:
|
||||
return Version('.'.join(str(x) for x in [self.major, self.minor, self.patch]))
|
||||
else:
|
||||
return Version('.'.join(str(x) for x in [self.major + 1, 0, 0]))
|
||||
|
||||
def next_minor(self):
|
||||
return Version(
|
||||
'.'.join(str(x) for x in [self.major, self.minor + 1, 0]))
|
||||
if self.prerelease and self.patch is 0:
|
||||
return Version('.'.join(str(x) for x in [self.major, self.minor, self.patch]))
|
||||
else:
|
||||
return Version(
|
||||
'.'.join(str(x) for x in [self.major, self.minor + 1, 0]))
|
||||
|
||||
def next_patch(self):
|
||||
return Version(
|
||||
'.'.join(str(x) for x in [self.major, self.minor, self.patch + 1]))
|
||||
if self.prerelease:
|
||||
return Version('.'.join(str(x) for x in [self.major, self.minor, self.patch]))
|
||||
else:
|
||||
return Version(
|
||||
'.'.join(str(x) for x in [self.major, self.minor, self.patch + 1]))
|
||||
|
||||
@classmethod
|
||||
def coerce(cls, version_string, partial=False):
|
||||
|
|
|
@ -241,12 +241,136 @@ class VersionTestCase(unittest.TestCase):
|
|||
self.assertTrue(v != '0.1.0')
|
||||
self.assertFalse(v == '0.1.0')
|
||||
|
||||
def test_bump_versions(self):
|
||||
def test_bump_clean_versions(self):
|
||||
# We Test each property explicitly as the == comparator for versions
|
||||
# does not distinguish between prerelease or builds for equality.
|
||||
|
||||
v = base.Version('1.0.0+build')
|
||||
v = v.next_major()
|
||||
self.assertEqual(v.major, 2)
|
||||
self.assertEqual(v.minor, 0)
|
||||
self.assertEqual(v.patch, 0)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.0.0+build')
|
||||
v = v.next_minor()
|
||||
self.assertEqual(v.major, 1)
|
||||
self.assertEqual(v.minor, 1)
|
||||
self.assertEqual(v.patch, 0)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.0.0+build')
|
||||
v = v.next_patch()
|
||||
self.assertEqual(v.major, 1)
|
||||
self.assertEqual(v.minor, 0)
|
||||
self.assertEqual(v.patch, 1)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.1.0+build')
|
||||
v = v.next_major()
|
||||
self.assertEqual(v.major, 2)
|
||||
self.assertEqual(v.minor, 0)
|
||||
self.assertEqual(v.patch, 0)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.1.0+build')
|
||||
v = v.next_minor()
|
||||
self.assertEqual(v.major, 1)
|
||||
self.assertEqual(v.minor, 2)
|
||||
self.assertEqual(v.patch, 0)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.1.0+build')
|
||||
v = v.next_patch()
|
||||
self.assertEqual(v.major, 1)
|
||||
self.assertEqual(v.minor, 1)
|
||||
self.assertEqual(v.patch, 1)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.0.1+build')
|
||||
v = v.next_major()
|
||||
self.assertEqual(v.major, 2)
|
||||
self.assertEqual(v.minor, 0)
|
||||
self.assertEqual(v.patch, 0)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.0.1+build')
|
||||
v = v.next_minor()
|
||||
self.assertEqual(v.major, 1)
|
||||
self.assertEqual(v.minor, 1)
|
||||
self.assertEqual(v.patch, 0)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.0.1+build')
|
||||
v = v.next_patch()
|
||||
self.assertEqual(v.major, 1)
|
||||
self.assertEqual(v.minor, 0)
|
||||
self.assertEqual(v.patch, 2)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
def test_bump_prerelease_versions(self):
|
||||
# We Test each property explicitly as the == comparator for versions
|
||||
# does not distinguish between prerelease or builds for equality.
|
||||
|
||||
v = base.Version('1.0.0-pre+build')
|
||||
v = v.next_major()
|
||||
self.assertEqual(v.major, 1)
|
||||
self.assertEqual(v.minor, 0)
|
||||
self.assertEqual(v.patch, 0)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.0.0-pre+build')
|
||||
v = v.next_minor()
|
||||
self.assertEqual(v.major, 1)
|
||||
self.assertEqual(v.minor, 0)
|
||||
self.assertEqual(v.patch, 0)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.0.0-pre+build')
|
||||
v = v.next_patch()
|
||||
self.assertEqual(v.major, 1)
|
||||
self.assertEqual(v.minor, 0)
|
||||
self.assertEqual(v.patch, 0)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.1.0-pre+build')
|
||||
v = v.next_major()
|
||||
self.assertEqual(v.major, 2)
|
||||
self.assertEqual(v.minor, 0)
|
||||
self.assertEqual(v.patch, 0)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.1.0-pre+build')
|
||||
v = v.next_minor()
|
||||
self.assertEqual(v.major, 1)
|
||||
self.assertEqual(v.minor, 1)
|
||||
self.assertEqual(v.patch, 0)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.1.0-pre+build')
|
||||
v = v.next_patch()
|
||||
self.assertEqual(v.major, 1)
|
||||
self.assertEqual(v.minor, 1)
|
||||
self.assertEqual(v.patch, 0)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.0.1-pre+build')
|
||||
v = v.next_major()
|
||||
self.assertEqual(v.major, 2)
|
||||
self.assertEqual(v.minor, 0)
|
||||
self.assertEqual(v.patch, 0)
|
||||
|
@ -261,10 +385,10 @@ class VersionTestCase(unittest.TestCase):
|
|||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
||||
v = base.Version('1.1.0-pre+build')
|
||||
v = base.Version('1.0.1-pre+build')
|
||||
v = v.next_patch()
|
||||
self.assertEqual(v.major, 1)
|
||||
self.assertEqual(v.minor, 1)
|
||||
self.assertEqual(v.minor, 0)
|
||||
self.assertEqual(v.patch, 1)
|
||||
self.assertEqual(v.prerelease, ())
|
||||
self.assertEqual(v.build, ())
|
||||
|
|
Loading…
Reference in New Issue