From 0526541133e1d4cc2c4b7f291897734b120e7ebc Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Wed, 16 Sep 2026 19:42:30 +0200 Subject: test: make the layout assertion actually able to fail The out-of-grid check iterated `G.layout or {}`. With layout unexported that walks an empty table, so the block passed vacuously and the test could never detect the very condition it existed to check. Confirmed by unexporting layout and watching the suite still pass. Drops the fallback and asserts the export first. Verified by mutation: unexporting layout now fails with "dashboard.lua must export layout", and moving the clock to col=5 fails with "layout entry out of columns", so both paths have teeth. The plan's Step 3 expected a failure that could not happen; it now says what the failure looks like and warns that a pass there means the test is broken rather than the code. Co-Authored-By: Claude Opus 5 --- docs/superpowers/plans/2026-09-16-conky-lua-dashboard.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'docs/superpowers') diff --git a/docs/superpowers/plans/2026-09-16-conky-lua-dashboard.md b/docs/superpowers/plans/2026-09-16-conky-lua-dashboard.md index a77c30b..c57bcbc 100644 --- a/docs/superpowers/plans/2026-09-16-conky-lua-dashboard.md +++ b/docs/superpowers/plans/2026-09-16-conky-lua-dashboard.md @@ -1134,7 +1134,12 @@ assert(math.abs(span.w - (a.w * 2 + G.GAP)) < 0.01, 'span must absorb the gap') -- The shipped layout must not place anything outside the declared grid, which -- is the mistake a user editing the table will actually make. -for _, e in ipairs(G.layout or {}) do +-- +-- No `or {}` fallback here: with one, an unexported layout makes ipairs walk an +-- empty table and the whole block passes vacuously, which is exactly the bug +-- this assertion is supposed to catch. +assert(G.layout, 'dashboard.lua must export layout') +for _, e in ipairs(G.layout) do assert(e.col >= 1 and e.col + (e.w or 1) - 1 <= G.COLS, 'layout entry out of columns: ' .. tostring(e.widget)) assert(e.row >= 1 and e.row + (e.h or 1) - 1 <= G.ROWS, @@ -1148,7 +1153,12 @@ print('test_layout: all assertions passed') Run: `cd ~/Programming/GIT/conky-theme-udt && lua test/test_layout.lua` -Expected: failure. The last block reads `G.layout`, which Step 1 did not export. +Expected: failure with `dashboard.lua must export layout`. The last block +asserts on `G.layout`, which Step 1 deliberately did not export. + +If this run PASSES, the test is broken, not the code: an `ipairs(G.layout or {})` +would walk an empty table and pass vacuously. Check the assertion is there +before continuing. - [ ] **Step 4: Export the layout too** -- cgit v1.2.3