File tree 5 files changed +30
-7
lines changed
test/global-setup/globalSetup
5 files changed +30
-7
lines changed Original file line number Diff line number Diff line change @@ -145,10 +145,8 @@ export class Vitest {
145
145
return coreWorkspace
146
146
}
147
147
148
- public getCoreWorkspaceProject ( ) {
149
- if ( ! this . coreWorkspace )
150
- throw new Error ( 'Core workspace project is not initialized' )
151
- return this . coreWorkspace
148
+ public getCoreWorkspaceProject ( ) : WorkspaceProject | null {
149
+ return this . coreWorkspace || null
152
150
}
153
151
154
152
private async resolveWorkspace ( options : UserConfig , cliOptions : UserConfig ) {
@@ -687,10 +685,13 @@ export class Vitest {
687
685
688
686
async close ( ) {
689
687
if ( ! this . closingPromise ) {
688
+ const closePromises = this . projects . map ( w => w . close ( ) )
689
+ // close the core workspace server only once
690
+ if ( this . coreWorkspace && ! this . projects . includes ( this . coreWorkspace ) )
691
+ closePromises . push ( this . server . close ( ) )
690
692
this . closingPromise = Promise . allSettled ( [
691
693
this . pool ?. close ( ) ,
692
- this . server . close ( ) ,
693
- ...this . projects . map ( w => w . close ( ) ) ,
694
+ ...closePromises ,
694
695
] . filter ( Boolean ) ) . then ( ( results ) => {
695
696
results . filter ( r => r . status === 'rejected' ) . forEach ( ( err ) => {
696
697
this . logger . error ( 'error during close' , ( err as PromiseRejectedResult ) . reason )
Original file line number Diff line number Diff line change 1
1
import { createServer } from 'vite'
2
2
import { resolve } from 'pathe'
3
3
4
+ let teardownHappened = false
5
+
4
6
export async function setup ( ) {
5
7
const server = await createServer ( {
6
8
root : resolve ( __dirname , '..' ) ,
@@ -11,6 +13,9 @@ export async function setup() {
11
13
12
14
await server . listen ( 9988 )
13
15
return async ( ) => {
16
+ if ( teardownHappened )
17
+ throw new Error ( 'teardown called twice' )
18
+ teardownHappened = true
14
19
await server . close ( )
15
20
}
16
21
}
Original file line number Diff line number Diff line change @@ -2,6 +2,8 @@ async function sleep(n) {
2
2
return new Promise ( resolve => setTimeout ( resolve , n ) )
3
3
}
4
4
5
+ let teardownHappened = false
6
+
5
7
export default async function ( ) {
6
8
// setup something eg start a server, db or whatever
7
9
// const server = await start()
@@ -10,6 +12,9 @@ export default async function () {
10
12
await sleep ( 25 )
11
13
12
14
return async ( ) => {
15
+ if ( teardownHappened )
16
+ throw new Error ( 'teardown called twice' )
17
+ teardownHappened = true
13
18
// tear it down here
14
19
// await server.close()
15
20
await sleep ( 25 )
Original file line number Diff line number Diff line change @@ -2,6 +2,8 @@ async function sleep(n) {
2
2
return new Promise ( resolve => setTimeout ( resolve , n ) )
3
3
}
4
4
5
+ let teardownHappened = false
6
+
5
7
// let start
6
8
7
9
export async function setup ( ) {
@@ -13,6 +15,9 @@ export async function setup() {
13
15
}
14
16
15
17
export async function teardown ( ) {
18
+ if ( teardownHappened )
19
+ throw new Error ( 'teardown called twice' )
20
+ teardownHappened = true
16
21
// tear it down here
17
22
// await server.close()
18
23
await sleep ( 25 )
Original file line number Diff line number Diff line change 1
1
import { startServer } from './server'
2
2
3
+ let teardown = false
4
+
3
5
export default async function ( ) {
4
6
const server = await startServer ( '0.0.0.0' , 9876 )
5
- return async ( ) => new Promise < void > ( resolve => server . close ( ( ) => resolve ( ) ) )
7
+ return async ( ) => {
8
+ if ( teardown )
9
+ throw new Error ( 'teardown called twice' )
10
+ teardown = true
11
+ return new Promise < void > ( resolve => server . close ( ( ) => resolve ( ) ) )
12
+ }
6
13
}
You can’t perform that action at this time.
0 commit comments