From b4d5ae2366ba5fd6481531fa068b4c5260770ae8 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Mon, 18 Sep 2023 14:45:20 +0200 Subject: [PATCH] fix(vitest): inject "define" in workspaces (#4096) --- packages/vitest/src/node/plugins/workspace.ts | 7 ++++--- test/workspaces/globalTest.ts | 6 +++--- test/workspaces/space_1/test/env-injected.spec.ts | 9 +++++++++ test/workspaces/space_1/vite.config.ts | 3 +++ 4 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 test/workspaces/space_1/test/env-injected.spec.ts diff --git a/packages/vitest/src/node/plugins/workspace.ts b/packages/vitest/src/node/plugins/workspace.ts index 91f60af4dc04..cb4b016b85f6 100644 --- a/packages/vitest/src/node/plugins/workspace.ts +++ b/packages/vitest/src/node/plugins/workspace.ts @@ -4,7 +4,7 @@ import { configDefaults } from '../../defaults' import { generateScopedClassName } from '../../integrations/css/css-modules' import { deepMerge } from '../../utils/base' import type { WorkspaceProject } from '../workspace' -import type { UserWorkspaceConfig } from '../../types' +import type { ResolvedConfig, UserWorkspaceConfig } from '../../types' import { CoverageTransform } from './coverageTransform' import { CSSEnablerPlugin } from './cssEnabler' import { SsrReplacerPlugin } from './ssrReplacer' @@ -28,7 +28,7 @@ export function WorkspaceVitestPlugin(project: WorkspaceProject, options: Worksp this.meta.watchMode = false }, config(viteConfig) { - const env: Record = deleteDefineConfig(viteConfig) + const defines: Record = deleteDefineConfig(viteConfig) const testConfig = viteConfig.test || {} @@ -79,11 +79,12 @@ export function WorkspaceVitestPlugin(project: WorkspaceProject, options: Worksp }, }, test: { - env, name, }, } + ;(config.test as ResolvedConfig).defines = defines + const classNameStrategy = (typeof testConfig.css !== 'boolean' && testConfig.css?.modules?.classNameStrategy) || 'stable' if (classNameStrategy !== 'scoped') { diff --git a/test/workspaces/globalTest.ts b/test/workspaces/globalTest.ts index 14b129fb4b27..17792196fbda 100644 --- a/test/workspaces/globalTest.ts +++ b/test/workspaces/globalTest.ts @@ -6,9 +6,9 @@ export async function teardown() { try { assert.ok(results.success) - assert.equal(results.numTotalTestSuites, 6) - assert.equal(results.numTotalTests, 7) - assert.equal(results.numPassedTests, 7) + assert.equal(results.numTotalTestSuites, 7) + assert.equal(results.numTotalTests, 8) + assert.equal(results.numPassedTests, 8) const shared = results.testResults.filter((r: any) => r.name.includes('space_shared/test.spec.ts')) diff --git a/test/workspaces/space_1/test/env-injected.spec.ts b/test/workspaces/space_1/test/env-injected.spec.ts new file mode 100644 index 000000000000..2235912a7966 --- /dev/null +++ b/test/workspaces/space_1/test/env-injected.spec.ts @@ -0,0 +1,9 @@ +import { expect, test } from 'vitest' + +declare global { + const __DEV__: boolean +} + +test('dev is injected', () => { + expect(__DEV__).toBe(true) +}) diff --git a/test/workspaces/space_1/vite.config.ts b/test/workspaces/space_1/vite.config.ts index 23a2b17accb3..cd3b46cb1836 100644 --- a/test/workspaces/space_1/vite.config.ts +++ b/test/workspaces/space_1/vite.config.ts @@ -1,6 +1,9 @@ import { defineProject } from 'vitest/config' export default defineProject({ + define: { + __DEV__: 'true', + }, test: { name: 'space_1', environment: 'happy-dom',