@@ -4,26 +4,57 @@ import assert from 'assert'
4
4
5
5
const EXTENSION_DIR = path . resolve ( __dirname , '..' , '..' )
6
6
const TEST_FIXTURE_DIR = path . resolve ( EXTENSION_DIR , 'test-fixture' )
7
+ const DIAGNOSTIC_SOURCE = 'float-pigment-css-analyzer'
7
8
8
9
const getUri = ( rel : string ) => {
9
10
const absPath = path . resolve ( TEST_FIXTURE_DIR , rel )
10
11
const uri = vscode . Uri . file ( absPath )
11
12
return uri
12
13
}
13
14
14
- const sleep = ( ms : number ) : Promise < void > =>
15
+ // const diagChangeCallbacks: ((uris: readonly vscode.Uri[]) => void)[] = []
16
+ // vscode.languages.onDidChangeDiagnostics((e) => {
17
+ // // eslint-disable-next-line @typescript-eslint/no-floating-promises, promise/catch-or-return
18
+ // vscode.window.showInformationMessage('!!!')
19
+ // diagChangeCallbacks.forEach((f) => f(e.uris))
20
+ // })
21
+ const waitDiagnosticsUpdate = ( uri : vscode . Uri , source : string ) : Promise < void > =>
15
22
new Promise ( ( resolve ) => {
16
- setTimeout ( resolve , ms )
23
+ const diag = vscode . languages . getDiagnostics ( uri ) . find ( ( diag ) => diag . source === source )
24
+ if ( diag ) {
25
+ resolve ( )
26
+ return
27
+ }
28
+ // const cb = (uris: readonly vscode.Uri[]) => {
29
+ // if (uris.includes(uri)) {
30
+ // const diag = vscode.languages.getDiagnostics(uri).find((diag) => diag.source === source)
31
+ // if (diag) {
32
+ // const index = diagChangeCallbacks.indexOf(cb)
33
+ // diagChangeCallbacks.splice(index, 1)
34
+ // resolve()
35
+ // }
36
+ // }
37
+ // }
38
+ // diagChangeCallbacks.push(cb)
39
+ const cb = ( ) => {
40
+ const diag = vscode . languages . getDiagnostics ( uri ) . find ( ( diag ) => diag . source === source )
41
+ if ( diag ) {
42
+ resolve ( )
43
+ return
44
+ }
45
+ setTimeout ( cb , 100 )
46
+ }
47
+ setTimeout ( cb , 100 )
17
48
} )
18
49
19
50
suite ( 'common' , ( ) => {
20
51
test ( 'diagnostics for CSS' , async ( ) => {
21
52
const uri = getUri ( 'components/index.css' )
22
53
await vscode . window . showTextDocument ( uri )
23
- await sleep ( 1000 )
54
+ await waitDiagnosticsUpdate ( uri , DIAGNOSTIC_SOURCE )
24
55
const diagList = vscode . languages
25
56
. getDiagnostics ( uri )
26
- . filter ( ( diag ) => diag . source === 'float-pigment-css-analyzer' )
57
+ . filter ( ( diag ) => diag . source === DIAGNOSTIC_SOURCE )
27
58
assert . equal ( diagList . length , 1 )
28
59
} )
29
60
} )
0 commit comments