diff --git a/semantic_release/cli.py b/semantic_release/cli.py index 6ab462a20..108a7c0c8 100644 --- a/semantic_release/cli.py +++ b/semantic_release/cli.py @@ -1,6 +1,6 @@ import click -from semantic_release.git_helpers import commit_new_version +from semantic_release.git_helpers import commit_new_version, tag_new_version from semantic_release.helpers import get_current_version, get_new_version, set_new_version from semantic_release.history import evaluate_version_bump @@ -47,6 +47,7 @@ def version(**kwargs): set_new_version(new_version) commit_new_version(new_version) + tag_new_version(new_version) click.echo('Bumping with a {0} version to {1}.'.format(level_bump, new_version)) diff --git a/semantic_release/git_helpers.py b/semantic_release/git_helpers.py index d2f7fb544..8cf14ee5c 100644 --- a/semantic_release/git_helpers.py +++ b/semantic_release/git_helpers.py @@ -1,5 +1,6 @@ from git import Repo from invoke import run + from semantic_release.settings import load_config @@ -13,3 +14,7 @@ def commit_new_version(version): add = run('git add {}'.format(load_config().get('version_variable').split(':')[0]), hide=True) if add.ok: run('git commit -m "{}"'.format(version), hide=True) + + +def tag_new_version(version): + return run('git tag v{} HEAD'.format(version), hide=True) diff --git a/semantic_release/helpers.py b/semantic_release/helpers.py index 8b2e66f84..d9ff93475 100644 --- a/semantic_release/helpers.py +++ b/semantic_release/helpers.py @@ -2,6 +2,7 @@ import semver from invoke import run + from semantic_release.settings import load_config diff --git a/semantic_release/settings.py b/semantic_release/settings.py index f0378b7d2..840818587 100644 --- a/semantic_release/settings.py +++ b/semantic_release/settings.py @@ -16,5 +16,3 @@ def load_config(): settings.update(DEFAULTS) settings.update(config._sections['semantic_release']) return settings - - diff --git a/tests/test_cli.py b/tests/test_cli.py index 9855207d6..32d278630 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -16,6 +16,7 @@ def test_main_should_call_correct_function(self, mock_version): self.assertEqual(result.exit_code, 0) mock_version.assert_called_once() + @mock.patch('semantic_release.cli.tag_new_version') @mock.patch('semantic_release.cli.commit_new_version') @mock.patch('semantic_release.cli.set_new_version') @mock.patch('semantic_release.cli.get_new_version', return_value='2.0.0') @@ -23,7 +24,7 @@ def test_main_should_call_correct_function(self, mock_version): @mock.patch('semantic_release.cli.get_current_version', return_value='1.2.3') def test_version_should_call_correct_functions(self, mock_current_version, mock_evaluate_bump, mock_new_version, mock_set_new_version, - mock_commit_new_version): + mock_commit_new_version, mock_tag_new_version): result = self.runner.invoke(main, ['version']) self.assertEqual(result.exit_code, 0) mock_current_version.assert_called_once_with() @@ -31,6 +32,7 @@ def test_version_should_call_correct_functions(self, mock_current_version, mock_ mock_new_version.assert_called_once_with('1.2.3', 'major') mock_set_new_version.assert_called_once_with('2.0.0') mock_commit_new_version.assert_called_once_with('2.0.0') + mock_tag_new_version.assert_called_once_with('2.0.0') @mock.patch('semantic_release.cli.version') def test_force_major(self, mock_version): @@ -53,23 +55,26 @@ def test_force_patch(self, mock_version): mock_version.assert_called_once() self.assertEqual(mock_version.call_args_list[0][1]['force_level'], 'patch') + @mock.patch('semantic_release.cli.tag_new_version') @mock.patch('semantic_release.cli.evaluate_version_bump', lambda *x: 'major') @mock.patch('semantic_release.cli.commit_new_version') @mock.patch('semantic_release.cli.set_new_version') - def test_noop_mode(self, mock_set_new, mock_commit_new): + def test_noop_mode(self, mock_set_new, mock_commit_new, mock_tag_new_version): result = self.runner.invoke(main, ['version', '--noop']) self.assertEqual(result.exit_code, 0) self.assertFalse(mock_set_new.called) self.assertFalse(mock_commit_new.called) + self.assertFalse(mock_tag_new_version.called) + @mock.patch('semantic_release.cli.tag_new_version') @mock.patch('semantic_release.cli.commit_new_version') @mock.patch('semantic_release.cli.set_new_version') @mock.patch('semantic_release.cli.get_new_version', return_value='1.2.3') @mock.patch('semantic_release.cli.evaluate_version_bump', return_value=None) @mock.patch('semantic_release.cli.get_current_version', return_value='1.2.3') def test_version_no_change(self, mock_current_version, mock_evaluate_bump, - mock_new_version, mock_set_new_version, - mock_commit_new_version): + mock_new_version, mock_set_new_version, + mock_commit_new_version, mock_tag_new_version): result = self.runner.invoke(main, ['version']) self.assertEqual(result.exit_code, 0) mock_current_version.assert_called_once_with() @@ -77,3 +82,4 @@ def test_version_no_change(self, mock_current_version, mock_evaluate_bump, mock_new_version.assert_called_once_with('1.2.3', None) self.assertFalse(mock_set_new_version.called) self.assertFalse(mock_commit_new_version.called) + self.assertFalse(mock_tag_new_version.called) diff --git a/tests/test_git_helpers.py b/tests/test_git_helpers.py index 7866bf05b..b87d39831 100644 --- a/tests/test_git_helpers.py +++ b/tests/test_git_helpers.py @@ -1,6 +1,8 @@ from unittest import TestCase, mock + from invoke.runner import Result -from semantic_release.git_helpers import get_commit_log, commit_new_version + +from semantic_release.git_helpers import commit_new_version, get_commit_log class GetCommitLogTest(TestCase): diff --git a/tests/test_settings.py b/tests/test_settings.py index 904a06c05..35ee9c711 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -1,4 +1,5 @@ from unittest import TestCase + from semantic_release.settings import load_config @@ -10,4 +11,3 @@ def test_load_config(self): self.assertIn('major_tag', config) self.assertIn('minor_tag', config) self.assertIn('patch_tag', config) -