fix(FN-2360): harden CLI vitest workspace source aliasing

- Convert internal @fusion workspace aliases in packages/cli/vitest.config.ts to exact anchored regex entrypoint mappings
- Preserve subpath-before-root alias order so @fusion/core/gh-cli and @fusion/dashboard/planning resolve correctly
- Add vitest-workspace-resolution regression coverage for alias definitions and ordering
- Simulate clean worktrees by temporarily hiding internal dist/ directories and verify dynamic imports resolve from source
This commit is contained in:
Fusion
2026-04-23 15:02:07 -07:00
committed by gsxdsm
parent 5454408713
commit 54843012bc
4 changed files with 150 additions and 9 deletions

View File

@@ -8,14 +8,17 @@ process.env.VITEST_MAX_WORKERS = String(maxWorkers);
export default defineConfig({
resolve: {
// Use ordered aliases so the subpath match is resolved before @fusion/core.
// Keep these aliases exact and ordered (subpaths before package roots).
// In fresh worktrees, internal packages may not have dist/ built yet, and
// Vite otherwise resolves workspace package exports.import to dist/*.js.
// Anchored regex aliases force CLI tests to use source entrypoints instead.
alias: [
{ find: "@fusion/core/gh-cli", replacement: resolve(__dirname, "../core/src/gh-cli.ts") },
{ find: "@fusion/core", replacement: resolve(__dirname, "../core/src/index.ts") },
{ find: "@fusion/dashboard/planning", replacement: resolve(__dirname, "../dashboard/src/planning.ts") },
{ find: "@fusion/dashboard", replacement: resolve(__dirname, "../dashboard/src/index.ts") },
{ find: "@fusion/engine", replacement: resolve(__dirname, "../engine/src/index.ts") },
{ find: "@fusion/test-utils", replacement: resolve(__dirname, "../core/src/__test-utils__/workspace.ts") },
{ find: /^@fusion\/core\/gh-cli$/, replacement: resolve(__dirname, "../core/src/gh-cli.ts") },
{ find: /^@fusion\/core$/, replacement: resolve(__dirname, "../core/src/index.ts") },
{ find: /^@fusion\/dashboard\/planning$/, replacement: resolve(__dirname, "../dashboard/src/planning.ts") },
{ find: /^@fusion\/dashboard$/, replacement: resolve(__dirname, "../dashboard/src/index.ts") },
{ find: /^@fusion\/engine$/, replacement: resolve(__dirname, "../engine/src/index.ts") },
{ find: /^@fusion\/test-utils$/, replacement: resolve(__dirname, "../core/src/__test-utils__/workspace.ts") },
],
},
test: {