@@ -345,9 +345,17 @@ defmodule ExUnit.Case do
345
345
346
346
var = Macro . escape ( var )
347
347
contents = Macro . escape ( contents , unquote: true )
348
-
349
- quote bind_quoted: [ var: var , contents: contents , message: message ] do
350
- name = ExUnit.Case . register_test ( __ENV__ , :test , message , [ ] )
348
+ % { module: mod , file: file , line: line } = __CALLER__
349
+
350
+ quote bind_quoted: [
351
+ var: var ,
352
+ contents: contents ,
353
+ message: message ,
354
+ mod: mod ,
355
+ file: file ,
356
+ line: line
357
+ ] do
358
+ name = ExUnit.Case . register_test ( mod , file , line , :test , message , [ ] )
351
359
def unquote ( name ) ( unquote ( var ) ) , do: unquote ( contents )
352
360
end
353
361
end
@@ -366,8 +374,10 @@ defmodule ExUnit.Case do
366
374
367
375
"""
368
376
defmacro test ( message ) do
377
+ % { module: mod , file: file , line: line } = __CALLER__
378
+
369
379
quote bind_quoted: binding ( ) do
370
- name = ExUnit.Case . register_test ( __ENV__ , :test , message , [ :not_implemented ] )
380
+ name = ExUnit.Case . register_test ( mod , file , line , :test , message , [ :not_implemented ] )
371
381
def unquote ( name ) ( _ ) , do: flunk ( "Not implemented" )
372
382
end
373
383
end
@@ -508,7 +518,7 @@ defmodule ExUnit.Case do
508
518
display. You can use `ExUnit.plural_rule/2` to set a custom
509
519
pluralization.
510
520
"""
511
- def register_test ( % { module: mod , file: file , line: line } , test_type , name , tags ) do
521
+ def register_test ( mod , file , line , test_type , name , tags ) do
512
522
unless Module . has_attribute? ( mod , :ex_unit_tests ) do
513
523
raise "cannot define #{ test_type } . Please make sure you have invoked " <>
514
524
"\" use ExUnit.Case\" in the current module"
@@ -569,6 +579,17 @@ defmodule ExUnit.Case do
569
579
name
570
580
end
571
581
582
+ @ doc """
583
+ Reigsters a test with the given environment.
584
+
585
+ This function is deprecated in favor of register_test/6 which performs
586
+ better under tight loops by avoiding `__ENV__`.
587
+ """
588
+ @ doc deprecated: "Use register_test/6 instead"
589
+ def register_test ( % { module: mod , file: file , line: line } , test_type , name , tags ) do
590
+ register_test ( mod , file , line , test_type , name , tags )
591
+ end
592
+
572
593
@ doc """
573
594
Registers a new attribute to be used during `ExUnit.Case` tests.
574
595
0 commit comments