@@ -2989,7 +2989,7 @@ defmodule ElixirLS.Debugger.ServerTest do
2989
2989
@ tag :capture_log
2990
2990
test "evaluate expression with exception result" , % { server: server } do
2991
2991
in_fixture ( __DIR__ , "mix_project" , fn ->
2992
- Server . receive_packet ( server , initialize_req ( 1 , % { } ) )
2992
+ Server . receive_packet ( server , initialize_req ( 1 , % { "supportsProgressReporting" => true } ) )
2993
2993
assert_receive ( response ( _ , 1 , "initialize" , _ ) )
2994
2994
2995
2995
Server . receive_packet (
@@ -3026,7 +3026,7 @@ defmodule ElixirLS.Debugger.ServerTest do
3026
3026
3027
3027
test "evaluate expression which calls exit process" , % { server: server } do
3028
3028
in_fixture ( __DIR__ , "mix_project" , fn ->
3029
- Server . receive_packet ( server , initialize_req ( 1 , % { } ) )
3029
+ Server . receive_packet ( server , initialize_req ( 1 , % { "supportsProgressReporting" => true } ) )
3030
3030
assert_receive ( response ( _ , 1 , "initialize" , _ ) )
3031
3031
3032
3032
Server . receive_packet (
@@ -3066,7 +3066,7 @@ defmodule ElixirLS.Debugger.ServerTest do
3066
3066
3067
3067
test "evaluate expression with attempt to exit debugger process" , % { server: server } do
3068
3068
in_fixture ( __DIR__ , "mix_project" , fn ->
3069
- Server . receive_packet ( server , initialize_req ( 1 , % { } ) )
3069
+ Server . receive_packet ( server , initialize_req ( 1 , % { "supportsProgressReporting" => true } ) )
3070
3070
assert_receive ( response ( _ , 1 , "initialize" , _ ) )
3071
3071
3072
3072
Server . receive_packet (
@@ -3104,11 +3104,53 @@ defmodule ElixirLS.Debugger.ServerTest do
3104
3104
end )
3105
3105
end
3106
3106
3107
- test "evaluate expression with attempt to throw debugger process" , % { server: server } do
3107
+ test "evaluate expression with attempt to exit debugger process - progress not supported" , % {
3108
+ server: server
3109
+ } do
3108
3110
in_fixture ( __DIR__ , "mix_project" , fn ->
3109
3111
Server . receive_packet ( server , initialize_req ( 1 , % { } ) )
3110
3112
assert_receive ( response ( _ , 1 , "initialize" , _ ) )
3111
3113
3114
+ Server . receive_packet (
3115
+ server ,
3116
+ gen_watch_expression_packet ( 1 , "Process.exit(self(), :normal)" )
3117
+ )
3118
+
3119
+ refute_receive (
3120
+ event ( _ , "progressStart" , % {
3121
+ "cancellable" => true ,
3122
+ "message" => "Process.exit(self(), :normal)" ,
3123
+ "progressId" => 1 ,
3124
+ "requestId" => 1 ,
3125
+ "title" => "Evaluating expression"
3126
+ } )
3127
+ )
3128
+
3129
+ # evaluator process exits so we should not get a response
3130
+ refute_receive ( % { "body" => % { "result" => _result } } , 1000 )
3131
+
3132
+ assert_receive (
3133
+ error_response (
3134
+ _ ,
3135
+ 1 ,
3136
+ "evaluate" ,
3137
+ "internalServerError" ,
3138
+ "Request handler exited with reason normal" ,
3139
+ % { }
3140
+ )
3141
+ )
3142
+
3143
+ refute_receive ( event ( _ , "progressEnd" , % { "progressId" => 1 } ) )
3144
+
3145
+ assert Process . alive? ( server )
3146
+ end )
3147
+ end
3148
+
3149
+ test "evaluate expression with attempt to throw debugger process" , % { server: server } do
3150
+ in_fixture ( __DIR__ , "mix_project" , fn ->
3151
+ Server . receive_packet ( server , initialize_req ( 1 , % { "supportsProgressReporting" => true } ) )
3152
+ assert_receive ( response ( _ , 1 , "initialize" , _ ) )
3153
+
3112
3154
Server . receive_packet (
3113
3155
server ,
3114
3156
gen_watch_expression_packet ( 1 , "throw(:goodmorning_bug)" )
@@ -3143,7 +3185,7 @@ defmodule ElixirLS.Debugger.ServerTest do
3143
3185
3144
3186
test "evaluate expression which has long execution" , % { server: server } do
3145
3187
in_fixture ( __DIR__ , "mix_project" , fn ->
3146
- Server . receive_packet ( server , initialize_req ( 1 , % { } ) )
3188
+ Server . receive_packet ( server , initialize_req ( 1 , % { "supportsProgressReporting" => true } ) )
3147
3189
assert_receive ( response ( _ , 1 , "initialize" , _ ) )
3148
3190
3149
3191
Server . receive_packet (
@@ -3163,6 +3205,16 @@ defmodule ElixirLS.Debugger.ServerTest do
3163
3205
gen_watch_expression_packet ( 1 , ":timer.sleep(10_000)" )
3164
3206
)
3165
3207
3208
+ assert_receive (
3209
+ event ( _ , "progressStart" , % {
3210
+ "cancellable" => true ,
3211
+ "message" => ":timer.sleep(10_000)" ,
3212
+ "progressId" => 1 ,
3213
+ "requestId" => 1 ,
3214
+ "title" => "Evaluating expression"
3215
+ } )
3216
+ )
3217
+
3166
3218
Server . receive_packet (
3167
3219
server ,
3168
3220
cancel_req ( 2 , % { "progressId" => 1 } )
@@ -3181,6 +3233,66 @@ defmodule ElixirLS.Debugger.ServerTest do
3181
3233
)
3182
3234
)
3183
3235
3236
+ assert_receive ( event ( _ , "progressEnd" , % { "progressId" => 1 } ) )
3237
+
3238
+ assert Process . alive? ( server )
3239
+ end )
3240
+ end
3241
+
3242
+ test "evaluate expression which has long execution - progress not supported" , % {
3243
+ server: server
3244
+ } do
3245
+ in_fixture ( __DIR__ , "mix_project" , fn ->
3246
+ Server . receive_packet ( server , initialize_req ( 1 , % { } ) )
3247
+ assert_receive ( response ( _ , 1 , "initialize" , _ ) )
3248
+
3249
+ Server . receive_packet (
3250
+ server ,
3251
+ launch_req ( 2 , % {
3252
+ "request" => "launch" ,
3253
+ "type" => "mix_task" ,
3254
+ "task" => "test" ,
3255
+ "projectDir" => File . cwd! ( )
3256
+ } )
3257
+ )
3258
+
3259
+ assert_receive ( response ( _ , 2 , "launch" , % { } ) , 5000 )
3260
+
3261
+ Server . receive_packet (
3262
+ server ,
3263
+ gen_watch_expression_packet ( 1 , ":timer.sleep(10_000)" )
3264
+ )
3265
+
3266
+ refute_receive (
3267
+ event ( _ , "progressStart" , % {
3268
+ "cancellable" => true ,
3269
+ "message" => ":timer.sleep(10_000)" ,
3270
+ "progressId" => 1 ,
3271
+ "requestId" => 1 ,
3272
+ "title" => "Evaluating expression"
3273
+ } )
3274
+ )
3275
+
3276
+ Server . receive_packet (
3277
+ server ,
3278
+ cancel_req ( 2 , % { "requestId" => 1 } )
3279
+ )
3280
+
3281
+ assert_receive ( response ( _ , 2 , "cancel" , _ ) )
3282
+
3283
+ assert_receive (
3284
+ error_response (
3285
+ _ ,
3286
+ 1 ,
3287
+ "evaluate" ,
3288
+ "cancelled" ,
3289
+ "cancelled" ,
3290
+ % { }
3291
+ )
3292
+ )
3293
+
3294
+ refute_receive ( event ( _ , "progressEnd" , % { "progressId" => 1 } ) )
3295
+
3184
3296
assert Process . alive? ( server )
3185
3297
end )
3186
3298
end
0 commit comments