test(api-discovery): add comment-strip and namespace-less assertions

Adds 9 new assertions covering the two recent api-discovery fixes:

parse_lua_surface (4 new):
- commented-out function-declarations are stripped (function-form and
  assignment-form)
- inline-comment after a real declaration does not break the match

parse_readme_api (5 new):
- namespace-less H3 headers (e.g. \`run_tests(ctx)\`) are captured
- mixed namespaced + namespace-less in the same section captures both
  without duplicates

Coverage Statement updated: 43 -> 52 total assertions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Axel Meyer
2026-05-16 17:51:40 +02:00
parent efa1a5ebcc
commit 338fd050de
2 changed files with 61 additions and 3 deletions

View File

@@ -8,13 +8,13 @@ Per Fault-Injection-Audit-Convention (2026-05-16):
| Function | Assertion-Count | Coverage |
|---|---|---|
| `parse_lua_surface` | 15 | Happy-path (2 public + 1 private), empty-source edge, sugar-form (`function M.foo`), mixed-form (sugar + explicit) |
| `parse_readme_api` | 4 | Standard H3-pattern, no-API-section edge |
| `parse_lua_surface` | 19 | Happy-path (2 public + 1 private), empty-source edge, sugar-form (`function M.foo`), mixed-form (sugar + explicit), comment-stripping (commented stubs, inline-comment after code) |
| `parse_readme_api` | 9 | Standard H3-pattern, no-API-section edge, namespace-less function (e.g. `run_tests`), mixed namespaced + namespace-less |
| `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** | **43** | |
| **TOTAL** | **52** | |
### Tested-Surface
- All 6 public functions of `lib-core.api-discovery` v0.1.0.

View File

@@ -58,6 +58,28 @@ return M
for _, n in ipairs(mixed_surface.public) do mixed_set[n] = true end
engine.test.assert(mixed_set["gamma"], "parse_lua_surface: mixed-form gamma present")
engine.test.assert(mixed_set["delta"], "parse_lua_surface: mixed-form delta present")
-- Comment-stripping: commented stubs should NOT appear
local commented_src = [[
local M = {}
function M.real_func() end
-- function M.commented_stub() end
-- M.also_commented = function() end
return M
]]
local commented_surface = api.parse_lua_surface(commented_src)
engine.test.equals(#commented_surface.public, 1, "parse_lua_surface: comment-stripping leaves 1 public")
engine.test.equals(commented_surface.public[1], "real_func", "parse_lua_surface: only real_func survives")
-- Inline comment after code: code-line should still be matched
local inline_src = [[
local M = {}
function M.with_inline() end -- this is a comment
return M
]]
local inline_surface = api.parse_lua_surface(inline_src)
engine.test.equals(#inline_surface.public, 1, "parse_lua_surface: inline-comment doesn't break code-match")
engine.test.equals(inline_surface.public[1], "with_inline", "parse_lua_surface: with_inline detected")
end
-- ===== parse_readme_api =====
@@ -86,6 +108,42 @@ Stuff.
-- Edge: no API section
local no_api = api.parse_readme_api("# Just abstract\nNothing else.")
engine.test.equals(#no_api.documented, 0, "parse_readme_api: no API-section = empty")
-- Namespace-less function (e.g., run_tests for test-libs)
local no_ns_md = [[
# test-lib
## API
### `run_tests(ctx)`
**Syntax:** `M.run_tests(ctx)`
## References
]]
local no_ns = api.parse_readme_api(no_ns_md)
engine.test.equals(#no_ns.documented, 1, "parse_readme_api: namespace-less 1 documented")
engine.test.equals(no_ns.documented[1], "run_tests", "parse_readme_api: namespace-less captures run_tests")
-- Mixed: namespace + namespace-less in same section
local mixed_md = [[
# foo
## API
### `foo.bar()`
text
### `helper()`
text
## References
]]
local mixed = api.parse_readme_api(mixed_md)
local set = {}
for _, n in ipairs(mixed.documented) do set[n] = true end
engine.test.assert(set["bar"], "parse_readme_api: mixed captures namespaced 'bar'")
engine.test.assert(set["helper"], "parse_readme_api: mixed captures namespace-less 'helper'")
engine.test.equals(#mixed.documented, 2, "parse_readme_api: mixed total 2 (no dup)")
end
-- ===== diff_surface =====