-
Notifications
You must be signed in to change notification settings - Fork 118
Expand file tree
/
Copy pathvitest.config.ts
More file actions
75 lines (71 loc) · 2.96 KB
/
Copy pathvitest.config.ts
File metadata and controls
75 lines (71 loc) · 2.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/**
* This program and the accompanying materials are made available under the terms of the
* Eclipse Public License v2.0 which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-v20.html
*
* SPDX-License-Identifier: EPL-2.0
*
* Copyright Contributors to the Zowe Project.
*
*/
/**
* For a detailed explanation regarding each configuration property, visit:
* https://vitest.dev/config/
*/
import { defineConfig, mergeConfig } from "vitest/config";
import rootConfig from "../../vitest.config";
import { fileURLToPath } from "url";
// Extract shared configuration without 'projects' property
// to prevent recursive project resolution errors when running tests within package folder
const { projects, ...sharedTestConfig } = rootConfig.test || {};
const sharedConfig = { ...rootConfig, test: sharedTestConfig };
// `defineConfig` (not `defineProject`) so the `coverage.include` override
// type-checks; see `packages/zowe-explorer/vitest.config.ts` for rationale.
export default mergeConfig(
sharedConfig,
defineConfig({
test: {
name: "zowe-explorer-api",
globals: true,
environment: "node",
setupFiles: ["vitest.setup.ts"],
include: ["__tests__/**/*.(spec|test).ts"],
// Use forked processes (matches Jest's default worker model) so each
// test file gets its own Node process and module-level state cannot
// leak between files.
pool: "forks",
testTimeout: 10000,
hookTimeout: 10000,
// Mirror Jest's defaults so legacy tests retain the same lifecycle
// semantics (only `vi.spyOn`/manual cleanups restore mocks).
clearMocks: false,
restoreMocks: false,
mockReset: false,
server: {
deps: {
// Tell Vitest to inline this dependency so Vite processes it
// and vi.mock('vscode') can be applied to its transient imports
inline: [/@zowe\/zowex-for-zowe-explorer/, /zowe-explorer-ftp-extension/],
},
},
// Override the root config's package-relative `coverage.include`
// (`packages/*/src/**`) so that, when this project is run standalone
// from inside the package directory, coverage still picks up the
// local `src/**` sources.
coverage: {
reportsDirectory: "results/unit/coverage",
include: ["src/**"],
},
},
resolve: {
alias: {
// Force all imports of 'vscode' to resolve to your mock file
vscode: fileURLToPath(new URL("./__mocks__/vscode.ts", import.meta.url)),
"@zowe/zowex-for-zowe-explorer": fileURLToPath(new URL("../zowex-for-zowe-explorer/src/index.ts", import.meta.url)),
},
},
esbuild: {
target: "es2022",
},
})
);