From fceb983bebcacf594d0339006a415249affa5474 Mon Sep 17 00:00:00 2001 From: Tibsfox Date: Mon, 6 Apr 2026 22:26:19 -0700 Subject: [PATCH] test: add regression test for slice sequence on insert Co-Authored-By: Claude Opus 4.6 (1M context) --- .../gsd/tests/slice-sequence-insert.test.ts | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/resources/extensions/gsd/tests/slice-sequence-insert.test.ts diff --git a/src/resources/extensions/gsd/tests/slice-sequence-insert.test.ts b/src/resources/extensions/gsd/tests/slice-sequence-insert.test.ts new file mode 100644 index 000000000..e041811aa --- /dev/null +++ b/src/resources/extensions/gsd/tests/slice-sequence-insert.test.ts @@ -0,0 +1,51 @@ +/** + * Regression test for #3697 — set slice sequence on insert + * + * All three insertSlice call sites must pass a sequence value so slices + * are ordered correctly instead of defaulting to 0. + */ + +import { describe, test } from 'node:test'; +import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { dirname, join } from 'node:path'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const planMilestoneSrc = readFileSync( + join(__dirname, '..', 'tools', 'plan-milestone.ts'), + 'utf-8', +); +const reassessRoadmapSrc = readFileSync( + join(__dirname, '..', 'tools', 'reassess-roadmap.ts'), + 'utf-8', +); +const mdImporterSrc = readFileSync( + join(__dirname, '..', 'md-importer.ts'), + 'utf-8', +); + +describe('slice sequence on insert (#3697)', () => { + test('plan-milestone.ts passes sequence to insertSlice', () => { + assert.match(planMilestoneSrc, /insertSlice\(/, + 'plan-milestone.ts should call insertSlice'); + assert.match(planMilestoneSrc, /sequence:\s*i\s*\+\s*1/, + 'plan-milestone.ts should pass sequence: i + 1'); + }); + + test('reassess-roadmap.ts passes sequence to insertSlice', () => { + assert.match(reassessRoadmapSrc, /insertSlice\(/, + 'reassess-roadmap.ts should call insertSlice'); + assert.match(reassessRoadmapSrc, /sequence:\s*existingCount\s*\+\s*i\s*\+\s*1/, + 'reassess-roadmap.ts should pass sequence: existingCount + i + 1'); + }); + + test('md-importer.ts passes sequence to insertSlice', () => { + assert.match(mdImporterSrc, /insertSlice\(/, + 'md-importer.ts should call insertSlice'); + assert.match(mdImporterSrc, /sequence:\s*si\s*\+\s*1/, + 'md-importer.ts should pass sequence: si + 1'); + }); +});