File tree Expand file tree Collapse file tree 2 files changed +56
-0
lines changed Expand file tree Collapse file tree 2 files changed +56
-0
lines changed Original file line number Diff line number Diff line change 1
1
import path from "node:path" ;
2
2
import { defineConfig } from "vitest/config" ;
3
+ import { BuiltinEnvironment } from "vitest/node" ;
4
+ import { Environment } from "vitest/environments" ;
3
5
const __dirname = new URL ( "." , import . meta. url ) . pathname ;
6
+ import denoEnvironment from "./vitest/environments/deno" ;
7
+
8
+ function getTestEnvironment (
9
+ runtime ?: string
10
+ ) : BuiltinEnvironment | Environment {
11
+ switch ( runtime ) {
12
+ case "deno" :
13
+ return denoEnvironment ;
14
+ case "node" :
15
+ return "node" ;
16
+ default : {
17
+ if ( runtime ) {
18
+ throw new Error ( `Unsupported JS Runtime '${ runtime } '` ) ;
19
+ } else {
20
+ throw new Error (
21
+ "Please define `JS_RUNTIME` env variable to either node | deno"
22
+ ) ;
23
+ }
24
+ }
25
+ }
26
+ }
4
27
5
28
export default defineConfig ( {
6
29
test : {
@@ -23,5 +46,6 @@ export default defineConfig({
23
46
"hanging-process" ,
24
47
] ,
25
48
onConsoleLog : ( ) => ! process . env . TEST_QUIET_CONSOLE ,
49
+ environment : getTestEnvironment ( process . env . JS_RUNTIME ) ,
26
50
} ,
27
51
} ) ;
Original file line number Diff line number Diff line change
1
+ import type { Environment } from "vitest/environments" ;
2
+
3
+ export default < Environment > {
4
+ name : "deno" ,
5
+ transformMode : "ssr" ,
6
+ async setupVM ( ) {
7
+ // @ts -expect-error - Ignore the global object
8
+ if ( ! global . Deno ) {
9
+ throw new Error ( "Not valid deno runtime available" ) ;
10
+ }
11
+
12
+ // Deno supports `node:vm` module.
13
+ const vm = await import ( "node:vm" ) ;
14
+ const context = vm . createContext ( ) ;
15
+ return {
16
+ getVmContext ( ) {
17
+ return context ;
18
+ } ,
19
+ teardown ( ) {
20
+ // called after all tests with this env have been run
21
+ } ,
22
+ } ;
23
+ } ,
24
+ setup ( ) {
25
+ // custom setup
26
+ return {
27
+ teardown ( ) {
28
+ // called after all tests with this env have been run
29
+ } ,
30
+ } ;
31
+ } ,
32
+ } ;
You can’t perform that action at this time.
0 commit comments