diff --git a/src/setup.py b/src/setup.py index 75d055d..d8344b0 100644 --- a/src/setup.py +++ b/src/setup.py @@ -129,6 +129,7 @@ def run_setup( cwd: Path | None = None, trusted: bool = True, last_seen_version: str | None = None, + current_version: str | None = None, ) -> SetupReport: root = cwd or Path(__file__).resolve().parent.parent prefetches = [ @@ -136,8 +137,13 @@ def run_setup( start_keychain_prefetch(), start_project_scan(root), ] + # When the package is not installed via pip (dev / source checkout), + # `_read_package_version()` returns '0.0.0' — which makes any non-trivial + # `last_seen_version` compare as "newer than current" and suppresses + # release notes. Allow callers (tests, dev runs) to override. + effective_version = current_version if current_version is not None else _read_package_version() release_notes_payload = check_for_release_notes( - current_version=_read_package_version(), + current_version=effective_version, last_seen_version=last_seen_version, cwd=root, ) diff --git a/tests/test_setup_runtime_checks.py b/tests/test_setup_runtime_checks.py index 02de29a..c1b0350 100644 --- a/tests/test_setup_runtime_checks.py +++ b/tests/test_setup_runtime_checks.py @@ -44,7 +44,16 @@ def test_run_setup_reports_runtime_and_release_notes(self) -> None: (Path(tmp) / 'CHANGELOG.md').write_text( '# Changelog\n\n## 9.9.9\n- big release\n', encoding='utf-8', ) - report = run_setup(cwd=Path(tmp), trusted=True, last_seen_version='0.0.1') + # Override current_version because in a source checkout the + # installed package metadata reports 0.0.0, which would make + # last_seen_version='0.0.1' compare as already-current and + # suppress all release notes. + report = run_setup( + cwd=Path(tmp), + trusted=True, + last_seen_version='0.0.1', + current_version='9.9.9', + ) self.assertIsInstance(report, SetupReport) self.assertGreaterEqual(len(report.runtime_checks), 3) self.assertIn('big release', report.release_notes)