From d2f9381445ef979e45521dfa316ebd3ef9cd1719 Mon Sep 17 00:00:00 2001 From: BLC Core Studio <207100624+BLCCoreStudio@users.noreply.github.com> Date: Sat, 3 Oct 2026 02:18:56 +0300 Subject: [PATCH 1/2] test: keep release version and changelog in sync --- tests/test_release_metadata.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 tests/test_release_metadata.py diff --git a/tests/test_release_metadata.py b/tests/test_release_metadata.py new file mode 100644 index 0000000..9a06f46 --- /dev/null +++ b/tests/test_release_metadata.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +import re +import tomllib +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] + + +def test_project_version_has_matching_changelog_release_heading() -> None: + project = tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8")) + version = project["project"]["version"] + changelog = (ROOT / "CHANGELOG.md").read_text(encoding="utf-8") + + release_heading = re.compile(rf"^##\s+{re.escape(version)}(?:\s+—\s+\d{{4}}-\d{{2}}-\d{{2}})?\s*$", re.MULTILINE) + assert release_heading.search(changelog), ( + f"pyproject.toml declares {version}, but CHANGELOG.md has no matching release heading" + ) From c2fe9f406784add4563fbb7877e00a04b76b78aa Mon Sep 17 00:00:00 2001 From: BLC Core Studio <207100624+BLCCoreStudio@users.noreply.github.com> Date: Sat, 3 Oct 2026 13:01:55 +0300 Subject: [PATCH 2/2] style: satisfy release metadata lint --- tests/test_release_metadata.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test_release_metadata.py b/tests/test_release_metadata.py index 9a06f46..11fae3c 100644 --- a/tests/test_release_metadata.py +++ b/tests/test_release_metadata.py @@ -12,7 +12,10 @@ def test_project_version_has_matching_changelog_release_heading() -> None: version = project["project"]["version"] changelog = (ROOT / "CHANGELOG.md").read_text(encoding="utf-8") - release_heading = re.compile(rf"^##\s+{re.escape(version)}(?:\s+—\s+\d{{4}}-\d{{2}}-\d{{2}})?\s*$", re.MULTILINE) + release_heading = re.compile( + rf"^##\s+{re.escape(version)}(?:\s+—\s+\d{{4}}-\d{{2}}-\d{{2}})?\s*$", + re.MULTILINE, + ) assert release_heading.search(changelog), ( f"pyproject.toml declares {version}, but CHANGELOG.md has no matching release heading" )