Skip to content

Commit

Permalink
fix: proper semantic version bumping
Browse files Browse the repository at this point in the history
- also included tests for the same

Signed-off-by: Ameya Shenoy <shenoy.ameya@gmail.com>
  • Loading branch information
codingCoffee committed Nov 7, 2018
1 parent 222d460 commit 64a3a5c
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 11 deletions.
31 changes: 20 additions & 11 deletions bench/release.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,34 +154,43 @@ def get_current_version(repo_path, to_branch):

def get_bumped_version(version, bump_type):
v = semantic_version.Version(version)
if bump_type == 'minor':
v.minor += 1
if bump_type == 'major':
v.major += 1
v.minor = 0
v.patch = 0
v.prerelease = None

elif bump_type == 'major':
v.major += 1
v.minor = 0
elif bump_type == 'minor':
v.minor += 1
v.patch = 0
v.prerelease = None

elif bump_type == 'patch':
v.patch += 1
v.prerelease = None
if v.prerelease == ():
v.patch += 1
v.prerelease = None

elif len(v.prerelease) == 2:
v.prerelease = ()

elif bump_type == 'stable':
# remove pre-release tag
v.prerelease = None

elif bump_type == 'prerelease':
if v.prerelease == ():
v.prerelease = ('beta',)

if len(v.prerelease)==1:
v.patch += 1
v.prerelease = ('beta', '1')
else:

elif len(v.prerelease) == 2:
v.prerelease = ('beta', str(int(v.prerelease[1]) + 1))

else:
raise ("Something wen't wrong while doing a prerelease")

else:
raise ("bump_type not amongst [major, minor, patch, prerelease]")

return str(v)

def set_version(repo_path, version, to_branch):
Expand Down
13 changes: 13 additions & 0 deletions bench/tests/test_init.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import bench.app
import bench.config.common_site_config
import bench.cli
from bench.release import get_bumped_version

bench.cli.from_command_line = True

Expand All @@ -20,6 +21,18 @@ def tearDown(self):
if os.path.exists(bench_path):
shutil.rmtree(bench_path, ignore_errors=True)

def test_semantic_version(self):
self.assertEqual( get_bumped_version('11.0.4', 'major'), '12.0.0' )
self.assertEqual( get_bumped_version('11.0.4', 'minor'), '11.1.0' )
self.assertEqual( get_bumped_version('11.0.4', 'patch'), '11.0.5' )
self.assertEqual( get_bumped_version('11.0.4', 'prerelease'), '11.0.5-beta.1' )

self.assertEqual( get_bumped_version('11.0.5-beta.22', 'major'), '12.0.0' )
self.assertEqual( get_bumped_version('11.0.5-beta.22', 'minor'), '11.1.0' )
self.assertEqual( get_bumped_version('11.0.5-beta.22', 'patch'), '11.0.5' )
self.assertEqual( get_bumped_version('11.0.5-beta.22', 'prerelease'), '11.0.5-beta.23' )


def test_init(self, bench_name="test-bench", **kwargs):
self.init_bench(bench_name, **kwargs)

Expand Down

0 comments on commit 64a3a5c

Please sign in to comment.