@@ -4,26 +4,57 @@ import assert from 'assert'
44
55const EXTENSION_DIR = path . resolve ( __dirname , '..' , '..' )
66const TEST_FIXTURE_DIR = path . resolve ( EXTENSION_DIR , 'test-fixture' )
7+ const DIAGNOSTIC_SOURCE = 'float-pigment-css-analyzer'
78
89const getUri = ( rel : string ) => {
910 const absPath = path . resolve ( TEST_FIXTURE_DIR , rel )
1011 const uri = vscode . Uri . file ( absPath )
1112 return uri
1213}
1314
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 > =>
1522 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 )
1748 } )
1849
1950suite ( 'common' , ( ) => {
2051 test ( 'diagnostics for CSS' , async ( ) => {
2152 const uri = getUri ( 'components/index.css' )
2253 await vscode . window . showTextDocument ( uri )
23- await sleep ( 1000 )
54+ await waitDiagnosticsUpdate ( uri , DIAGNOSTIC_SOURCE )
2455 const diagList = vscode . languages
2556 . getDiagnostics ( uri )
26- . filter ( ( diag ) => diag . source === 'float-pigment-css-analyzer' )
57+ . filter ( ( diag ) => diag . source === DIAGNOSTIC_SOURCE )
2758 assert . equal ( diagList . length , 1 )
2859 } )
2960} )
0 commit comments