Skip to content

Commit 6790ab1

Browse files
authored
fix(release): collapse double blank line after Unreleased heading (#114)
1 parent 27133b5 commit 6790ab1

2 files changed

Lines changed: 6 additions & 2 deletions

File tree

scripts/update_changelog.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ def update_changelog_text(text: str, ver: str, date: str) -> str:
2424
f"- Release {ver}\n\n"
2525
)
2626
return re.sub(
27-
r"^(## \[Unreleased\]\s*\n)(.*?)(?=^## \[|\Z)",
28-
lambda match: match.group(1) + "\n" + section,
27+
r"^## \[Unreleased\]\s*\n.*?(?=^## \[|\Z)",
28+
lambda _match: f"## [Unreleased]\n\n{section}",
2929
text,
3030
count=1,
3131
flags=re.M | re.S,

tests/test_update_changelog.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ def test_empty_unreleased_inserts_version_without_duplicate_heading():
3434
assert "## [0.1.2] - 2026-05-20" in result
3535
assert "The format is based on [Keep a Changelog]" in result.split("## [0.1.2]")[0]
3636
assert result.index("## [0.1.2]") < result.index("## [0.1.1]")
37+
assert "## [Unreleased]\n\n## [0.1.2]" in result
38+
assert "\n\n\n" not in result
3739

3840

3941
def test_populated_unreleased_moves_notes_into_new_section():
@@ -46,3 +48,5 @@ def test_populated_unreleased_moves_notes_into_new_section():
4648
assert "- New widget." in result
4749
assert result.index("- New widget.") < result.index("## [0.1.1]")
4850
assert "The format is based on [Keep a Changelog]" in result.split("## [0.1.2]")[0]
51+
assert "## [Unreleased]\n\n## [0.1.2]" in result
52+
assert "\n\n\n" not in result

0 commit comments

Comments
 (0)