@@ -81,7 +81,7 @@ def test_main_pre_phase_replaces_latest_tagged_version_and_rebuilds_table(
8181 )
8282
8383
84- def test_main_post_phase_leaves_readme_unchanged_without_rebuilding_table (
84+ def test_main_fails_for_invalid_release_phase_without_running_git (
8585 tmp_path , monkeypatch
8686):
8787 readme_path = tmp_path / "README.md"
@@ -97,11 +97,16 @@ def test_main_post_phase_leaves_readme_unchanged_without_rebuilding_table(
9797
9898 release_script = _load_release_script_module ()
9999
100- with patch .object (release_script .subprocess , "run" ) as mock_run :
100+ with (
101+ patch .object (release_script .subprocess , "run" ) as mock_run ,
102+ pytest .raises (
103+ SystemExit ,
104+ match = "Invalid 'RELEASE_SCRIPT_PHASE': 'post'. Expected 'pre'." ,
105+ ),
106+ ):
101107 release_script .main ()
102108
103109 updated_text = readme_path .read_text (encoding = "utf-8" )
104- assert updated_text == readme_path .read_text (encoding = "utf-8" )
105110 assert "Version: 1.2.3" in updated_text
106111 assert "| keep | this | table |" in updated_text
107112 mock_run .assert_not_called ()
@@ -176,7 +181,7 @@ def test_main_pre_phase_fails_when_latest_tagged_version_is_missing(
176181 release_script .main ()
177182
178183
179- def test_main_post_phase_leaves_readme_unchanged_when_release_version_is_missing (
184+ def test_main_fails_for_invalid_release_phase_when_release_version_is_missing (
180185 tmp_path , monkeypatch
181186):
182187 readme_path = tmp_path / "README.md"
@@ -188,7 +193,13 @@ def test_main_post_phase_leaves_readme_unchanged_when_release_version_is_missing
188193
189194 release_script = _load_release_script_module ()
190195
191- with patch .object (release_script .subprocess , "run" ) as mock_run :
196+ with (
197+ patch .object (release_script .subprocess , "run" ) as mock_run ,
198+ pytest .raises (
199+ SystemExit ,
200+ match = "Invalid 'RELEASE_SCRIPT_PHASE': 'post'. Expected 'pre'." ,
201+ ),
202+ ):
192203 release_script .main ()
193204
194205 assert readme_path .read_text (encoding = "utf-8" ) == "Version: 1.2.2\n "
@@ -235,7 +246,7 @@ def test_release_script_dry_run_env_pre_phase_prints_summary_without_modifying_f
235246 )
236247
237248
238- def test_release_script_dry_run_env_post_phase_prints_summary_without_modifying_files (
249+ def test_release_script_dry_run_env_post_phase_fails_before_git_commands (
239250 tmp_path , monkeypatch , capsys
240251):
241252 readme_path = tmp_path / "README.md"
@@ -249,12 +260,15 @@ def test_release_script_dry_run_env_post_phase_prints_summary_without_modifying_
249260
250261 release_script = _load_release_script_module ()
251262
252- with patch .object (release_script .subprocess , "run" ) as mock_run :
263+ with (
264+ patch .object (release_script .subprocess , "run" ) as mock_run ,
265+ pytest .raises (
266+ SystemExit ,
267+ match = "Invalid 'RELEASE_SCRIPT_PHASE': 'post'. Expected 'pre'." ,
268+ ),
269+ ):
253270 release_script .main ()
254271
255272 assert readme_path .read_text (encoding = "utf-8" ) == original_text
256273 mock_run .assert_not_called ()
257- output = capsys .readouterr ().err
258- assert output .startswith ("[" )
259- assert "INFO" in output
260- assert "Would leave README.md at release version '2.0.0'" in output
274+ assert capsys .readouterr ().err == ""
0 commit comments