test(api-discovery-test): add 3 assertions for tier=engine
Covers the new engine-tier validate_readme_structure behavior: complete engine README, missing-API detection, and the relaxed Badges pattern that accepts arbitrary bold key:value lines (engine has no Lib-ID prefix). Total assertion-count grows from 52 to 55. Coverage table updated. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -13,8 +13,8 @@ Per Fault-Injection-Audit-Convention (2026-05-16):
|
||||
| `diff_surface` | 5 | Equal (no diff), surface-superset (missing), doc-superset (stale) |
|
||||
| `grep_engine_calls` | 5 | 3 unique calls, no-calls edge |
|
||||
| `generate_topology_block` | 6 | Lib-with-deps+engine, asset-lib (no deps, no engine) |
|
||||
| `validate_readme_structure` | 8 | Complete core, missing-API core, missing-Topology, missing-Badges, community-tier-no-enforcement |
|
||||
| **TOTAL** | **52** | |
|
||||
| `validate_readme_structure` | 11 | Complete core, missing-API core, missing-Topology, missing-Badges, community-tier-no-enforcement, engine-tier-complete, engine-tier-missing-API, engine-tier-naked-badges |
|
||||
| **TOTAL** | **55** | |
|
||||
|
||||
### Tested-Surface
|
||||
- All 6 public functions of `lib-core.api-discovery` v0.1.0.
|
||||
|
||||
48
init.lua
48
init.lua
@@ -321,6 +321,54 @@ Sig.
|
||||
-- Tier community: lockerer
|
||||
local r3 = api.validate_readme_structure(missing_api, "community")
|
||||
engine.test.equals(#r3.missing_sections, 0, "validate: tier=community -> no enforcement")
|
||||
|
||||
-- Tier engine: same structure as core but flexible Badges
|
||||
local engine_md = [[
|
||||
# sporel-engine
|
||||
|
||||
**Version:** 0.1.0
|
||||
**License:** Proprietary
|
||||
|
||||
## Topology
|
||||
<!-- topology:start -->
|
||||
<!-- topology:end -->
|
||||
|
||||
## API
|
||||
text
|
||||
|
||||
## References
|
||||
- spec
|
||||
]]
|
||||
local r_engine = api.validate_readme_structure(engine_md, "engine")
|
||||
engine.test.equals(#r_engine.missing_sections, 0, "validate: engine README -> no missing")
|
||||
|
||||
-- Missing API in engine README -> still detected
|
||||
local engine_no_api = [[
|
||||
# sporel-engine
|
||||
|
||||
**Version:** 0.1.0
|
||||
|
||||
## Topology
|
||||
<!-- topology:start -->
|
||||
<!-- topology:end -->
|
||||
|
||||
## References
|
||||
]]
|
||||
local r_engine_no_api = api.validate_readme_structure(engine_no_api, "engine")
|
||||
engine.test.assert(#r_engine_no_api.missing_sections > 0, "validate: engine without API -> reports missing")
|
||||
|
||||
-- Naked Badges line (no Lib-ID prefix) accepted in engine tier
|
||||
local engine_naked = [[
|
||||
# sporel-engine
|
||||
**Anything:** value
|
||||
]]
|
||||
local r_engine_naked = api.validate_readme_structure(engine_naked, "engine")
|
||||
-- Just verify Badges-check doesn't fail because of missing "Lib-ID:" prefix
|
||||
local badges_missing = false
|
||||
for _, s in ipairs(r_engine_naked.missing_sections) do
|
||||
if s == "Badges" then badges_missing = true end
|
||||
end
|
||||
engine.test.assert(not badges_missing, "validate: engine tier accepts naked badges")
|
||||
end
|
||||
|
||||
engine.exit(engine.test.failures())
|
||||
|
||||
Reference in New Issue
Block a user