@@ -19,13 +19,16 @@ import { WorkspaceContext } from "@src/WorkspaceContext";
19
19
import { testAssetUri } from "../fixtures" ;
20
20
import { tag } from "../tags" ;
21
21
import { closeAllEditors } from "../utilities/commands" ;
22
+ import { waitForNoRunningTasks } from "../utilities/tasks" ;
22
23
import { activateExtensionForTest , updateSettings } from "./utilities/testutilities" ;
23
24
24
25
tag ( "large" ) . suite ( "BackgroundCompilation Test Suite" , ( ) => {
26
+ let subscriptions : vscode . Disposable [ ] ;
25
27
let workspaceContext : WorkspaceContext ;
26
28
27
29
activateExtensionForTest ( {
28
30
async setup ( ctx ) {
31
+ subscriptions = [ ] ;
29
32
workspaceContext = ctx ;
30
33
assert . notEqual ( workspaceContext . folders . length , 0 ) ;
31
34
return await updateSettings ( {
@@ -35,28 +38,28 @@ tag("large").suite("BackgroundCompilation Test Suite", () => {
35
38
} ) ;
36
39
37
40
suiteTeardown ( async ( ) => {
41
+ subscriptions . forEach ( s => s . dispose ( ) ) ;
38
42
await closeAllEditors ( ) ;
39
43
} ) ;
40
44
41
45
test ( "build all on save" , async ( ) => {
42
- const taskPromise = new Promise < void > ( res => {
43
- vscode . tasks . onDidStartTask ( e => {
44
- const task = e . execution . task ;
45
- if ( task . name . includes ( "Build All" ) ) {
46
- vscode . tasks . onDidEndTask ( e => {
47
- if ( e . execution . task === task ) {
48
- res ( ) ;
49
- }
50
- } ) ;
51
- }
52
- } ) ;
46
+ const taskStartPromise = new Promise < void > ( resolve => {
47
+ subscriptions . push (
48
+ vscode . tasks . onDidStartTask ( e => {
49
+ const task = e . execution . task ;
50
+ if ( task . name . includes ( "Build All" ) ) {
51
+ resolve ( ) ;
52
+ }
53
+ } )
54
+ ) ;
53
55
} ) ;
54
56
55
57
const uri = testAssetUri ( "defaultPackage/Sources/PackageExe/main.swift" ) ;
56
58
const doc = await vscode . workspace . openTextDocument ( uri . fsPath ) ;
57
59
await vscode . window . showTextDocument ( doc ) ;
58
60
await vscode . workspace . save ( uri ) ;
59
61
60
- await taskPromise ;
62
+ await taskStartPromise ;
63
+ await waitForNoRunningTasks ( ) ;
61
64
} ) ;
62
65
} ) ;
0 commit comments