diff --git a/semantic_release/cli.py b/semantic_release/cli.py index f14acf564..4495dd403 100644 --- a/semantic_release/cli.py +++ b/semantic_release/cli.py @@ -182,7 +182,8 @@ def bump_version(new_version, level_bump): config.get("version_source") == "commit", ): commit_new_version(new_version) - tag_new_version(new_version) + if config.get("version_source") == "tag" or config.get("tag_commit"): + tag_new_version(new_version) logger.info(f"Bumping with a {level_bump} version to {new_version}") @@ -377,6 +378,7 @@ def main(**kwargs): "major_on_zero", "upload_to_pypi", "version_source", + "no_git_tag", ]: obj[key] = config.get(key) logger.debug(f"Main config: {obj}") diff --git a/semantic_release/defaults.cfg b/semantic_release/defaults.cfg index 3a000b892..f45e8a700 100644 --- a/semantic_release/defaults.cfg +++ b/semantic_release/defaults.cfg @@ -23,3 +23,4 @@ changelog_sections=feature,fix,breaking,documentation,performance,:boom:,:sparkl changelog_file=CHANGELOG.md changelog_placeholder= changelog_scope=true +tag_commit=true diff --git a/semantic_release/settings.py b/semantic_release/settings.py index 1bd6ddccd..434934fca 100644 --- a/semantic_release/settings.py +++ b/semantic_release/settings.py @@ -46,6 +46,7 @@ def _config_from_ini(paths): "remove_dist", "upload_to_pypi", "upload_to_release", + "tag_commit", } # Iterate through the sections so that default values are applied diff --git a/tests/test_cli.py b/tests/test_cli.py index 831b742d4..1592cc0c3 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -96,10 +96,9 @@ def test_version_by_tag_should_call_correct_functions(mocker): mocker.patch( "semantic_release.cli.config.get", wrapped_config_get( - version_source="tag", + version_source="tag" ), ) - mocker.patch("semantic_release.cli.config.get", lambda *x, **y: False) mock_set_new_version = mocker.patch("semantic_release.cli.set_new_version") mock_tag_new_version = mocker.patch("semantic_release.cli.tag_new_version") mock_new_version = mocker.patch( @@ -120,6 +119,36 @@ def test_version_by_tag_should_call_correct_functions(mocker): mock_set_new_version.assert_called_once_with("2.0.0") mock_tag_new_version.assert_called_once_with("2.0.0") +def test_version_by_commit_without_tag_should_call_correct_functions(mocker): + mocker.patch( + "semantic_release.cli.config.get", + wrapped_config_get( + version_source="commit", + tag_commit=False + ), + ) + mock_set_new_version = mocker.patch("semantic_release.cli.set_new_version") + mock_tag_new_version = mocker.patch("semantic_release.cli.tag_new_version") + mock_commit_new_version = mocker.patch("semantic_release.cli.commit_new_version") + mock_new_version = mocker.patch( + "semantic_release.cli.get_new_version", return_value="2.0.0" + ) + mock_evaluate_bump = mocker.patch( + "semantic_release.cli.evaluate_version_bump", return_value="major" + ) + mock_current_version = mocker.patch( + "semantic_release.cli.get_current_version", return_value="1.2.3" + ) + + version() + + mock_current_version.assert_called_once_with() + mock_evaluate_bump.assert_called_once_with("1.2.3", None) + 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") + assert not mock_tag_new_version.called + def test_force_major(mocker, runner): mock_version = mocker.patch("semantic_release.cli.version")