fixes on validate
This commit is contained in:
parent
28f81a3af9
commit
23a093f9ab
@ -89,6 +89,10 @@ def _record_id(errors: list[str], seen: set[str], identifier: str) -> None:
|
|||||||
def _requires_file(discussion: dict, artifact: dict, kind: str) -> bool:
|
def _requires_file(discussion: dict, artifact: dict, kind: str) -> bool:
|
||||||
if kind == "lessons":
|
if kind == "lessons":
|
||||||
return True
|
return True
|
||||||
|
if discussion.get("status") == "done":
|
||||||
|
return False
|
||||||
|
if artifact.get("status") == "done":
|
||||||
|
return False
|
||||||
if discussion.get("status") == "abandoned":
|
if discussion.get("status") == "abandoned":
|
||||||
return artifact.get("status") != "abandoned"
|
return artifact.get("status") != "abandoned"
|
||||||
return True
|
return True
|
||||||
|
|||||||
@ -195,6 +195,48 @@ class CliTest(unittest.TestCase):
|
|||||||
self.assertEqual(item["lessons"][0]["id"], "LSN-0001")
|
self.assertEqual(item["lessons"][0]["id"], "LSN-0001")
|
||||||
self.assertFalse((discussion / "workflow" / "agendas" / "AGD-0001-demo.md").exists())
|
self.assertFalse((discussion / "workflow" / "agendas" / "AGD-0001-demo.md").exists())
|
||||||
|
|
||||||
|
def test_validate_allows_done_discussion_with_historical_workflow_entries(self) -> None:
|
||||||
|
with TempDir() as root:
|
||||||
|
main(["--root", str(root), "init"])
|
||||||
|
discussion = root / "discussion"
|
||||||
|
lesson = discussion / "lessons" / "DSC-0001-demo"
|
||||||
|
lesson.mkdir()
|
||||||
|
lesson_file = lesson / "LSN-0001-demo.md"
|
||||||
|
lesson_file.write_text("---\nid: LSN-0001\n---\n# Demo\n", encoding="utf-8")
|
||||||
|
|
||||||
|
records = [
|
||||||
|
{"type": "meta", "next_id": {"DSC": 2, "AGD": 2, "DEC": 2, "PLN": 2, "LSN": 2, "CLSN": 1}},
|
||||||
|
{
|
||||||
|
"type": "discussion",
|
||||||
|
"id": "DSC-0001",
|
||||||
|
"status": "done",
|
||||||
|
"ticket": "demo",
|
||||||
|
"title": "Demo",
|
||||||
|
"created_at": "2026-05-08",
|
||||||
|
"updated_at": "2026-05-08",
|
||||||
|
"tags": [],
|
||||||
|
"agendas": [{"id": "AGD-0001", "file": "AGD-0001-demo.md", "status": "done"}],
|
||||||
|
"decisions": [{"id": "DEC-0001", "file": "DEC-0001-demo.md", "status": "accepted"}],
|
||||||
|
"plans": [{"id": "PLN-0001", "file": "PLN-0001-demo.md", "status": "done"}],
|
||||||
|
"lessons": [
|
||||||
|
{
|
||||||
|
"id": "LSN-0001",
|
||||||
|
"file": "discussion/lessons/DSC-0001-demo/LSN-0001-demo.md",
|
||||||
|
"status": "done",
|
||||||
|
}
|
||||||
|
],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
(discussion / "index.ndjson").write_text(
|
||||||
|
"\n".join(json.dumps(record, separators=(",", ":")) for record in records) + "\n",
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
|
||||||
|
stdout = io.StringIO()
|
||||||
|
with contextlib.redirect_stdout(stdout):
|
||||||
|
self.assertEqual(main(["--root", str(root), "validate"]), 0)
|
||||||
|
self.assertIn("validation passed", stdout.getvalue())
|
||||||
|
|
||||||
def test_inspect_context_next_actions_and_backup(self) -> None:
|
def test_inspect_context_next_actions_and_backup(self) -> None:
|
||||||
with TempDir() as root:
|
with TempDir() as root:
|
||||||
main(["--root", str(root), "init"])
|
main(["--root", str(root), "init"])
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user