feat: add previous version to github action outputs by codejedi365 · Pull Request #1302 · python-semantic-release/python-semantic-release
Expand Up
@@ -22,15 +22,17 @@
@pytest.mark.parametrize( "version, is_prerelease", "prev_version, version, released, is_prerelease", [ ("1.2.3", False), ("1.2.3-alpha.1", True), ("1.2.2", "1.2.3", True, False), ("1.2.2", "1.2.3-alpha.1", True, True), ("1.2.2", "1.2.2", False, False), ("1.2.2-alpha.1", "1.2.2-alpha.1", False, True), (None, "1.2.3", True, False), ], ) @pytest.mark.parametrize("released", (True, False)) def test_version_github_actions_output_format( released: bool, version: str, is_prerelease: bool released: bool, version: str, is_prerelease: bool, prev_version: str ): commit_sha = "0" * 40 # 40 zeroes to simulate a SHA-1 hash release_notes = dedent( Expand All @@ -43,15 +45,16 @@ def test_version_github_actions_output_format( expected_output = ( dedent( f"""\ released={'true' if released else 'false'} version={version} tag=v{version} is_prerelease={'true' if is_prerelease else 'false'} link={BASE_VCS_URL}/releases/tag/v{version} commit_sha={commit_sha} """ released={'true' if released else 'false'} version={version} tag=v{version} is_prerelease={'true' if is_prerelease else 'false'} link={BASE_VCS_URL}/releases/tag/v{version} previous_version={prev_version or ""} commit_sha={commit_sha} """ ) + f"release_notes<<EOF\n{release_notes}EOF{os.linesep}" + f"release_notes<<EOF{os.linesep}{release_notes}EOF{os.linesep}" )
with mock.patch.dict(os.environ, {}, clear=True): Expand All @@ -61,6 +64,7 @@ def test_version_github_actions_output_format( version=Version.parse(version), commit_sha=commit_sha, release_notes=release_notes, prev_version=Version.parse(prev_version) if prev_version else None, ).to_output_text()
# Evaluate (expected -> actual) Expand Down Expand Up @@ -106,6 +110,7 @@ def test_version_github_actions_output_writes_to_github_output_if_available( tmp_path: Path, ): mock_output_file = tmp_path / "action.out" prev_version_str = "1.2.2" version_str = "1.2.3" commit_sha = "0" * 40 # 40 zeroes to simulate a SHA-1 hash release_notes = dedent( Expand All @@ -125,6 +130,7 @@ def test_version_github_actions_output_writes_to_github_output_if_available( released=True, commit_sha=commit_sha, release_notes=release_notes, prev_version=Version.parse(prev_version_str), ).write_if_possible()
with open(mock_output_file, encoding="utf-8", newline=os.linesep) as rfd: Expand All @@ -137,6 +143,7 @@ def test_version_github_actions_output_writes_to_github_output_if_available( assert f"{BASE_VCS_URL}/releases/tag/v{version_str}" == action_outputs["link"] assert f"v{version_str}" == action_outputs["tag"] assert commit_sha == action_outputs["commit_sha"] assert prev_version_str == action_outputs["previous_version"] assert release_notes == action_outputs["release_notes"]
Expand Down
@pytest.mark.parametrize( "version, is_prerelease", "prev_version, version, released, is_prerelease", [ ("1.2.3", False), ("1.2.3-alpha.1", True), ("1.2.2", "1.2.3", True, False), ("1.2.2", "1.2.3-alpha.1", True, True), ("1.2.2", "1.2.2", False, False), ("1.2.2-alpha.1", "1.2.2-alpha.1", False, True), (None, "1.2.3", True, False), ], ) @pytest.mark.parametrize("released", (True, False)) def test_version_github_actions_output_format( released: bool, version: str, is_prerelease: bool released: bool, version: str, is_prerelease: bool, prev_version: str ): commit_sha = "0" * 40 # 40 zeroes to simulate a SHA-1 hash release_notes = dedent( Expand All @@ -43,15 +45,16 @@ def test_version_github_actions_output_format( expected_output = ( dedent( f"""\ released={'true' if released else 'false'} version={version} tag=v{version} is_prerelease={'true' if is_prerelease else 'false'} link={BASE_VCS_URL}/releases/tag/v{version} commit_sha={commit_sha} """ released={'true' if released else 'false'} version={version} tag=v{version} is_prerelease={'true' if is_prerelease else 'false'} link={BASE_VCS_URL}/releases/tag/v{version} previous_version={prev_version or ""} commit_sha={commit_sha} """ ) + f"release_notes<<EOF\n{release_notes}EOF{os.linesep}" + f"release_notes<<EOF{os.linesep}{release_notes}EOF{os.linesep}" )
with mock.patch.dict(os.environ, {}, clear=True): Expand All @@ -61,6 +64,7 @@ def test_version_github_actions_output_format( version=Version.parse(version), commit_sha=commit_sha, release_notes=release_notes, prev_version=Version.parse(prev_version) if prev_version else None, ).to_output_text()
# Evaluate (expected -> actual) Expand Down Expand Up @@ -106,6 +110,7 @@ def test_version_github_actions_output_writes_to_github_output_if_available( tmp_path: Path, ): mock_output_file = tmp_path / "action.out" prev_version_str = "1.2.2" version_str = "1.2.3" commit_sha = "0" * 40 # 40 zeroes to simulate a SHA-1 hash release_notes = dedent( Expand All @@ -125,6 +130,7 @@ def test_version_github_actions_output_writes_to_github_output_if_available( released=True, commit_sha=commit_sha, release_notes=release_notes, prev_version=Version.parse(prev_version_str), ).write_if_possible()
with open(mock_output_file, encoding="utf-8", newline=os.linesep) as rfd: Expand All @@ -137,6 +143,7 @@ def test_version_github_actions_output_writes_to_github_output_if_available( assert f"{BASE_VCS_URL}/releases/tag/v{version_str}" == action_outputs["link"] assert f"v{version_str}" == action_outputs["tag"] assert commit_sha == action_outputs["commit_sha"] assert prev_version_str == action_outputs["previous_version"] assert release_notes == action_outputs["release_notes"]
Expand Down