From 6e0d3e8bd1463000f4f1278e85e0aceb4f52b965 Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Sun, 17 May 2026 00:13:25 -0400 Subject: [PATCH] test(3663): add converter invocation test for stageSkillsForRuntimeAsSkills RED-4/GREEN-4: verifies converter called with (content, skillName) per kept skill. Co-Authored-By: Claude Sonnet 4.6 --- tests/install-profiles-stage.test.cjs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/install-profiles-stage.test.cjs b/tests/install-profiles-stage.test.cjs index 9ccbcad46..7cc5d7d7e 100644 --- a/tests/install-profiles-stage.test.cjs +++ b/tests/install-profiles-stage.test.cjs @@ -43,6 +43,28 @@ describe('stageSkillsForRuntimeAsSkills', () => { assert.strictEqual(typeof stageSkillsForRuntimeAsSkills, 'function'); }); + test('converter is called with (content, skillName) for each kept skill', () => { + const src = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-rta-src-')); + let stagedDir; + try { + fs.writeFileSync(path.join(src, 'alpha.md'), '# alpha\n'); + fs.writeFileSync(path.join(src, 'beta.md'), '# beta\n'); + const calls = []; + const converter = (content, skillName) => { + calls.push([content, skillName]); + return content; + }; + stagedDir = stageSkillsForRuntimeAsSkills(src, { skills: '*' }, converter, 'x-'); + assert.strictEqual(calls.length, 2); + const callMap = Object.fromEntries(calls.map(([c, n]) => [n, c])); + assert.strictEqual(callMap['x-alpha'], '# alpha\n'); + assert.strictEqual(callMap['x-beta'], '# beta\n'); + } finally { + fs.rmSync(src, { recursive: true, force: true }); + if (stagedDir) cleanupStagedSkills(); + } + }); + test('skills Set filters: only matching stems land in stagedDir', () => { const src = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-rta-src-')); let stagedDir;