fix(release): harden review gate diagnostics
This commit is contained in:
@@ -74,6 +74,40 @@ class ReleasePlanGuidanceTests(unittest.TestCase):
|
||||
self.assertEqual("preview_source_release", plan.recommended_action.id)
|
||||
self.assertIn("Preview Tag + Publish", plan.recommended_action.remediation)
|
||||
|
||||
def test_malformed_version_metadata_is_a_structured_blocker(self) -> None:
|
||||
cases = (
|
||||
("package.json", "{not-json\n", "JSONDecodeError"),
|
||||
("pyproject.toml", "[project\n", "TOMLDecodeError"),
|
||||
)
|
||||
for relative_path, malformed, error_name in cases:
|
||||
with self.subTest(relative_path=relative_path):
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
workspace = Path(temp_dir)
|
||||
repo_path = workspace / "govoplan-files"
|
||||
repo_path.mkdir()
|
||||
(repo_path / "pyproject.toml").write_text(
|
||||
'[project]\nname = "govoplan-files"\nversion = "1.2.4"\n',
|
||||
encoding="utf-8",
|
||||
)
|
||||
(repo_path / relative_path).write_text(malformed, encoding="utf-8")
|
||||
|
||||
plan = build_selective_release_plan(
|
||||
dashboard(workspace=workspace, version="1.2.4"),
|
||||
selected_repos=("govoplan-files",),
|
||||
repo_versions={"govoplan-files": "1.2.4"},
|
||||
)
|
||||
|
||||
self.assertEqual("blocked", plan.status)
|
||||
finding = next(
|
||||
item
|
||||
for item in plan.gate_findings
|
||||
if item.code == "repository_version_metadata_unreadable"
|
||||
)
|
||||
self.assertEqual("govoplan-files", finding.repo)
|
||||
self.assertIn(error_name, finding.message)
|
||||
self.assertIn("Repair the malformed TOML or JSON", finding.remediation)
|
||||
self.assertEqual("resolve_release_gate", plan.recommended_action.id)
|
||||
|
||||
def test_webui_renders_recommendation_and_remediation(self) -> None:
|
||||
webui = (RELEASE_ROOT / "webui" / "index.html").read_text(encoding="utf-8")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user