@@ -306,6 +306,7 @@ defmodule Logger.TranslatorTest do
306
306
307
307
test "translates Task crashes" do
308
308
{ :ok , pid } = Task . start_link ( __MODULE__ , :task , [ self ( ) ] )
309
+ parent = self ( )
309
310
310
311
assert capture_log ( fn ->
311
312
ref = Process . monitor ( pid )
@@ -324,6 +325,7 @@ defmodule Logger.TranslatorTest do
324
325
325
326
assert { % RuntimeError { message: "oops" } , [ _ | _ ] } = task_metadata [ :crash_reason ]
326
327
assert { % RuntimeError { message: "oops" } , [ _ | _ ] } = process_metadata [ :crash_reason ]
328
+ assert [ parent ] == task_metadata [ :callers ]
327
329
328
330
refute Keyword . has_key? ( task_metadata , :initial_call )
329
331
assert process_metadata [ :initial_call ] == { Logger.TranslatorTest , :task , 1 }
@@ -332,6 +334,7 @@ defmodule Logger.TranslatorTest do
332
334
test "translates Task async_stream crashes with neighbour" do
333
335
fun = fn -> Task . async_stream ( [ :oops ] , :erlang , :error , [ ] ) |> Enum . to_list ( ) end
334
336
{ :ok , pid } = Task . start ( __MODULE__ , :task , [ self ( ) , fun ] )
337
+ parent = self ( )
335
338
336
339
assert capture_log ( :debug , fn ->
337
340
ref = Process . monitor ( pid )
@@ -345,12 +348,15 @@ defmodule Logger.TranslatorTest do
345
348
346
349
assert_receive { :error , _pid , { Logger , [ "Task " <> _ | _ ] , _ts , task_metadata } }
347
350
assert_receive { :error , _pid , { Logger , [ "Process " | _ ] , _ts , process_metadata } }
351
+ assert [ pid , parent ] == task_metadata [ :callers ]
348
352
349
353
assert { :oops , [ _ | _ ] } = task_metadata [ :crash_reason ]
350
354
assert { % ErlangError { original: :oops } , [ _ | _ ] } = process_metadata [ :crash_reason ]
351
355
end
352
356
353
357
test "translates Task undef module crash" do
358
+ parent = self ( )
359
+
354
360
assert capture_log ( fn ->
355
361
{ :ok , pid } = Task . start ( :module_does_not_exist , :undef , [ ] )
356
362
ref = Process . monitor ( pid )
@@ -365,12 +371,15 @@ defmodule Logger.TranslatorTest do
365
371
366
372
assert_receive { :error , _pid , { Logger , [ "Task " <> _ | _ ] , _ts , task_metadata } }
367
373
assert_receive { :error , _pid , { Logger , [ "Process " | _ ] , _ts , process_metadata } }
374
+ assert [ parent ] == task_metadata [ :callers ]
368
375
369
376
assert { % UndefinedFunctionError { function: :undef } , [ _ | _ ] } = task_metadata [ :crash_reason ]
370
377
assert { % UndefinedFunctionError { function: :undef } , [ _ | _ ] } = process_metadata [ :crash_reason ]
371
378
end
372
379
373
380
test "translates Task undef function crash" do
381
+ parent = self ( )
382
+
374
383
assert capture_log ( fn ->
375
384
{ :ok , pid } = Task . start ( __MODULE__ , :undef , [ ] )
376
385
ref = Process . monitor ( pid )
@@ -385,12 +394,15 @@ defmodule Logger.TranslatorTest do
385
394
386
395
assert_receive { :error , _pid , { Logger , [ "Task " <> _ | _ ] , _ts , task_metadata } }
387
396
assert_receive { :error , _pid , { Logger , [ "Process " | _ ] , _ts , process_metadata } }
397
+ assert [ parent ] == task_metadata [ :callers ]
388
398
389
399
assert { % UndefinedFunctionError { function: :undef } , [ _ | _ ] } = task_metadata [ :crash_reason ]
390
400
assert { % UndefinedFunctionError { function: :undef } , [ _ | _ ] } = process_metadata [ :crash_reason ]
391
401
end
392
402
393
403
test "translates Task raising ErlangError" do
404
+ parent = self ( )
405
+
394
406
assert capture_log ( fn ->
395
407
exception =
396
408
try do
@@ -413,12 +425,15 @@ defmodule Logger.TranslatorTest do
413
425
414
426
assert_receive { :error , _pid , { Logger , [ "Task " <> _ | _ ] , _ts , task_metadata } }
415
427
assert_receive { :error , _pid , { Logger , [ "Process " | _ ] , _ts , process_metadata } }
428
+ assert [ parent ] == task_metadata [ :callers ]
416
429
417
430
assert { % ErlangError { original: :foo } , [ _ | _ ] } = task_metadata [ :crash_reason ]
418
431
assert { % ErlangError { original: :foo } , [ _ | _ ] } = process_metadata [ :crash_reason ]
419
432
end
420
433
421
434
test "translates Task raising Erlang badarg error" do
435
+ parent = self ( )
436
+
422
437
assert capture_log ( fn ->
423
438
{ :ok , pid } = Task . start ( :erlang , :error , [ :badarg ] )
424
439
ref = Process . monitor ( pid )
@@ -433,12 +448,15 @@ defmodule Logger.TranslatorTest do
433
448
434
449
assert_receive { :error , _pid , { Logger , [ "Task " <> _ | _ ] , _ts , task_metadata } }
435
450
assert_receive { :error , _pid , { Logger , [ "Process " | _ ] , _ts , process_metadata } }
451
+ assert [ parent ] == task_metadata [ :callers ]
436
452
437
453
assert { % ArgumentError { message: "argument error" } , [ _ | _ ] } = task_metadata [ :crash_reason ]
438
454
assert { % ArgumentError { message: "argument error" } , [ _ | _ ] } = process_metadata [ :crash_reason ]
439
455
end
440
456
441
457
test "translates Task exiting abnormally" do
458
+ parent = self ( )
459
+
442
460
assert capture_log ( fn ->
443
461
{ :ok , pid } = Task . start ( :erlang , :exit , [ :abnormal ] )
444
462
ref = Process . monitor ( pid )
@@ -453,6 +471,7 @@ defmodule Logger.TranslatorTest do
453
471
454
472
assert_receive { :error , _pid , { Logger , [ "Task " <> _ | _ ] , _ts , task_metadata } }
455
473
assert_receive { :error , _pid , { Logger , [ "Process " | _ ] , _ts , process_metadata } }
474
+ assert [ parent ] == task_metadata [ :callers ]
456
475
457
476
assert { :abnormal , [ _ | _ ] } = task_metadata [ :crash_reason ]
458
477
assert { :abnormal , [ _ | _ ] } = process_metadata [ :crash_reason ]
@@ -625,8 +644,9 @@ defmodule Logger.TranslatorTest do
625
644
"""
626
645
end
627
646
628
- test "translates :proc_lib crashes on debug" do
647
+ test "translates :proc_lib+Task crashes on debug" do
629
648
{ :ok , pid } = Task . start_link ( __MODULE__ , :task , [ self ( ) ] )
649
+ parent = self ( )
630
650
631
651
assert capture_log ( :debug , fn ->
632
652
ref = Process . monitor ( pid )
@@ -652,13 +672,15 @@ defmodule Logger.TranslatorTest do
652
672
assert process_metadata [ :pid ] == task_metadata [ :pid ]
653
673
assert is_list ( process_metadata [ :callers ] )
654
674
assert is_list ( process_metadata [ :ancestors ] )
675
+ assert [ parent ] == task_metadata [ :callers ]
655
676
656
677
assert { % RuntimeError { message: "oops" } , [ _ | _ ] } = task_metadata [ :crash_reason ]
657
678
assert { % RuntimeError { message: "oops" } , [ _ | _ ] } = process_metadata [ :crash_reason ]
658
679
end
659
680
660
- test "translates :proc_lib crashes with neighbour on debug" do
681
+ test "translates :proc_lib+Task crashes with neighbour on debug" do
661
682
{ :ok , pid } = Task . start_link ( __MODULE__ , :sub_task , [ self ( ) ] )
683
+ parent = self ( )
662
684
663
685
assert capture_log ( :debug , fn ->
664
686
ref = Process . monitor ( pid )
@@ -677,6 +699,9 @@ defmodule Logger.TranslatorTest do
677
699
Current Stacktrace:
678
700
(lib/logger/)?test/logger/translator_test.exs:\d +: Logger.TranslatorTest.sleep/1
679
701
"""
702
+
703
+ assert_receive { :error , _pid , { Logger , [ "Task " <> _ | _ ] , _ts , task_metadata } }
704
+ assert [ parent ] == task_metadata [ :callers ]
680
705
end
681
706
682
707
test "translates Supervisor progress" do
0 commit comments