From 7a81eb71774fc430b9eb0bd17d042ba659a4c8ca Mon Sep 17 00:00:00 2001 From: Gaurav Dubey Date: Tue, 14 Jul 2026 17:36:57 +0530 Subject: [PATCH] test(pi): scope mapping assertions to the table, not whole file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pi tokens (subagent, pi-subagents, Task, TODO.md) also appear in the surrounding prose, so matching the whole file passed even with the mapping table deleted — the exact regression this test exists to catch. Filter to table rows (lines starting with '|') so the assertion fails when the table is gone and passes on dev. Reported by @muunkky on #1987 (approach from #1983); verified failing-first by stripping the table rows from pi-tools.md. --- tests/pi/test-pi-extension.mjs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tests/pi/test-pi-extension.mjs b/tests/pi/test-pi-extension.mjs index 14380e42..d7af9cb2 100644 --- a/tests/pi/test-pi-extension.mjs +++ b/tests/pi/test-pi-extension.mjs @@ -122,7 +122,16 @@ test('pi tools reference documents pi-specific mappings', async () => { assert.equal(existsSync(piToolsPath), true, 'pi-tools.md should exist'); const text = await readFile(piToolsPath, 'utf8'); - for (const expected of ['subagent', 'pi-subagents', 'Task', 'TODO.md']) { - assert.match(text, new RegExp(expected)); - } + // Assert against the mapping-table rows only. The surrounding prose mentions + // these same tokens, so matching the whole file would still pass if the table + // were deleted — the exact regression this test exists to catch. + const rows = text.split('\n').filter((line) => line.startsWith('|')); + assert.ok( + rows.some((row) => /subagent/i.test(row)), + 'mapping table documents subagent dispatch', + ); + assert.ok( + rows.some((row) => /todo|task/i.test(row)), + 'mapping table documents task tracking', + ); });