1
1
import type { File , Suite , Test } from '@vitest/runner'
2
+ import type { Node } from 'estree'
2
3
import type { RawSourceMap } from 'vite-node'
3
4
import type { TestProject } from '../node/project'
4
5
import {
@@ -51,8 +52,6 @@ export async function collectTests(
51
52
if ( ! request ) {
52
53
return null
53
54
}
54
- // unwrap __vite_ssr_identity__ for Vite 6
55
- request . code = request . code . replace ( / _ _ v i t e _ s s r _ i d e n t i t y _ _ \( ( \w + \. \w + ) \) / g, '( $1)' )
56
55
const ast = await parseAstAsync ( request . code )
57
56
const testFilepath = relative ( ctx . config . root , filepath )
58
57
const projectName = ctx . name
@@ -72,7 +71,7 @@ export async function collectTests(
72
71
}
73
72
file . file = file
74
73
const definitions : LocalCallDefinition [ ] = [ ]
75
- const getName = ( callee : any ) : string | null => {
74
+ const getName = ( callee : Node ) : string | null => {
76
75
if ( ! callee ) {
77
76
return null
78
77
}
@@ -86,12 +85,20 @@ export async function collectTests(
86
85
return getName ( callee . tag )
87
86
}
88
87
if ( callee . type === 'MemberExpression' ) {
88
+ const object = callee . object as any
89
89
// direct call as `__vite_ssr_exports_0__.test()`
90
- if ( callee . object ?. name ?. startsWith ( '__vite_ssr_' ) ) {
90
+ if ( object ?. name ?. startsWith ( '__vite_ssr_' ) ) {
91
91
return getName ( callee . property )
92
92
}
93
93
// call as `__vite_ssr__.test.skip()`
94
- return getName ( callee . object ?. property )
94
+ return getName ( object ?. property )
95
+ }
96
+ // unwrap (0, ...)
97
+ if ( callee . type === 'SequenceExpression' && callee . expressions . length === 2 ) {
98
+ const [ e0 , e1 ] = callee . expressions
99
+ if ( e0 . type === 'Literal' && e0 . value === 0 ) {
100
+ return getName ( e1 )
101
+ }
95
102
}
96
103
return null
97
104
}
0 commit comments