Skip to content

Commit ccb53cf

Browse files
authored
Merge pull request #416 from hdamker/fix/changelog-dependency-tag-plus-version
Align the CHANGELOG's Commonalities/ICM dependency line with release-metadata.yaml
2 parents d4f1a31 + eab6ee3 commit ccb53cf

2 files changed

Lines changed: 75 additions & 18 deletions

File tree

‎release_automation/scripts/snapshot_creator.py‎

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,6 @@ def create_snapshot(
340340
api_versions,
341341
metadata,
342342
repo_name,
343-
commonalities_version=commonalities_version,
344-
icm_version=icm_version,
345343
compare_base=compare_base,
346344
api_comparison_baselines=api_comparison_baselines,
347345
)
@@ -991,8 +989,6 @@ def _generate_changelog(
991989
api_versions: Dict[str, str],
992990
metadata: Dict[str, Any],
993991
repo_name: str,
994-
commonalities_version: str = "",
995-
icm_version: str = "",
996992
compare_base: Any = COMPARE_BASE_UNSET,
997993
api_comparison_baselines: Optional[Dict[str, str]] = None,
998994
) -> str:
@@ -1020,14 +1016,6 @@ def _generate_changelog(
10201016
baseline = api_comparison_baselines.get(api.get("api_name", ""))
10211017
if baseline:
10221018
api["comparison_baseline"] = baseline
1023-
if commonalities_version:
1024-
changelog_metadata.setdefault("dependencies", {})[
1025-
"commonalities_release"
1026-
] = commonalities_version
1027-
if icm_version:
1028-
changelog_metadata.setdefault("dependencies", {})[
1029-
"identity_consent_management_release"
1030-
] = icm_version
10311019

10321020
generator = ChangelogGenerator()
10331021
content = generator.generate_draft(

‎release_automation/tests/test_snapshot_creator.py‎

Lines changed: 75 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,74 @@ def test_successful_snapshot_creation(
431431
assert result.release_pr_number == 42
432432
assert "quality-on-demand" in result.api_versions
433433

434+
@patch("release_automation.scripts.snapshot_creator.ChangelogGenerator")
435+
@patch("release_automation.scripts.snapshot_creator.tempfile.mkdtemp")
436+
@patch("release_automation.scripts.snapshot_creator.shutil.rmtree")
437+
@patch("release_automation.scripts.snapshot_creator.GitOperations")
438+
@patch("builtins.open", create=True)
439+
def test_changelog_keeps_release_tag_in_dependency_line(
440+
self,
441+
mock_open,
442+
mock_git_ops_class,
443+
mock_rmtree,
444+
mock_mkdtemp,
445+
mock_changelog_cls,
446+
snapshot_creator,
447+
mock_github_client,
448+
mock_metadata_generator,
449+
sample_release_plan,
450+
):
451+
"""CHANGELOG's dependency line states the release tag, not just the version.
452+
453+
release-metadata.yaml's own dependencies.commonalities_release carries
454+
"<tag> (<version>)"; the CHANGELOG draft must reuse that string as-is
455+
instead of resolving it down to the bare semantic version.
456+
"""
457+
mock_mkdtemp.return_value = "/tmp/test-snapshot"
458+
459+
mock_git_ops = MagicMock()
460+
mock_git_ops_class.return_value = mock_git_ops
461+
mock_git_ops.create_pr.return_value = PullRequestInfo(
462+
number=42, url="https://github.com/owner/repo/pull/42"
463+
)
464+
mock_github_client.get_releases.return_value = []
465+
mock_github_client.generate_release_notes.return_value = None
466+
467+
mock_metadata_generator.generate.return_value = {
468+
"repository": {
469+
"repository_name": "TestRepo-QoD",
470+
"release_tag": "r4.1",
471+
"release_type": "pre-release-rc",
472+
},
473+
"apis": [{"api_name": "quality-on-demand", "api_version": "3.2.0-rc.1"}],
474+
"dependencies": {
475+
"commonalities_release": "r3.4 (0.7.0-rc.1)",
476+
"identity_consent_management_release": "r3.3 (0.5.0-rc.1)",
477+
},
478+
}
479+
480+
mock_changelog_instance = Mock()
481+
mock_changelog_instance.generate_draft.return_value = "# r4.1\n\nContent\n"
482+
mock_changelog_instance.write_changelog.return_value = (
483+
"CHANGELOG/CHANGELOG-r4.md"
484+
)
485+
mock_changelog_cls.return_value = mock_changelog_instance
486+
487+
config = SnapshotConfig(release_tag="r4.1")
488+
snapshot_creator.create_snapshot(sample_release_plan, config)
489+
490+
draft_metadata = mock_changelog_instance.generate_draft.call_args.kwargs[
491+
"metadata"
492+
]
493+
assert (
494+
draft_metadata["dependencies"]["commonalities_release"]
495+
== "r3.4 (0.7.0-rc.1)"
496+
)
497+
assert (
498+
draft_metadata["dependencies"]["identity_consent_management_release"]
499+
== "r3.3 (0.5.0-rc.1)"
500+
)
501+
434502
@patch("release_automation.scripts.snapshot_creator.tempfile.mkdtemp")
435503
@patch("release_automation.scripts.snapshot_creator.shutil.rmtree")
436504
@patch("release_automation.scripts.snapshot_creator.GitOperations")
@@ -1371,10 +1439,10 @@ def test_generate_changelog_creates_file(
13711439
mock_instance.write_changelog.assert_called_once()
13721440

13731441
@patch("release_automation.scripts.snapshot_creator.ChangelogGenerator")
1374-
def test_generate_changelog_uses_commonalities_version_only(
1442+
def test_generate_changelog_keeps_metadata_dependency_display_string(
13751443
self, mock_gen_cls, snapshot_creator, mock_github_client, tmp_path
13761444
):
1377-
"""CHANGELOG generation uses semantic version instead of metadata display string."""
1445+
"""CHANGELOG generation keeps release-metadata.yaml's tag+version string."""
13781446
mock_github_client.get_releases.return_value = []
13791447
mock_github_client.generate_release_notes.return_value = None
13801448

@@ -1399,15 +1467,16 @@ def test_generate_changelog_uses_commonalities_version_only(
13991467
{},
14001468
metadata,
14011469
"TestRepo-QoD",
1402-
commonalities_version="0.7.0-rc.1",
1403-
icm_version="0.5.0-rc.1",
14041470
)
14051471

14061472
draft_metadata = mock_instance.generate_draft.call_args.kwargs["metadata"]
1407-
assert draft_metadata["dependencies"]["commonalities_release"] == "0.7.0-rc.1"
1473+
assert (
1474+
draft_metadata["dependencies"]["commonalities_release"]
1475+
== "r4.1 (0.7.0-rc.1)"
1476+
)
14081477
assert (
14091478
draft_metadata["dependencies"]["identity_consent_management_release"]
1410-
== "0.5.0-rc.1"
1479+
== "r4.1 (0.5.0-rc.1)"
14111480
)
14121481

14131482
@patch("release_automation.scripts.snapshot_creator.ChangelogGenerator")

0 commit comments

Comments
 (0)