From c78668aba876f7a47a99604fb7857f23c3153758 Mon Sep 17 00:00:00 2001 From: sahal Date: Tue, 28 Apr 2026 11:01:26 -0700 Subject: [PATCH] fix(test): normalize path separators for Windows --- gitnexus/test/unit/cli-group.test.ts | 21 ++++++++++--------- .../unit/group/code-dep-extractor.test.ts | 2 +- .../test/unit/group/import-scanner.test.ts | 7 +++++-- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/gitnexus/test/unit/cli-group.test.ts b/gitnexus/test/unit/cli-group.test.ts index aa85314a3..736bb2ef7 100644 --- a/gitnexus/test/unit/cli-group.test.ts +++ b/gitnexus/test/unit/cli-group.test.ts @@ -168,17 +168,18 @@ describe('group CLI', () => { await runCommand(['group', 'repos', '/a', '/b', '--name', 'custom']); - expect(mockGroupService.groupDiscover).toHaveBeenCalledWith( - expect.objectContaining({ - repoPaths: expect.arrayContaining([ - expect.stringContaining('/a'), - expect.stringContaining('/b'), - ]), - name: 'custom', - force: false, - skipSync: false, - }), + expect(mockGroupService.groupDiscover).toHaveBeenCalledTimes(1); + const callArg = mockGroupService.groupDiscover.mock.calls[0][0] as { + repoPaths: string[]; + name: string; + force: boolean; + skipSync: boolean; + }; + const normalizedPaths = callArg.repoPaths.map((p) => p.replace(/\\/g, '/')); + expect(normalizedPaths).toEqual( + expect.arrayContaining([expect.stringContaining('/a'), expect.stringContaining('/b')]), ); + expect(callArg).toMatchObject({ name: 'custom', force: false, skipSync: false }); }); }); diff --git a/gitnexus/test/unit/group/code-dep-extractor.test.ts b/gitnexus/test/unit/group/code-dep-extractor.test.ts index f57e25c36..b53b9c928 100644 --- a/gitnexus/test/unit/group/code-dep-extractor.test.ts +++ b/gitnexus/test/unit/group/code-dep-extractor.test.ts @@ -155,7 +155,7 @@ describe('CodeDepExtractor', () => { expect(consumers[0].contractId).toBe('lib::@acme/shared::formatDate'); expect(consumers[0].type).toBe('lib'); expect(consumers[0].role).toBe('consumer'); - expect(consumers[0].symbolRef.filePath).toBe('src/app.ts'); + expect(consumers[0].symbolRef.filePath.replace(/\\/g, '/')).toBe('src/app.ts'); expect(consumers[0].confidence).toBe(0.9); expect(consumers[1].contractId).toBe('lib::@acme/shared::Logger'); diff --git a/gitnexus/test/unit/group/import-scanner.test.ts b/gitnexus/test/unit/group/import-scanner.test.ts index 26b001bb6..ce49f1830 100644 --- a/gitnexus/test/unit/group/import-scanner.test.ts +++ b/gitnexus/test/unit/group/import-scanner.test.ts @@ -220,7 +220,10 @@ import { Logger } from '@acme/shared/logging'; const results = await scanRepoForImports(tmpDir, targets); expect(results).toHaveLength(2); - expect(results.map((r) => r.filePath).sort()).toEqual(['src/app.ts', 'src/utils/helper.ts']); + expect(results.map((r) => r.filePath.replace(/\\/g, '/')).sort()).toEqual([ + 'src/app.ts', + 'src/utils/helper.ts', + ]); }); it('ignores node_modules', async () => { @@ -229,7 +232,7 @@ import { Logger } from '@acme/shared/logging'; const results = await scanRepoForImports(tmpDir, targets); expect(results).toHaveLength(1); - expect(results[0].filePath).toBe('src/app.ts'); + expect(results[0].filePath.replace(/\\/g, '/')).toBe('src/app.ts'); }); it('returns empty for empty target set', async () => {