From 17e5dc6ee96c0028f730f661bdeaf1d888f82ffe Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Sat, 28 Mar 2026 01:59:52 +0300 Subject: feat: automate changelog-backed releases --- scripts/test_changelog.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 scripts/test_changelog.py (limited to 'scripts/test_changelog.py') diff --git a/scripts/test_changelog.py b/scripts/test_changelog.py new file mode 100644 index 00000000..cf9e23ac --- /dev/null +++ b/scripts/test_changelog.py @@ -0,0 +1,35 @@ +from __future__ import annotations + +import unittest + +from scripts.changelog import extract_section_body, prepare_release + + +class ChangelogScriptTests(unittest.TestCase): + def test_prepare_release_moves_unreleased_into_versioned_section(self) -> None: + original = """# Changelog\n\n## Unreleased\n\n### Fixed\n- Smoothed Claude flapping.\n\n## [0.1.0] - 2026-03-27\n\n### Added\n- Initial release.\n""" + + updated = prepare_release(original, "0.1.1", "2026-03-28") + + self.assertIn("## Unreleased\n\n## [0.1.1] - 2026-03-28", updated) + self.assertIn("### Fixed\n- Smoothed Claude flapping.", updated) + self.assertIn("## [0.1.0] - 2026-03-27", updated) + + def test_prepare_release_accepts_bracketed_unreleased_heading(self) -> None: + original = """# Changelog\n\n## [Unreleased]\n\n### Added\n- Added sounds.\n""" + + updated = prepare_release(original, "0.1.1", "2026-03-28") + + self.assertIn("## Unreleased\n\n## [0.1.1] - 2026-03-28", updated) + self.assertIn("### Added\n- Added sounds.", updated) + + def test_extract_section_body_returns_requested_version_only(self) -> None: + changelog = """# Changelog\n\n## Unreleased\n\n## [0.1.1] - 2026-03-28\n\n### Fixed\n- Smoothed Claude flapping.\n\n## [0.1.0] - 2026-03-27\n\n### Added\n- Initial release.\n""" + + body = extract_section_body(changelog, "0.1.1") + + self.assertEqual(body, "### Fixed\n- Smoothed Claude flapping.\n") + + +if __name__ == "__main__": + unittest.main() -- cgit v1.2.3