chore(suite): narrow constructs.lua skip with per-failure tracking#282
Conversation
The A42 paren-adjust PR landed a single 225..313 mega-skip on constructs.lua with reason "pending separate triage". Replace it with five focused ranges, each tied to a GitHub issue (or, for the checkload entry, awaiting one). - 225..231 → #279 (debug.getinfo "n" returns nil) - 237 → #280 (os.time missing) - 248 → #280 (concat depends on _ENV.GLOB1 from os.time) - 284..299 → #281 (level=4 short-circuit harness failure) - 302..311 → checkload format mismatch (downstream, no issue yet) A reduced standalone repro showed that load() itself works — the suite runner installs it. The harness fails on deep and/or composition unrelated to load(); reclassified as :executor in #281. Also adds: - test/lua/vm/debug_getinfo_name_test.exs — pins the current nil behavior plus a @tag :skip target test that flips once #279 is fixed. - .agents/plans/A43-os-stdlib.md — fix-now plan for #280 (small Lua.VM.Stdlib.Os module covering time/date/clock/difftime/getenv). Constructs.lua now reports "25 lines skipped, 5 ranges" and the lua53 suite stays at 13/13 passing.
Automated review (round 1)Verdict: request changes — this PR is stale and conflicts with Blockers1.
2. 3. Direct conflict on 4. A43 plan-id collision. RecommendationRebase onto current Generated by automated review tooling. |
Merge main and rebuild the constructs.lua triage on top of it. The os stdlib (#289) and debug.getinfo name resolution (#290) both landed, so the debug.getinfo block (line 226), the os.time assignment (line 237), and the GLOB1 concat (line 248) all pass now and no longer need skipping. Empirically re-triaged constructs.lua against the current tree: the only remaining failures are the short-circuit harness (284..299, level=4 combination explosion exceeds the test timeout) and the checkload block (302..311, load() error messages do not contain the expected 'expected'/'too long' substrings). Replace the single 232..313 entry with these two narrowed, disjoint ranges. Drops the duplicate A43-os-stdlib.md plan (the os work shipped via A43-os-library.md / #289) and the debug.getinfo name pinning test (superseded by the tests #290 shipped on main). Plan: A26
Automated review — round 2Reviewed the current remote state of Validation run locally (detached HEAD off the branch):
Findings1. (major) 2. (minor) PR description is stale vs. the round-2 diff. 3. (nit) No plan-id references in the skip reasons, scope |
The 284..299 short-circuit harness skip pointed at the closed #281 with an :executor category, implying a live VM defect. The VM result is correct (verified green by short_circuit_test.exs --include slow); the only remaining reason for the skip is the 60s ExUnit default timeout. Recategorize as :performance, lead the reason with the timeout, and drop the dependence on the closed issue. Split the 302..311 checkload skip into 303..304 ('expected') and 306..311 ('too long') so each disjoint failure tracks its own cause and no comment/blank lines are needlessly skipped. Plan: A26
Automated review — round 3Re-reviewed the current remote tip of Verdict: LGTM — ship it. Verified against the actual tree:
No blocking or actionable findings. |
Summary
Narrow the single
constructs.luamega-skip (left by A42 / #278) down to thespecific lines that still fail against the current tree, each with a standalone
reason.
The os stdlib (#289) and
debug.getinfoname resolution (#290) shipped on main,so the earlier
debug.getinfo,os.time, andGLOB1-concat skips are gone —those lines pass now. What remains are the short-circuit harness (a timeout, not
a VM defect) and the two
checkloaderror-message assertions.Skip ranges (was: single mega-skip, "pending separate triage")
createcases(4)plus the load()/exec loop over all 204105 combinations exceeds the 60s ExUnit default timeout. The VM result is correct — verified green bytest/lua/vm/short_circuit_test.exs --include slow.checkloadexpects the load() error to containexpected; the suite-runner load() returnsparse error: ...for syntax errors.checkloadexpects the load() error to containtoo long; the compiler has no control-structure-too-long check.Suite delta
constructs.lua: single mega-skip → three narrow, disjoint ranges.Out of scope
performance ceiling, not a VM bug).
load()error templates match PUC-Lua'sexpected/too longsubstrings, and adding a control-structure-too-long compiler check.Test plan
mix testmix test --only lua53— 13 passedmix format/mix compile --warnings-as-errorscleanRelated: #254 / #278 (A42 paren-adjust).