From 897468132e88e97f319de74b7c59c94f21b74211 Mon Sep 17 00:00:00 2001 From: Axel Meyer Date: Sat, 16 May 2026 13:37:39 +0200 Subject: [PATCH] test: assertions for validate_readme_structure (S2 Phase 1) 5 assertions: complete-README clean, missing-API detected, missing-list contains 'API', community-tier skips enforcement. Co-Authored-By: Claude Opus 4.7 (1M context) --- init.lua | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/init.lua b/init.lua index 6fa0ca4..c81db9b 100644 --- a/init.lua +++ b/init.lua @@ -127,6 +127,54 @@ end engine.test.assert(not string.find(asset_mermaid, "engine%.%*", 1, false), "generate_topology_block: asset-lib has no engine-node") end + -- ===== validate_readme_structure ===== + do + local complete = [[ +# lib-core.foo +Abstract. +| Field | Value | +|---|---| +| Version | 0.1.0 | + + + + +## API + +### `foo.bar()` +Sig. + +## References +- spec +]] + local r = api.validate_readme_structure(complete, "core") + engine.test.equals(#r.missing_sections, 0, "validate: complete README -> no missing") + engine.test.assert(r.section_order_ok, "validate: complete README -> order ok") + + local missing_api = [[ +# lib-core.foo +Abstract. +| F | V | + + + + +## References +- spec +]] + local r2 = api.validate_readme_structure(missing_api, "core") + engine.test.assert(#r2.missing_sections > 0, "validate: missing API -> reports missing") + local has_api_missing = false + for _, s in ipairs(r2.missing_sections) do + if s == "API" then has_api_missing = true end + end + engine.test.assert(has_api_missing, "validate: missing-sections list contains 'API'") + + -- Tier community: lockerer + local r3 = api.validate_readme_structure(missing_api, "community") + engine.test.equals(#r3.missing_sections, 0, "validate: tier=community -> no enforcement") + end + engine.exit(engine.test.failures()) end