@@ -22,9 +22,26 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
22
22
end
23
23
24
24
setup do
25
- server = start_server ( )
25
+ { :ok , server } = Server . start_link ( )
26
+ start_server ( server )
27
+ Process . unlink ( server )
26
28
{ :ok , _tracer } = start_supervised ( Tracer )
27
29
30
+ on_exit ( fn ->
31
+ if Process . alive? ( server ) do
32
+ state = :sys . get_state ( server )
33
+ refute state . build_running?
34
+
35
+ Process . monitor ( server )
36
+ Process . exit ( server , :terminate )
37
+
38
+ receive do
39
+ { :DOWN , _ , _ , ^ server , _ } ->
40
+ :ok
41
+ end
42
+ end
43
+ end )
44
+
28
45
{ :ok , % { server: server } }
29
46
end
30
47
@@ -87,8 +104,7 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
87
104
} ) ,
88
105
40000
89
106
90
- # Stop while we're still capturing logs to avoid log leakage
91
- GenServer . stop ( server )
107
+ wait_until_compiled ( server )
92
108
end )
93
109
end )
94
110
end
@@ -140,8 +156,7 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
140
156
} ) ,
141
157
3_000
142
158
143
- # Stop while we're still capturing logs to avoid log leakage
144
- GenServer . stop ( server )
159
+ wait_until_compiled ( server )
145
160
end )
146
161
end )
147
162
end
@@ -188,6 +203,8 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
188
203
Type:
189
204
:error
190
205
"""
206
+
207
+ wait_until_compiled ( server )
191
208
end )
192
209
end )
193
210
end
@@ -225,6 +242,7 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
225
242
226
243
assert error_message1 == "Function fun/0 has no local return."
227
244
assert error_message2 == "The pattern can never match the type :error."
245
+ wait_until_compiled ( server )
228
246
end )
229
247
end )
230
248
end
@@ -263,6 +281,7 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
263
281
assert error_message1 == "Function 'fun'/0 has no local return"
264
282
265
283
# Note: Don't assert on error_messaage 2 because the message is not stable across OTP versions
284
+ wait_until_compiled ( server )
266
285
end )
267
286
end )
268
287
end
@@ -300,6 +319,7 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
300
319
301
320
assert error_message1 == "Function check_error/0 has no local return."
302
321
assert error_message2 == "The pattern can never match the type :error."
322
+ wait_until_compiled ( server )
303
323
end )
304
324
end )
305
325
end
@@ -317,9 +337,7 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
317
337
File . rm ( "lib/a.ex" )
318
338
Server . receive_packet ( server , did_change_watched_files ( [ % { "uri" => file_a , "type" => 3 } ] ) )
319
339
assert_receive publish_diagnostics_notif ( ^ file_a , [ ] ) , 20000
320
-
321
- # Stop while we're still capturing logs to avoid log leakage
322
- GenServer . stop ( server )
340
+ wait_until_compiled ( server )
323
341
end )
324
342
end )
325
343
end
@@ -388,6 +406,7 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
388
406
389
407
# we should not receive Protocol has already been consolidated warnings here
390
408
refute_receive notification ( "textDocument/publishDiagnostics" , _ ) , 3000
409
+ wait_until_compiled ( server )
391
410
end )
392
411
end
393
412
@@ -416,6 +435,7 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
416
435
resp = assert_receive ( % { "id" => 3 } , 5000 )
417
436
418
437
assert response ( 3 , [ ] ) == resp
438
+ wait_until_compiled ( server )
419
439
end )
420
440
end )
421
441
end
@@ -501,6 +521,7 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
501
521
JsonRpc . receive_packet ( response ( id , % { "applied" => true } ) )
502
522
503
523
assert_receive ( % { "id" => 4 , "result" => nil } , 5000 )
524
+ wait_until_compiled ( server )
504
525
end )
505
526
end )
506
527
end
0 commit comments