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:
@@ -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.
|
||||
|
||||
58
init.lua
58
init.lua
@@ -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 =====
|
||||
|
||||
Reference in New Issue
Block a user