@@ -50,21 +50,25 @@ defmodule ExUnit.Assertions do
5050
5151 """
5252 defmacro assert ( expected ) do
53- translate_assertion ( expected , fn ->
54- quote do
55- value = unquote ( expected )
56-
57- unless value do
58- raise ExUnit.ExpectationError ,
59- expr: unquote ( Macro . to_string ( expected ) ) ,
60- assertion: "be" ,
61- expected: "true" ,
62- actual: inspect ( value )
53+ case translate_assertion ( expected ) do
54+ nil ->
55+ # Default message in case no transform was performed
56+ quote do
57+ value = unquote ( expected )
58+
59+ unless value do
60+ raise ExUnit.ExpectationError ,
61+ expr: unquote ( Macro . to_string ( expected ) ) ,
62+ assertion: "be" ,
63+ expected: "true" ,
64+ actual: inspect ( value )
65+ end
66+
67+ value
6368 end
6469
65- value
66- end
67- end )
70+ value -> value
71+ end
6872 end
6973
7074 @ doc """
@@ -79,28 +83,32 @@ defmodule ExUnit.Assertions do
7983
8084 """
8185 defmacro refute ( expected ) do
82- contents = translate_assertion ( { :! , [ ] , [ expected ] } , fn ->
83- quote do
84- value = unquote ( expected )
85-
86- if value do
87- raise ExUnit.ExpectationError ,
88- expr: unquote ( Macro . to_string ( expected ) ) ,
89- assertion: "be" ,
90- expected: "false" ,
91- actual: inspect ( value )
86+ contents = case translate_assertion ( { :! , [ ] , [ expected ] } ) do
87+ nil ->
88+ # Default message in case no transform was performed
89+ quote do
90+ value = unquote ( expected )
91+
92+ if value do
93+ raise ExUnit.ExpectationError ,
94+ expr: unquote ( Macro . to_string ( expected ) ) ,
95+ assertion: "be" ,
96+ expected: "false" ,
97+ actual: inspect ( value )
98+ end
99+
100+ true
92101 end
93102
94- true
95- end
96- end )
103+ value -> value
104+ end
97105
98106 { :! , [ ] , [ contents ] }
99107 end
100108
101109 ## START HELPERS
102110
103- defp translate_assertion ( { := , _ , [ left , right ] } , _else ) do
111+ defp translate_assertion ( { := , _ , [ left , right ] } ) do
104112 quote do
105113 right = unquote ( right )
106114 case right do
@@ -115,43 +123,43 @@ defmodule ExUnit.Assertions do
115123 end
116124 end
117125
118- defp translate_assertion ( { :== , _ , [ left , right ] } , _else ) do
126+ defp translate_assertion ( { :== , _ , [ left , right ] } ) do
119127 assert_operator :== , left , right , "be equal to (==)"
120128 end
121129
122- defp translate_assertion ( { :< , _ , [ left , right ] } , _else ) do
130+ defp translate_assertion ( { :< , _ , [ left , right ] } ) do
123131 assert_operator :< , left , right , "be less than"
124132 end
125133
126- defp translate_assertion ( { :> , _ , [ left , right ] } , _else ) do
134+ defp translate_assertion ( { :> , _ , [ left , right ] } ) do
127135 assert_operator :> , left , right , "be more than"
128136 end
129137
130- defp translate_assertion ( { :<= , _ , [ left , right ] } , _else ) do
138+ defp translate_assertion ( { :<= , _ , [ left , right ] } ) do
131139 assert_operator :<= , left , right , "be less than or equal to"
132140 end
133141
134- defp translate_assertion ( { :>= , _ , [ left , right ] } , _else ) do
142+ defp translate_assertion ( { :>= , _ , [ left , right ] } ) do
135143 assert_operator :>= , left , right , "be more than or equal to"
136144 end
137145
138- defp translate_assertion ( { :=== , _ , [ left , right ] } , _else ) do
146+ defp translate_assertion ( { :=== , _ , [ left , right ] } ) do
139147 assert_operator :=== , left , right , "be equal to (===)"
140148 end
141149
142- defp translate_assertion ( { :!== , _ , [ left , right ] } , _else ) do
150+ defp translate_assertion ( { :!== , _ , [ left , right ] } ) do
143151 assert_operator :!== , left , right , "be not equal to (!==)"
144152 end
145153
146- defp translate_assertion ( { :!= , _ , [ left , right ] } , _else ) do
154+ defp translate_assertion ( { :!= , _ , [ left , right ] } ) do
147155 assert_operator :!= , left , right , "be not equal to (!=)"
148156 end
149157
150- defp translate_assertion ( { :=~ , _ , [ left , right ] } , _else ) do
158+ defp translate_assertion ( { :=~ , _ , [ left , right ] } ) do
151159 assert_operator :=~ , left , right , "match (=~)"
152160 end
153161
154- defp translate_assertion ( { :in , _ , [ left , right ] } , _else ) do
162+ defp translate_assertion ( { :in , _ , [ left , right ] } ) do
155163 quote do
156164 left = unquote ( left )
157165 right = unquote ( right )
@@ -161,7 +169,7 @@ defmodule ExUnit.Assertions do
161169
162170 ## Negative versions
163171
164- defp translate_assertion ( { :! , _ , [ { := , _ , [ left , right ] } ] } , _else ) do
172+ defp translate_assertion ( { :! , _ , [ { := , _ , [ left , right ] } ] } ) do
165173 quote do
166174 right = unquote ( right )
167175 case right do
@@ -177,15 +185,15 @@ defmodule ExUnit.Assertions do
177185 end
178186 end
179187
180- defp translate_assertion ( { :! , _ , [ { :=~ , _ , [ left , right ] } ] } , _else ) do
188+ defp translate_assertion ( { :! , _ , [ { :=~ , _ , [ left , right ] } ] } ) do
181189 quote do
182190 left = unquote ( left )
183191 right = unquote ( right )
184192 assert ! ( left =~ right ) , left , right , assertion: "match (=~)" , negation: true
185193 end
186194 end
187195
188- defp translate_assertion ( { negation , _ , [ { :in , _ , [ left , right ] } ] } , _else ) when negation in [ :! , :not ] do
196+ defp translate_assertion ( { negation , _ , [ { :in , _ , [ left , right ] } ] } ) when negation in [ :! , :not ] do
189197 quote do
190198 left = unquote ( left )
191199 right = unquote ( right )
@@ -195,8 +203,8 @@ defmodule ExUnit.Assertions do
195203
196204 ## Fallback
197205
198- defp translate_assertion ( _expected , fallback ) do
199- fallback . ( )
206+ defp translate_assertion ( _expected ) do
207+ nil
200208 end
201209
202210 defp assert_operator ( operator , expected , actual , text ) do
0 commit comments