@@ -11,7 +11,7 @@ function getExtension() {
11
11
}
12
12
13
13
async function delay ( ms : number ) {
14
- return new Promise ( ( _ , reject ) => setTimeout ( ( ) => reject ( `Timeout of ${ ms } ms reached.` ) , ms ) ) ;
14
+ return new Promise ( ( resolve ) => setTimeout ( ( ) => resolve ( false ) , ms ) ) ;
15
15
}
16
16
17
17
async function withTimeout ( seconds : number , f : Promise < any > ) {
@@ -31,6 +31,16 @@ function getWorkspaceFile(name: string) {
31
31
return wsroot . with ( { path : path . posix . join ( wsroot . path , name ) } ) ;
32
32
}
33
33
34
+ async function deleteWorkspaceFiles ( ) {
35
+ const dirContents = await vscode . workspace . fs . readDirectory ( getWorkspaceRoot ( ) . uri ) ;
36
+ console . log ( `Deleting test ws contents: ${ dirContents } ` ) ;
37
+ dirContents . forEach ( async ( [ name , type ] ) => {
38
+ const uri : vscode . Uri = getWorkspaceFile ( name ) ;
39
+ console . log ( `Deleting ${ uri } ` ) ;
40
+ await vscode . workspace . fs . delete ( getWorkspaceFile ( name ) , { recursive : true } ) ;
41
+ } ) ;
42
+ }
43
+
34
44
suite ( 'Extension Test Suite' , ( ) => {
35
45
const disposables : vscode . Disposable [ ] = [ ] ;
36
46
@@ -49,6 +59,7 @@ suite('Extension Test Suite', () => {
49
59
vscode . window . showInformationMessage ( 'Start all tests.' ) ;
50
60
51
61
suiteSetup ( async ( ) => {
62
+ await deleteWorkspaceFiles ( ) ;
52
63
await getHaskellConfig ( ) . update ( 'logFile' , 'hls.log' ) ;
53
64
await getHaskellConfig ( ) . update ( 'trace.server' , 'messages' ) ;
54
65
await getHaskellConfig ( ) . update ( 'releasesDownloadStoragePath' , path . normalize ( getWorkspaceFile ( 'bin' ) . fsPath ) ) ;
@@ -70,30 +81,25 @@ suite('Extension Test Suite', () => {
70
81
const exeExt = os . platform . toString ( ) === 'win32' ? '.exe' : '' ;
71
82
console . log ( 'Testing wrapper' ) ;
72
83
assert . ok (
73
- await withTimeout ( 30 , existsWorkspaceFile ( `bin/haskell-language-server-wrapper${ exeExt } ` ) ) ,
84
+ await withTimeout ( 30 , existsWorkspaceFile ( `bin/haskell-language-server-wrapper* ${ exeExt } [!.] ` ) ) ,
74
85
'The wrapper executable was not downloaded in 30 seconds'
75
86
) ;
76
87
console . log ( 'Testing server' ) ;
77
88
assert . ok (
78
- await withTimeout ( 60 , existsWorkspaceFile ( `bin/haskell-language-server${ exeExt } ` ) ) ,
89
+ await withTimeout ( 60 , existsWorkspaceFile ( `bin/haskell-language-server-[1-9]* ${ exeExt } [!.] ` ) ) ,
79
90
'The server executable was not downloaded in 30 seconds'
80
91
) ;
81
92
} ) ;
82
93
83
94
test ( 'Server log should be created' , async ( ) => {
84
95
await vscode . workspace . openTextDocument ( getWorkspaceFile ( 'Main.hs' ) ) ;
85
- assert . ok ( await withTimeout ( 5 , existsWorkspaceFile ( 'hls.log' ) ) , 'Server log not created in 5 seconds' ) ;
96
+ assert . ok ( await withTimeout ( 30 , existsWorkspaceFile ( 'hls.log' ) ) , 'Server log not created in 30 seconds' ) ;
86
97
} ) ;
87
98
88
99
suiteTeardown ( async ( ) => {
89
100
disposables . forEach ( ( d ) => d . dispose ( ) ) ;
90
101
await vscode . commands . executeCommand ( CommandNames . StopServerCommandName ) ;
91
- const dirContents = await vscode . workspace . fs . readDirectory ( getWorkspaceRoot ( ) . uri ) ;
92
- console . log ( `Deleting test ws contents: ${ dirContents } ` ) ;
93
- dirContents . forEach ( async ( [ name , type ] ) => {
94
- const uri : vscode . Uri = getWorkspaceFile ( name ) ;
95
- console . log ( `Deleting ${ uri } ` ) ;
96
- await vscode . workspace . fs . delete ( getWorkspaceFile ( name ) , { recursive : true } ) ;
97
- } ) ;
102
+ delay ( 5 ) ; // to give time to shutdown server
103
+ await deleteWorkspaceFiles ( ) ;
98
104
} ) ;
99
105
} ) ;
0 commit comments