4
4
* ------------------------------------------------------------------------------------------ */
5
5
6
6
import { beforeAll , describe , expect , test } from 'vitest' ;
7
- import { LanguageClientWrapper , type LanguageClientConfig } from 'monaco-editor-wrapper' ;
7
+ import { LanguageClientWrapper } from 'monaco-editor-wrapper' ;
8
8
import { initServices } from 'monaco-languageclient/vscode/services' ;
9
- import { createDefaultLcUnreachableUrlConfig , createDefaultLcWorkerConfig } from './support/helper.js' ;
9
+ import { createDefaultLcUnreachableUrlConfig , createDefaultLcWorkerConfig , createUnreachableWorkerConfig } from './support/helper.js' ;
10
10
11
11
describe ( 'Test LanguageClientWrapper' , ( ) => {
12
12
13
+ const worker = new Worker ( '../workers/langium-server.ts' , {
14
+ type : 'module' ,
15
+ name : 'Langium LS'
16
+ } ) ;
17
+
13
18
beforeAll ( async ( ) => {
14
19
await initServices ( { } ) ;
15
20
} ) ;
16
21
17
- test ( 'Constructor: no config' , async ( ) => {
18
- const languageClientConfig = createDefaultLcWorkerConfig ( ) ;
22
+ test ( 'Constructor: no config' , ( ) => {
23
+ const languageClientConfig = createDefaultLcWorkerConfig ( worker ) ;
19
24
const languageClientWrapper = new LanguageClientWrapper ( {
20
25
languageClientConfig
21
26
} ) ;
22
- expect ( languageClientWrapper . haveLanguageClient ) . toBeTruthy ( ) ;
27
+ expect ( languageClientWrapper . haveLanguageClient ( ) ) . toBeFalsy ( ) ;
23
28
} ) ;
24
29
25
30
test ( 'Dispose: direct worker is cleaned up afterwards' , async ( ) => {
26
- const languageClientConfig = createDefaultLcWorkerConfig ( ) ;
31
+ const languageClientConfig = createDefaultLcWorkerConfig ( worker ) ;
27
32
const languageClientWrapper = new LanguageClientWrapper ( {
28
33
languageClientConfig
29
34
} ) ;
30
35
31
- expect ( languageClientWrapper . getWorker ( ) ) . toBeFalsy ( ) ;
36
+ // setTimeout(async () => {
37
+ expect ( worker ) . toBeDefined ( ) ;
38
+ expect ( languageClientWrapper . getWorker ( ) ) . toBeUndefined ( ) ;
32
39
33
40
// WA: language client in fails due to vitest (reason not clear, yet)
34
41
await expect ( async ( ) => {
@@ -40,15 +47,16 @@ describe('Test LanguageClientWrapper', () => {
40
47
// dispose & verify
41
48
await languageClientWrapper . disposeLanguageClient ( true ) ;
42
49
expect ( languageClientWrapper . getWorker ( ) ) . toBeUndefined ( ) ;
50
+ // }, 1000);
43
51
} ) ;
44
52
45
53
test ( 'Start: unreachable url' , async ( ) => {
46
- const languageClientConfig : LanguageClientConfig = createDefaultLcUnreachableUrlConfig ( ) ;
54
+ const languageClientConfig = createDefaultLcUnreachableUrlConfig ( ) ;
47
55
const languageClientWrapper = new LanguageClientWrapper ( {
48
56
languageClientConfig
49
57
} ) ;
50
58
51
- await expect ( languageClientWrapper . start ( ) ) . rejects . toEqual ( {
59
+ await expect ( await languageClientWrapper . start ( ) ) . rejects . toEqual ( {
52
60
message : 'languageClientWrapper (test-ws-unreachable): Websocket connection failed.' ,
53
61
error : 'No error was provided.'
54
62
} ) ;
@@ -66,20 +74,7 @@ describe('Test LanguageClientWrapper', () => {
66
74
} ) ;
67
75
68
76
test ( 'Start: unreachable worker url' , async ( ) => {
69
- const languageClientConfig : LanguageClientConfig = {
70
- name : 'test-worker-unreachable' ,
71
- clientOptions : {
72
- documentSelector : [ 'javascript' ]
73
- } ,
74
- connection : {
75
- options : {
76
- $type : 'WorkerConfig' ,
77
- url : new URL ( `${ import . meta. url . split ( '@fs' ) [ 0 ] } /packages/wrapper/test/worker/langium-server.ts` ) ,
78
- type : 'module'
79
- }
80
- }
81
- } ;
82
-
77
+ const languageClientConfig = createUnreachableWorkerConfig ( ) ;
83
78
const languageClientWrapper = new LanguageClientWrapper ( {
84
79
languageClientConfig
85
80
} ) ;
0 commit comments