From 36fbff80c563cc0f6ee3e8665a2c4577e853503d Mon Sep 17 00:00:00 2001
From: poyoho <907415276@qq.com>
Date: Sat, 12 Feb 2022 16:51:23 +0800
Subject: [PATCH 1/8] feat: test define
---
test/core/test/basic.test.ts | 4 ++++
test/core/vitest.config.ts | 3 +++
2 files changed, 7 insertions(+)
diff --git a/test/core/test/basic.test.ts b/test/core/test/basic.test.ts
index b646ce3220e4..6c0a17ad8f4b 100644
--- a/test/core/test/basic.test.ts
+++ b/test/core/test/basic.test.ts
@@ -62,3 +62,7 @@ function callbackTest(name: string, doneValue: any) {
callbackTest('success ', undefined)
callbackTest('success done(false)', false)
+
+test('vite define', () => {
+ expect(MY_CONSTANT).toBe('my constant')
+})
diff --git a/test/core/vitest.config.ts b/test/core/vitest.config.ts
index c53eaf09ce5c..e985b43e092e 100644
--- a/test/core/vitest.config.ts
+++ b/test/core/vitest.config.ts
@@ -17,6 +17,9 @@ export default defineConfig({
},
},
],
+ define: {
+ MY_CONSTANT: '"my constant"',
+ },
test: {
testTimeout: 2000,
// threads: false,
From 983f16189a0c765b01eb28f115843feaa0be14ba Mon Sep 17 00:00:00 2001
From: poyoho <907415276@qq.com>
Date: Sat, 12 Feb 2022 17:43:41 +0800
Subject: [PATCH 2/8] feat: error in vue
---
examples/vue/components/Define.vue | 7 +++++++
examples/vue/test/basic.test.ts | 9 +++++++++
examples/vue/types.d.ts | 1 +
examples/vue/vitest.config.ts | 3 +++
4 files changed, 20 insertions(+)
create mode 100644 examples/vue/components/Define.vue
create mode 100644 examples/vue/types.d.ts
diff --git a/examples/vue/components/Define.vue b/examples/vue/components/Define.vue
new file mode 100644
index 000000000000..3ed78e1ffc1a
--- /dev/null
+++ b/examples/vue/components/Define.vue
@@ -0,0 +1,7 @@
+
+
+
+ {{ defined_constant }}
+
diff --git a/examples/vue/test/basic.test.ts b/examples/vue/test/basic.test.ts
index 116b288ec762..9f557994ea9b 100644
--- a/examples/vue/test/basic.test.ts
+++ b/examples/vue/test/basic.test.ts
@@ -1,5 +1,6 @@
import { mount } from '@vue/test-utils'
import Hello from '../components/Hello.vue'
+import Define from '../components/Define.vue'
test('mount component', async() => {
expect(Hello).toBeTruthy()
@@ -21,3 +22,11 @@ test('mount component', async() => {
expect(wrapper.text()).toContain('4 x 4 = 16')
})
+
+test('vite define in component', async() => {
+ expect(Define).toBeTruthy()
+
+ const wrapper = mount(Define)
+
+ expect(wrapper.text()).toContain('my constant')
+})
diff --git a/examples/vue/types.d.ts b/examples/vue/types.d.ts
new file mode 100644
index 000000000000..6b85feb7c2ec
--- /dev/null
+++ b/examples/vue/types.d.ts
@@ -0,0 +1 @@
+declare const MY_CONSTANT: string
diff --git a/examples/vue/vitest.config.ts b/examples/vue/vitest.config.ts
index 4e3147e9b6df..a5fbd4c640c5 100644
--- a/examples/vue/vitest.config.ts
+++ b/examples/vue/vitest.config.ts
@@ -5,6 +5,9 @@ export default defineConfig({
plugins: [
Vue(),
],
+ define: {
+ MY_CONSTANT: '"my constant"',
+ },
test: {
globals: true,
environment: 'happy-dom',
From e61c03113f24faab0b110518b15646ad8110495f Mon Sep 17 00:00:00 2001
From: poyoho <907415276@qq.com>
Date: Sun, 13 Feb 2022 01:01:02 +0800
Subject: [PATCH 3/8] fix: define in vm
---
packages/vitest/src/node/config.ts | 2 ++
packages/vitest/src/node/execute.ts | 2 ++
packages/vitest/src/types/config.ts | 2 ++
test/core/test/basic.test.ts | 4 ----
test/core/vitest.config.ts | 3 ---
test/coverage-test/src/Defined.vue | 6 ++++++
test/coverage-test/src/Hello.vue | 1 -
test/coverage-test/test/vue.test.ts | 9 +++++++++
test/coverage-test/typings.d.ts | 1 +
test/coverage-test/vitest.config.ts | 3 +++
10 files changed, 25 insertions(+), 8 deletions(-)
create mode 100644 test/coverage-test/src/Defined.vue
create mode 100644 test/coverage-test/typings.d.ts
diff --git a/packages/vitest/src/node/config.ts b/packages/vitest/src/node/config.ts
index 5c8ce57dd780..510b98d52915 100644
--- a/packages/vitest/src/node/config.ts
+++ b/packages/vitest/src/node/config.ts
@@ -59,6 +59,8 @@ export function resolveConfig(
if (viteConfig.base !== '/')
resolved.base = viteConfig.base
+ resolved.define = viteConfig.define
+
resolved.coverage = resolveC8Options(resolved.coverage, resolved.root)
resolved.deps = resolved.deps || {}
diff --git a/packages/vitest/src/node/execute.ts b/packages/vitest/src/node/execute.ts
index 483c52611ad6..1b1ca1361acc 100644
--- a/packages/vitest/src/node/execute.ts
+++ b/packages/vitest/src/node/execute.ts
@@ -43,6 +43,8 @@ export class VitestRunner extends ViteNodeRunner {
__vite_ssr_dynamic_import__: (dep: string) => mocker.requestWithMock(dep),
__vitest_mocker__: mocker,
+
+ ...process.__vitest_worker__.config.define,
})
}
}
diff --git a/packages/vitest/src/types/config.ts b/packages/vitest/src/types/config.ts
index 43b67f57b84f..fafacc0280d9 100644
--- a/packages/vitest/src/types/config.ts
+++ b/packages/vitest/src/types/config.ts
@@ -328,4 +328,6 @@ export interface ResolvedConfig extends Omit, 'config' | 'f
snapshotOptions: SnapshotStateOptions
api?: ApiConfig
+
+ define?: Record
}
diff --git a/test/core/test/basic.test.ts b/test/core/test/basic.test.ts
index 6c0a17ad8f4b..b646ce3220e4 100644
--- a/test/core/test/basic.test.ts
+++ b/test/core/test/basic.test.ts
@@ -62,7 +62,3 @@ function callbackTest(name: string, doneValue: any) {
callbackTest('success ', undefined)
callbackTest('success done(false)', false)
-
-test('vite define', () => {
- expect(MY_CONSTANT).toBe('my constant')
-})
diff --git a/test/core/vitest.config.ts b/test/core/vitest.config.ts
index e985b43e092e..c53eaf09ce5c 100644
--- a/test/core/vitest.config.ts
+++ b/test/core/vitest.config.ts
@@ -17,9 +17,6 @@ export default defineConfig({
},
},
],
- define: {
- MY_CONSTANT: '"my constant"',
- },
test: {
testTimeout: 2000,
// threads: false,
diff --git a/test/coverage-test/src/Defined.vue b/test/coverage-test/src/Defined.vue
new file mode 100644
index 000000000000..ea23174393a8
--- /dev/null
+++ b/test/coverage-test/src/Defined.vue
@@ -0,0 +1,6 @@
+
+
+ {{ defined }}
+
diff --git a/test/coverage-test/src/Hello.vue b/test/coverage-test/src/Hello.vue
index f242ec0bf124..85fd0c9f3b16 100644
--- a/test/coverage-test/src/Hello.vue
+++ b/test/coverage-test/src/Hello.vue
@@ -5,7 +5,6 @@ const times = ref(2)
const props = defineProps<{ count: number }>()
const result = computed(() => props.count * times.value)
-
defineExpose(props)
diff --git a/test/coverage-test/test/vue.test.ts b/test/coverage-test/test/vue.test.ts
index ee9df3a7ef5a..521f4bfb5056 100644
--- a/test/coverage-test/test/vue.test.ts
+++ b/test/coverage-test/test/vue.test.ts
@@ -5,6 +5,7 @@
import { expect, test } from 'vitest'
import { mount } from '@vue/test-utils'
import Hello from '../src/Hello.vue'
+import Defined from '../src/Defined.vue'
test('vue 3 coverage', async() => {
expect(Hello).toBeTruthy()
@@ -26,3 +27,11 @@ test('vue 3 coverage', async() => {
expect(wrapper.text()).toContain('4 x 4 = 16')
})
+
+test('define package in vm', () => {
+ expect(Defined).toBeTruthy()
+
+ const wrapper = mount(Defined)
+
+ expect(wrapper.text()).toContain(MY_CONSTANT)
+})
diff --git a/test/coverage-test/typings.d.ts b/test/coverage-test/typings.d.ts
new file mode 100644
index 000000000000..6b85feb7c2ec
--- /dev/null
+++ b/test/coverage-test/typings.d.ts
@@ -0,0 +1 @@
+declare const MY_CONSTANT: string
diff --git a/test/coverage-test/vitest.config.ts b/test/coverage-test/vitest.config.ts
index a45fa5ac20ef..42303dbc3c44 100644
--- a/test/coverage-test/vitest.config.ts
+++ b/test/coverage-test/vitest.config.ts
@@ -5,6 +5,9 @@ export default defineConfig({
plugins: [
vue(),
],
+ define: {
+ MY_CONSTANT: '"my constant"',
+ },
test: {
},
})
From 6a23dd746f98c22a0119514144d6598073279a90 Mon Sep 17 00:00:00 2001
From: poyoho <907415276@qq.com>
Date: Sun, 13 Feb 2022 01:04:32 +0800
Subject: [PATCH 4/8] revert: remove example
---
examples/vue/components/Define.vue | 7 -------
examples/vue/test/basic.test.ts | 9 ---------
examples/vue/types.d.ts | 1 -
examples/vue/vitest.config.ts | 3 ---
4 files changed, 20 deletions(-)
delete mode 100644 examples/vue/components/Define.vue
delete mode 100644 examples/vue/types.d.ts
diff --git a/examples/vue/components/Define.vue b/examples/vue/components/Define.vue
deleted file mode 100644
index 3ed78e1ffc1a..000000000000
--- a/examples/vue/components/Define.vue
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
- {{ defined_constant }}
-
diff --git a/examples/vue/test/basic.test.ts b/examples/vue/test/basic.test.ts
index 9f557994ea9b..116b288ec762 100644
--- a/examples/vue/test/basic.test.ts
+++ b/examples/vue/test/basic.test.ts
@@ -1,6 +1,5 @@
import { mount } from '@vue/test-utils'
import Hello from '../components/Hello.vue'
-import Define from '../components/Define.vue'
test('mount component', async() => {
expect(Hello).toBeTruthy()
@@ -22,11 +21,3 @@ test('mount component', async() => {
expect(wrapper.text()).toContain('4 x 4 = 16')
})
-
-test('vite define in component', async() => {
- expect(Define).toBeTruthy()
-
- const wrapper = mount(Define)
-
- expect(wrapper.text()).toContain('my constant')
-})
diff --git a/examples/vue/types.d.ts b/examples/vue/types.d.ts
deleted file mode 100644
index 6b85feb7c2ec..000000000000
--- a/examples/vue/types.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-declare const MY_CONSTANT: string
diff --git a/examples/vue/vitest.config.ts b/examples/vue/vitest.config.ts
index a5fbd4c640c5..4e3147e9b6df 100644
--- a/examples/vue/vitest.config.ts
+++ b/examples/vue/vitest.config.ts
@@ -5,9 +5,6 @@ export default defineConfig({
plugins: [
Vue(),
],
- define: {
- MY_CONSTANT: '"my constant"',
- },
test: {
globals: true,
environment: 'happy-dom',
From 7881b507c170ff47f950090f60c06f692802edea Mon Sep 17 00:00:00 2001
From: poyoho <907415276@qq.com>
Date: Sun, 13 Feb 2022 01:05:03 +0800
Subject: [PATCH 5/8] revert: test
---
test/coverage-test/src/Hello.vue | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/coverage-test/src/Hello.vue b/test/coverage-test/src/Hello.vue
index 85fd0c9f3b16..f242ec0bf124 100644
--- a/test/coverage-test/src/Hello.vue
+++ b/test/coverage-test/src/Hello.vue
@@ -5,6 +5,7 @@ const times = ref(2)
const props = defineProps<{ count: number }>()
const result = computed(() => props.count * times.value)
+
defineExpose(props)
From 738cdc32636e8ad2758c5eb17aec146d68572cb1 Mon Sep 17 00:00:00 2001
From: poyoho <907415276@qq.com>
Date: Sun, 13 Feb 2022 10:14:51 +0800
Subject: [PATCH 6/8] feat: define global env in the vm
---
packages/vite-node/src/client.ts | 5 ++++-
packages/vitest/src/node/config.ts | 2 --
packages/vitest/src/node/execute.ts | 2 --
packages/vitest/src/types/config.ts | 2 --
4 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/packages/vite-node/src/client.ts b/packages/vite-node/src/client.ts
index 43065be542ac..0d812c4d756b 100644
--- a/packages/vite-node/src/client.ts
+++ b/packages/vite-node/src/client.ts
@@ -111,7 +111,10 @@ export class ViteNodeRunner {
__dirname: dirname(__filename),
})
- const fn = vm.runInThisContext(`async (${Object.keys(context).join(',')})=>{{${transformed}\n}}`, {
+ const fn = vm.runInThisContext(`async (${Object.keys(context).join(',')})=>{
+ __vite_ssr_import__("/@vite/env")
+ {${transformed}\n}
+ }`, {
filename: fsPath,
lineOffset: 0,
})
diff --git a/packages/vitest/src/node/config.ts b/packages/vitest/src/node/config.ts
index 3e87d90a7a48..f1a60fad06fa 100644
--- a/packages/vitest/src/node/config.ts
+++ b/packages/vitest/src/node/config.ts
@@ -61,8 +61,6 @@ export function resolveConfig(
if (viteConfig.base !== '/')
resolved.base = viteConfig.base
- resolved.define = viteConfig.define
-
resolved.coverage = resolveC8Options(options.coverage || {}, resolved.root)
resolved.deps = resolved.deps || {}
diff --git a/packages/vitest/src/node/execute.ts b/packages/vitest/src/node/execute.ts
index 1b1ca1361acc..483c52611ad6 100644
--- a/packages/vitest/src/node/execute.ts
+++ b/packages/vitest/src/node/execute.ts
@@ -43,8 +43,6 @@ export class VitestRunner extends ViteNodeRunner {
__vite_ssr_dynamic_import__: (dep: string) => mocker.requestWithMock(dep),
__vitest_mocker__: mocker,
-
- ...process.__vitest_worker__.config.define,
})
}
}
diff --git a/packages/vitest/src/types/config.ts b/packages/vitest/src/types/config.ts
index d6cf64e7d683..d245d7d69d45 100644
--- a/packages/vitest/src/types/config.ts
+++ b/packages/vitest/src/types/config.ts
@@ -325,6 +325,4 @@ export interface ResolvedConfig extends Omit, 'config' | 'f
reporters: (Reporter | BuiltinReporters)[]
api?: ApiConfig
-
- define?: Record
}
From 249c33ff5ad436129996533a19402d275b44799f Mon Sep 17 00:00:00 2001
From: poyoho <907415276@qq.com>
Date: Sun, 13 Feb 2022 15:28:16 +0800
Subject: [PATCH 7/8] fix: provide the vite define variable in vm context once
---
packages/vite-node/src/cli.ts | 3 +++
packages/vite-node/src/client.ts | 5 +----
packages/vitest/src/node/execute.ts | 3 +++
3 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/packages/vite-node/src/cli.ts b/packages/vite-node/src/cli.ts
index 876c57a985de..8f3c01993313 100644
--- a/packages/vite-node/src/cli.ts
+++ b/packages/vite-node/src/cli.ts
@@ -84,6 +84,9 @@ async function run(options: CliOptions = {}) {
},
})
+ // provide the vite define variable in vm context
+ await runner.executeId('/@vite/env')
+
for (const file of files)
await runner.executeFile(file)
diff --git a/packages/vite-node/src/client.ts b/packages/vite-node/src/client.ts
index 0d812c4d756b..43065be542ac 100644
--- a/packages/vite-node/src/client.ts
+++ b/packages/vite-node/src/client.ts
@@ -111,10 +111,7 @@ export class ViteNodeRunner {
__dirname: dirname(__filename),
})
- const fn = vm.runInThisContext(`async (${Object.keys(context).join(',')})=>{
- __vite_ssr_import__("/@vite/env")
- {${transformed}\n}
- }`, {
+ const fn = vm.runInThisContext(`async (${Object.keys(context).join(',')})=>{{${transformed}\n}}`, {
filename: fsPath,
lineOffset: 0,
})
diff --git a/packages/vitest/src/node/execute.ts b/packages/vitest/src/node/execute.ts
index 483c52611ad6..a9cbce1e1b13 100644
--- a/packages/vitest/src/node/execute.ts
+++ b/packages/vitest/src/node/execute.ts
@@ -14,6 +14,9 @@ export interface ExecuteOptions extends ViteNodeRunnerOptions {
export async function executeInViteNode(options: ExecuteOptions) {
const runner = new VitestRunner(options)
+ // provide the vite define variable in vm context
+ await runner.executeId('/@vite/env')
+
const result: any[] = []
for (const file of options.files)
result.push(await runner.executeFile(file))
From 674fb04a3472953cbdf465eb8e8567bc4202f985 Mon Sep 17 00:00:00 2001
From: poyoho <907415276@qq.com>
Date: Sun, 13 Feb 2022 15:38:05 +0800
Subject: [PATCH 8/8] chore: fix comment
---
packages/vite-node/src/cli.ts | 2 +-
packages/vitest/src/node/execute.ts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/vite-node/src/cli.ts b/packages/vite-node/src/cli.ts
index 8f3c01993313..aec50fc02884 100644
--- a/packages/vite-node/src/cli.ts
+++ b/packages/vite-node/src/cli.ts
@@ -84,7 +84,7 @@ async function run(options: CliOptions = {}) {
},
})
- // provide the vite define variable in vm context
+ // provide the vite define variable in this context
await runner.executeId('/@vite/env')
for (const file of files)
diff --git a/packages/vitest/src/node/execute.ts b/packages/vitest/src/node/execute.ts
index a9cbce1e1b13..4108b0c88604 100644
--- a/packages/vitest/src/node/execute.ts
+++ b/packages/vitest/src/node/execute.ts
@@ -14,7 +14,7 @@ export interface ExecuteOptions extends ViteNodeRunnerOptions {
export async function executeInViteNode(options: ExecuteOptions) {
const runner = new VitestRunner(options)
- // provide the vite define variable in vm context
+ // provide the vite define variable in this context
await runner.executeId('/@vite/env')
const result: any[] = []