From 56db9f58986df53ea542a8a10bfb21112cfea2e6 Mon Sep 17 00:00:00 2001 From: Daniel Edgy Edgecombe Date: Sat, 2 Mar 2024 14:57:01 +0000 Subject: [PATCH] =?UTF-8?q?remove=20use=20of=20calls=20to=20git=20and=20bu?= =?UTF-8?q?mpversion=20when=20testing=20cli,=20test=20tho=E2=80=A6=20(#92)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …se in the modules dedicated to them --- tests/cli/test_generate.py | 348 +++++++++++++++---------------------- tests/test_version.py | 7 +- 2 files changed, 150 insertions(+), 205 deletions(-) diff --git a/tests/cli/test_generate.py b/tests/cli/test_generate.py index 737953a..34ad37f 100644 --- a/tests/cli/test_generate.py +++ b/tests/cli/test_generate.py @@ -4,36 +4,50 @@ import typer from freezegun import freeze_time +from changelog_gen import errors, extractor, vcs, version from changelog_gen.cli import command from changelog_gen.config import PostProcessConfig -@pytest.fixture() -def git_repo(git_repo): - path = git_repo.workspace - f = path / "hello.txt" - f.write_text("hello world!") +@pytest.fixture(autouse=True) +def _subprocess_patch(monkeypatch): + mock_git = mock.Mock() + mock_git.get_latest_tag_info.return_value = { + "commit_sha": "commit-sha", + "distance_to_latest_tag": 0, + "current_version": "0.0.0", + "current_tag": "v0.0.0", + "dirty": False, + "branch": "main", + } + mock_git.get_logs.return_value = [] - git_repo.run("git add hello.txt") - git_repo.api.index.commit("initial commit") + monkeypatch.setattr(command, "Git", mock_git) + monkeypatch.setattr(extractor, "Git", mock_git) + monkeypatch.setattr(vcs, "Git", mock_git) - git_repo.api.create_tag("0.0.0") + mock_bump = mock.Mock() + mock_bump.get_version_info.return_value = { + "current": "0.0.0", + "new": "0.0.1", + } - return git_repo + monkeypatch.setattr(command, "BumpVersion", mock_bump) + monkeypatch.setattr(extractor, "BumpVersion", mock_bump) + monkeypatch.setattr(version, "BumpVersion", mock_bump) @pytest.fixture() -def changelog(git_repo): - p = git_repo.workspace / "CHANGELOG.md" +def changelog(cwd): + p = cwd / "CHANGELOG.md" p.write_text("# Changelog\n") - git_repo.run("git add CHANGELOG.md") - git_repo.api.index.commit("commit changelog") + return p @pytest.fixture() -def _release_notes(git_repo): - r = git_repo.workspace / "release_notes" +def _release_notes(cwd): + r = cwd / "release_notes" r.mkdir() f = r / ".file" f.write_text("") @@ -42,19 +56,22 @@ def _release_notes(git_repo): n = r / note n.write_text(f"Detail about {i}") - git_repo.run("git add release_notes") - git_repo.api.index.commit("commit release_notes") + +@pytest.fixture() +def commit_factory(): + def factory(commits): + vcs.Git.get_logs.return_value = [(f"short{i}", f"commit-hash{i}", message) for i, message in enumerate(commits)] + + return factory @pytest.fixture() -def _empty_conventional_commits(git_repo): # noqa: ARG001 - ... +def _empty_conventional_commits(): ... @pytest.fixture() -def _conventional_commits(git_repo): - f = git_repo.workspace / "hello.txt" - for msg in [ +def _conventional_commits(commit_factory): + commit_factory([ """fix: Detail about 4 Refs: #4 @@ -73,16 +90,12 @@ def _conventional_commits(git_repo): Refs: #1 """, - ]: - f.write_text(msg) - git_repo.run("git add hello.txt") - git_repo.api.index.commit(msg) + ]) @pytest.fixture() -def _breaking_conventional_commits(git_repo): - f = git_repo.workspace / "hello.txt" - for msg in [ +def _breaking_conventional_commits(commit_factory): + commit_factory([ """fix: Detail about 4 Refs: #4 @@ -101,15 +114,12 @@ def _breaking_conventional_commits(git_repo): Refs: #1 """, - ]: - f.write_text(msg) - git_repo.run("git add hello.txt") - git_repo.api.index.commit(msg) + ]) @pytest.fixture() -def setup_release(git_repo): - p = git_repo.workspace / "setup.cfg" +def setup_release(cwd): + p = cwd / "setup.cfg" p.write_text( """ [bumpversion] @@ -119,41 +129,30 @@ def setup_release(git_repo): """, ) - p = git_repo.workspace / "pyproject.toml" - p.write_text("") - git_repo.run("git add setup.cfg") - git_repo.run("git add pyproject.toml") - git_repo.api.index.commit("commit setup.cfg") - git_repo.api.create_tag("v1.0.0") - return p @pytest.fixture() -def setup_prerelease(git_repo): - p = git_repo.workspace / "setup.cfg" +def setup_prerelease(cwd): + p = cwd / "setup.cfg" p.write_text( """ [bumpversion] -current_version = 0.0.0 +current_version = 1.0.0 commit = true tag = true """, ) - p = git_repo.workspace / "pyproject.toml" + p = cwd / "pyproject.toml" p.write_text("") - git_repo.run("git add setup.cfg") - git_repo.run("git add pyproject.toml") - git_repo.api.index.commit("commit setup.cfg") - git_repo.api.create_tag("v0.0.0") return p @pytest.fixture() -def post_process_pyproject(git_repo): - p = git_repo.workspace / "setup.cfg" +def post_process_pyproject(cwd): + p = cwd / "setup.cfg" p.write_text(""" [bumpversion] current_version = 0.0.0 @@ -161,7 +160,7 @@ def post_process_pyproject(git_repo): tag = true """) - p = git_repo.workspace / "pyproject.toml" + p = cwd / "pyproject.toml" p.write_text(""" [tool.changelog_gen] commit = true @@ -169,13 +168,18 @@ def post_process_pyproject(git_repo): post_process.auth_env = "MY_API_AUTH" """) - git_repo.run("git add setup.cfg") - git_repo.run("git add pyproject.toml") - git_repo.api.index.commit("commit setup.cfg") - return p +@pytest.mark.usefixtures("changelog") +def test_generate_wraps_changelog_errors(gen_cli_runner, monkeypatch): + monkeypatch.setattr(command, "_gen", mock.Mock(side_effect=errors.ChangelogException("Unable to parse."))) + result = gen_cli_runner.invoke() + + assert result.exit_code == 1 + assert result.output == "Unable to parse.\n" + + @pytest.mark.usefixtures("cwd") def test_generate_aborts_if_changelog_missing(gen_cli_runner): result = gen_cli_runner.invoke() @@ -185,8 +189,16 @@ def test_generate_aborts_if_changelog_missing(gen_cli_runner): @pytest.mark.usefixtures("changelog", "_conventional_commits", "setup_prerelease") -def test_generate_aborts_if_dirty(gen_cli_runner, git_repo): - p = git_repo.workspace / "pyproject.toml" +def test_generate_aborts_if_dirty(gen_cli_runner, cwd): + command.Git.get_latest_tag_info.return_value = { + "commit_sha": "commit-sha", + "distance_to_latest_tag": 0, + "current_version": "0.0.0", + "current_tag": "v0.0.0", + "dirty": True, + "branch": "main", + } + p = cwd / "pyproject.toml" p.write_text( """ [toolchangelog_gen] @@ -200,8 +212,8 @@ def test_generate_aborts_if_dirty(gen_cli_runner, git_repo): @pytest.mark.usefixtures("changelog", "_conventional_commits", "setup_prerelease") -def test_generate_allows_dirty(gen_cli_runner, git_repo): - p = git_repo.workspace / "pyproject.toml" +def test_generate_allows_dirty(gen_cli_runner, cwd): + p = cwd / "pyproject.toml" p.write_text( """ [tool.changelog_gen] @@ -214,8 +226,8 @@ def test_generate_allows_dirty(gen_cli_runner, git_repo): @pytest.mark.usefixtures("changelog", "_conventional_commits", "setup_prerelease") -def test_generate_continues_if_allow_dirty_configured(gen_cli_runner, git_repo): - p = git_repo.workspace / "pyproject.toml" +def test_generate_continues_if_allow_dirty_configured(gen_cli_runner, cwd): + p = cwd / "pyproject.toml" p.write_text( """ [tool.changelog_gen] @@ -228,8 +240,8 @@ def test_generate_continues_if_allow_dirty_configured(gen_cli_runner, git_repo): @pytest.mark.usefixtures("changelog", "_conventional_commits", "setup_prerelease") -def test_generate_aborts_if_unsupported_current_branch(gen_cli_runner, git_repo): - p = git_repo.workspace / "pyproject.toml" +def test_generate_aborts_if_unsupported_current_branch(gen_cli_runner, cwd): + p = cwd / "pyproject.toml" p.write_text( """ [tool.changelog_gen] @@ -244,13 +256,13 @@ def test_generate_aborts_if_unsupported_current_branch(gen_cli_runner, git_repo) @pytest.mark.usefixtures("changelog", "_conventional_commits", "setup_prerelease") -def test_generate_allows_supported_branch(gen_cli_runner, git_repo): - p = git_repo.workspace / "pyproject.toml" +def test_generate_allows_supported_branch(gen_cli_runner, cwd): + p = cwd / "pyproject.toml" p.write_text( """ [tool.changelog_gen] allow_dirty = true -allowed_branches = ["master"] +allowed_branches = ["main"] """, ) result = gen_cli_runner.invoke() @@ -258,14 +270,6 @@ def test_generate_allows_supported_branch(gen_cli_runner, git_repo): assert result.exit_code == 0 -@pytest.mark.usefixtures("changelog") -def test_generate_wraps_errors(gen_cli_runner): - result = gen_cli_runner.invoke() - - assert result.exit_code == 1 - assert result.output == "Unable to get version data from bumpversion.\n" - - @pytest.mark.usefixtures("changelog", "_conventional_commits", "setup_release") def test_generate_confirms_suggested_changes(gen_cli_runner): result = gen_cli_runner.invoke() @@ -274,7 +278,7 @@ def test_generate_confirms_suggested_changes(gen_cli_runner): assert ( result.output == """ -## v1.1.0 +## v0.0.1 ### Features and Improvements @@ -286,14 +290,14 @@ def test_generate_confirms_suggested_changes(gen_cli_runner): - Detail about 1 [#1] - Detail about 4 [#4] -Write CHANGELOG for suggested version 1.1.0 [y/N]: \n""".lstrip() +Write CHANGELOG for suggested version 0.0.1 [y/N]: \n""".lstrip() ) @pytest.mark.usefixtures("changelog", "_conventional_commits", "setup_prerelease") @pytest.mark.backwards_compat() -def test_generate_with_section_mapping_backwards_compat(gen_cli_runner, git_repo): - p = git_repo.workspace / "pyproject.toml" +def test_generate_with_section_mapping_backwards_compat(gen_cli_runner, cwd): + p = cwd / "pyproject.toml" p.write_text( """ [tool.changelog_gen] @@ -321,8 +325,8 @@ def test_generate_with_section_mapping_backwards_compat(gen_cli_runner, git_repo @pytest.mark.usefixtures("changelog", "_conventional_commits", "setup_release") -def test_generate_with_headers(gen_cli_runner, git_repo): - p = git_repo.workspace / "pyproject.toml" +def test_generate_with_headers(gen_cli_runner, cwd): + p = cwd / "pyproject.toml" p.write_text( """ [tool.changelog_gen] @@ -337,7 +341,7 @@ def test_generate_with_headers(gen_cli_runner, git_repo): assert ( result.output == """ -## v1.1.0 +## v0.0.1 ### My Features @@ -349,11 +353,11 @@ def test_generate_with_headers(gen_cli_runner, git_repo): - Detail about 1 [#1] - Detail about 4 [#4] -Write CHANGELOG for suggested version 1.1.0 [y/N]: \n""".lstrip() +Write CHANGELOG for suggested version 0.0.1 [y/N]: \n""".lstrip() ) -@pytest.mark.usefixtures("git_repo", "_conventional_commits", "setup_release") +@pytest.mark.usefixtures("_conventional_commits", "setup_release") def test_generate_writes_to_file( gen_cli_runner, changelog, @@ -369,7 +373,7 @@ def test_generate_writes_to_file( == """ # Changelog -## v1.1.0 +## v0.0.1 ### Features and Improvements @@ -384,73 +388,48 @@ def test_generate_writes_to_file( ) -@pytest.mark.usefixtures("_breaking_conventional_commits", "setup_release") -def test_generate_suggests_major_version_for_breaking_change( - gen_cli_runner, - git_repo, - changelog, - monkeypatch, -): - monkeypatch.setattr(typer, "confirm", mock.MagicMock(return_value=True)) - result = gen_cli_runner.invoke(["--commit"]) - - assert result.exit_code == 0 - - assert ( - changelog.read_text() - == """ -# Changelog - -## v2.0.0 - -### Features and Improvements - -- **Breaking:** Detail about 2 [#2] -- Detail about 3 [#3] - -### Bug fixes - -- Detail about 1 [#1] -- Detail about 4 [#4] -""".lstrip() - ) - assert git_repo.api.head.commit.message == "Update CHANGELOG for 2.0.0\n" - - @pytest.mark.usefixtures("changelog", "_conventional_commits", "setup_release") def test_generate_creates_release( gen_cli_runner, - git_repo, monkeypatch, ): monkeypatch.setattr(typer, "confirm", mock.MagicMock(return_value=True)) result = gen_cli_runner.invoke(["--commit", "--release"]) assert result.exit_code == 0 - assert git_repo.api.head.commit.message == "Bump version: 1.0.0 → 1.1.0\n" + assert command.Git.add_path.call_args_list == [ + mock.call("CHANGELOG.md"), + ] + assert command.Git.commit.call_args == mock.call("0.0.1") + assert command.BumpVersion.release.call_args == mock.call("0.0.1") @pytest.mark.backwards_compat() @pytest.mark.usefixtures("changelog", "_release_notes", "setup_release") def test_generate_creates_release_from_notes( gen_cli_runner, - git_repo, monkeypatch, ): monkeypatch.setattr(typer, "confirm", mock.MagicMock(return_value=True)) result = gen_cli_runner.invoke(["--commit", "--release"]) assert result.exit_code == 0 - assert git_repo.api.head.commit.message == "Bump version: 1.0.0 → 1.1.0\n" + + assert command.Git.add_path.call_args_list == [ + mock.call("CHANGELOG.md"), + mock.call("release_notes"), + ] + assert command.Git.commit.call_args == mock.call("0.0.1") + assert command.BumpVersion.release.call_args == mock.call("0.0.1") @pytest.mark.usefixtures("changelog", "_conventional_commits", "setup_prerelease") def test_generate_creates_release_using_config( gen_cli_runner, - git_repo, + cwd, monkeypatch, ): - p = git_repo.workspace / "pyproject.toml" + p = cwd / "pyproject.toml" p.write_text( """ [tool.changelog_gen] @@ -459,23 +438,22 @@ def test_generate_creates_release_using_config( """, ) - git_repo.run("git add pyproject.toml") - git_repo.api.index.commit("commit pyproject.toml") - monkeypatch.setattr(typer, "confirm", mock.MagicMock(return_value=True)) result = gen_cli_runner.invoke() assert result.exit_code == 0 - assert git_repo.api.head.commit.message == "Bump version: 0.0.0 → 0.0.1\n" + assert command.Git.commit.call_args == mock.call("0.0.1") + assert command.BumpVersion.release.call_args == mock.call("0.0.1") @pytest.mark.usefixtures("changelog", "setup_prerelease") def test_generate_creates_release_without_release_notes( gen_cli_runner, - git_repo, + cwd, + commit_factory, monkeypatch, ): - p = git_repo.workspace / "pyproject.toml" + p = cwd / "pyproject.toml" p.write_text( """ [tool.changelog_gen] @@ -484,20 +462,12 @@ def test_generate_creates_release_without_release_notes( """, ) - git_repo.run("git add pyproject.toml") - git_repo.api.index.commit("commit pyproject.toml") - - f = git_repo.workspace / "hello.txt" - for msg in [ - """fix(config): Detail about 4 - -Refs: #4 -""", - "fix typo", - """feat(docs)!: Detail about 3 + commit_factory([ + """feat: Detail about 2 -Refs: #3 +Refs: #2 """, + "update readme", """fix: Detail about 1 With some details @@ -505,30 +475,30 @@ def test_generate_creates_release_without_release_notes( BREAKING CHANGE: Refs: #1 """, - "update readme", - """feat: Detail about 2 + """feat(docs)!: Detail about 3 -Refs: #2 +Refs: #3 """, - ]: - f.write_text(msg) - git_repo.run("git add hello.txt") - git_repo.api.index.commit(msg) + "fix typo", + """fix(config): Detail about 4 + +Refs: #4 +""", + ]) monkeypatch.setattr(typer, "confirm", mock.MagicMock(return_value=True)) result = gen_cli_runner.invoke() assert result.exit_code == 0 - assert git_repo.api.head.commit.message == "Bump version: 0.0.0 → 0.1.0\n" @pytest.mark.usefixtures("changelog", "_conventional_commits", "setup_prerelease") def test_generate_handles_bumpversion_failure_and_reverts_changelog_commit( gen_cli_runner, - git_repo, + cwd, monkeypatch, ): - p = git_repo.workspace / "pyproject.toml" + p = cwd / "pyproject.toml" p.write_text( """ [tool.changelog_gen] @@ -537,21 +507,20 @@ def test_generate_handles_bumpversion_failure_and_reverts_changelog_commit( """, ) - git_repo.run("git add pyproject.toml") - git_repo.api.index.commit("commit pyproject.toml") - monkeypatch.setattr(command.BumpVersion, "release", mock.Mock(side_effect=Exception)) + command.BumpVersion.release.side_effect = Exception monkeypatch.setattr(typer, "confirm", mock.MagicMock(return_value=True)) result = gen_cli_runner.invoke() assert result.exit_code == 1 - assert git_repo.api.head.commit.message == "commit pyproject.toml" + assert command.Git.commit.call_args == mock.call("0.0.1") + assert command.BumpVersion.release.call_args == mock.call("0.0.1") + assert command.Git.revert.call_args == mock.call() @pytest.mark.usefixtures("setup_prerelease", "_conventional_commits") def test_generate_uses_supplied_version_tag( gen_cli_runner, - git_repo, changelog, monkeypatch, ): @@ -577,42 +546,22 @@ def test_generate_uses_supplied_version_tag( - Detail about 4 [#4] """.lstrip() ) - assert git_repo.api.head.commit.message == "Update CHANGELOG for 0.3.2\n" + assert command.Git.commit.call_args == mock.call("0.3.2") -@pytest.mark.usefixtures("setup_release", "_conventional_commits") +@pytest.mark.usefixtures("setup_release", "_conventional_commits", "changelog") def test_generate_uses_supplied_version_part( gen_cli_runner, - git_repo, - changelog, monkeypatch, ): monkeypatch.setattr(typer, "confirm", mock.MagicMock(return_value=True)) result = gen_cli_runner.invoke(["--version-part", "major", "--commit"]) assert result.exit_code == 0 - assert ( - changelog.read_text() - == """ -# Changelog - -## v2.0.0 - -### Features and Improvements - -- Detail about 2 [#2] -- Detail about 3 [#3] - -### Bug fixes - -- Detail about 1 [#1] -- Detail about 4 [#4] -""".lstrip() - ) - assert git_repo.api.head.commit.message == "Update CHANGELOG for 2.0.0\n" + assert version.BumpVersion.get_version_info.call_args == mock.call("major") -@pytest.mark.usefixtures("git_repo", "_conventional_commits", "setup_prerelease") +@pytest.mark.usefixtures("_conventional_commits", "setup_prerelease") def test_generate_dry_run( gen_cli_runner, changelog, @@ -631,7 +580,7 @@ def test_generate_dry_run( ) -@pytest.mark.usefixtures("git_repo", "_empty_conventional_commits", "setup_prerelease") +@pytest.mark.usefixtures("_empty_conventional_commits", "setup_prerelease") def test_generate_reject_empty( gen_cli_runner, changelog, @@ -652,7 +601,7 @@ def test_generate_reject_empty( class TestDelegatesToPerIssuePostProcess: # The behaviour of per_issue_post_process are tested in test_post_processor - @pytest.mark.usefixtures("git_repo", "_conventional_commits", "changelog", "post_process_pyproject") + @pytest.mark.usefixtures("_conventional_commits", "changelog", "post_process_pyproject") def test_load_config( self, gen_cli_runner, @@ -677,7 +626,7 @@ def test_load_config( ), ] - @pytest.mark.usefixtures("git_repo", "_conventional_commits", "changelog", "post_process_pyproject") + @pytest.mark.usefixtures("_conventional_commits", "changelog", "post_process_pyproject") def test_generate_post_process_url( self, gen_cli_runner, @@ -703,7 +652,7 @@ def test_generate_post_process_url( ), ] - @pytest.mark.usefixtures("git_repo", "_conventional_commits", "changelog", "post_process_pyproject") + @pytest.mark.usefixtures("_conventional_commits", "changelog", "post_process_pyproject") def test_generate_post_process_auth_env( self, gen_cli_runner, @@ -728,7 +677,7 @@ def test_generate_post_process_auth_env( ), ] - @pytest.mark.usefixtures("git_repo", "_conventional_commits", "changelog", "post_process_pyproject") + @pytest.mark.usefixtures("_conventional_commits", "changelog", "post_process_pyproject") def test_generate_dry_run( self, gen_cli_runner, @@ -743,7 +692,7 @@ def test_generate_dry_run( assert result.exit_code == 0 assert post_process_mock.call_count == 0 - @pytest.mark.usefixtures("git_repo", "_conventional_commits", "changelog", "post_process_pyproject") + @pytest.mark.usefixtures("_conventional_commits", "changelog", "post_process_pyproject") def test_generate_decline_changes( self, gen_cli_runner, @@ -762,8 +711,8 @@ def test_generate_decline_changes( @freeze_time("2022-04-14T16:45:03") class TestGenerateWithDate: @pytest.mark.usefixtures("_conventional_commits", "changelog", "setup_prerelease") - def test_using_config(self, gen_cli_runner, git_repo, monkeypatch): - p = git_repo.workspace / "pyproject.toml" + def test_using_config(self, gen_cli_runner, cwd, monkeypatch): + p = cwd / "pyproject.toml" p.write_text( """ [tool.changelog_gen] @@ -773,9 +722,6 @@ def test_using_config(self, gen_cli_runner, git_repo, monkeypatch): """.strip(), ) - git_repo.run("git add pyproject.toml") - git_repo.api.index.commit("commit pyproject.toml") - monkeypatch.setattr(typer, "confirm", mock.MagicMock(return_value=True)) writer_mock = mock.MagicMock() monkeypatch.setattr(command.writer, "new_writer", mock.MagicMock(return_value=writer_mock)) @@ -794,11 +740,11 @@ def test_using_cli(self, gen_cli_runner, monkeypatch): r = gen_cli_runner.invoke(["--date-format", "(%Y-%m-%d at %H:%M)"]) assert r.exit_code == 0, r.output - assert writer_mock.add_version.call_args == mock.call("v1.1.0 (2022-04-14 at 16:45)") + assert writer_mock.add_version.call_args == mock.call("v0.0.1 (2022-04-14 at 16:45)") @pytest.mark.usefixtures("_conventional_commits", "changelog", "setup_prerelease") - def test_override_config(self, gen_cli_runner, git_repo, monkeypatch): - p = git_repo.workspace / "pyproject.toml" + def test_override_config(self, gen_cli_runner, cwd, monkeypatch): + p = cwd / "pyproject.toml" p.write_text( """ [tool.changelog_gen] @@ -808,9 +754,6 @@ def test_override_config(self, gen_cli_runner, git_repo, monkeypatch): """.strip(), ) - git_repo.run("git add pyproject.toml") - git_repo.api.index.commit("commit pyproject.toml") - monkeypatch.setattr(typer, "confirm", mock.MagicMock(return_value=True)) writer_mock = mock.MagicMock() monkeypatch.setattr(command.writer, "new_writer", mock.MagicMock(return_value=writer_mock)) @@ -821,8 +764,8 @@ def test_override_config(self, gen_cli_runner, git_repo, monkeypatch): assert writer_mock.add_version.call_args == mock.call("v0.0.1 (2022-04-14 at 16:45)") @pytest.mark.usefixtures("_conventional_commits", "changelog", "setup_prerelease") - def test_override_config_and_disable(self, gen_cli_runner, git_repo, monkeypatch): - p = git_repo.workspace / "pyproject.toml" + def test_override_config_and_disable(self, gen_cli_runner, cwd, monkeypatch): + p = cwd / "pyproject.toml" p.write_text( """ [tool.changelog_gen] @@ -832,9 +775,6 @@ def test_override_config_and_disable(self, gen_cli_runner, git_repo, monkeypatch """.strip(), ) - git_repo.run("git add pyproject.toml") - git_repo.api.index.commit("commit pyproject.toml") - monkeypatch.setattr(typer, "confirm", mock.MagicMock(return_value=True)) writer_mock = mock.MagicMock() monkeypatch.setattr(command.writer, "new_writer", mock.MagicMock(return_value=writer_mock)) diff --git a/tests/test_version.py b/tests/test_version.py index 1c22796..065bb4f 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -2,10 +2,15 @@ import pytest -from changelog_gen import version +from changelog_gen import errors, version class TestBumpVersion: + @pytest.mark.usefixtures("cwd") + def test_errors_wrapped(self): + with pytest.raises(errors.VersionDetectionError): + version.BumpVersion.get_version_info("patch") + @pytest.mark.parametrize( ("current_version", "new_version", "semver"), [