Skip to content

Commit 94be8a1

Browse files
author
José Valim
committed
Merge pull request #1917 from alco/simpler-translate_assert
Simplify the logic of translate_assert
2 parents 34c2c50 + c19ea55 commit 94be8a1

File tree

1 file changed

+50
-42
lines changed

1 file changed

+50
-42
lines changed

lib/ex_unit/lib/ex_unit/assertions.ex

Lines changed: 50 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)