@@ -28,6 +28,12 @@ class MinitestAssertions < Base
28
28
29
29
# :nodoc:
30
30
class BasicAssertion
31
+ extend NodePattern ::Macros
32
+
33
+ def self . minitest_assertion
34
+ raise NotImplementedError
35
+ end
36
+
31
37
def initialize ( expected , actual , fail_message )
32
38
@expected = expected &.source
33
39
@actual = actual . source
@@ -60,7 +66,8 @@ class EqualAssertion < BasicAssertion
60
66
refute_equal
61
67
] . freeze
62
68
63
- NODE_MATCHER_PATTERN = <<~PATTERN
69
+ # @!method self.minitest_assertion(node)
70
+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
64
71
(send nil? {:assert_equal :assert_not_equal :refute_equal} $_ $_ $_?)
65
72
PATTERN
66
73
@@ -81,7 +88,8 @@ class InstanceOfAssertion < BasicAssertion
81
88
refute_instance_of
82
89
] . freeze
83
90
84
- NODE_MATCHER_PATTERN = <<~PATTERN
91
+ # @!method self.minitest_assertion(node)
92
+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
85
93
(send nil? {:assert_instance_of :assert_not_instance_of :refute_instance_of} $_ $_ $_?)
86
94
PATTERN
87
95
@@ -102,7 +110,8 @@ class IncludesAssertion < BasicAssertion
102
110
refute_includes
103
111
] . freeze
104
112
105
- NODE_MATCHER_PATTERN = <<~PATTERN
113
+ # @!method self.minitest_assertion(node)
114
+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
106
115
(send nil? {:assert_includes :assert_not_includes :refute_includes} $_ $_ $_?)
107
116
PATTERN
108
117
@@ -123,7 +132,8 @@ class PredicateAssertion < BasicAssertion
123
132
refute_predicate
124
133
] . freeze
125
134
126
- NODE_MATCHER_PATTERN = <<~PATTERN
135
+ # @!method self.minitest_assertion(node)
136
+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
127
137
(send nil? {:assert_predicate :assert_not_predicate :refute_predicate} $_ ${sym} $_?)
128
138
PATTERN
129
139
@@ -145,7 +155,8 @@ class MatchAssertion < BasicAssertion
145
155
refute_match
146
156
] . freeze
147
157
148
- NODE_MATCHER_PATTERN = <<~PATTERN
158
+ # @!method self.minitest_assertion(node)
159
+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
149
160
(send nil? {:assert_match :refute_match} $_ $_ $_?)
150
161
PATTERN
151
162
@@ -166,7 +177,8 @@ class NilAssertion < BasicAssertion
166
177
refute_nil
167
178
] . freeze
168
179
169
- NODE_MATCHER_PATTERN = <<~PATTERN
180
+ # @!method self.minitest_assertion(node)
181
+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
170
182
(send nil? {:assert_nil :assert_not_nil :refute_nil} $_ $_?)
171
183
PATTERN
172
184
@@ -187,7 +199,8 @@ class EmptyAssertion < BasicAssertion
187
199
refute_empty
188
200
] . freeze
189
201
190
- NODE_MATCHER_PATTERN = <<~PATTERN
202
+ # @!method self.minitest_assertion(node)
203
+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
191
204
(send nil? {:assert_empty :assert_not_empty :refute_empty} $_ $_?)
192
205
PATTERN
193
206
@@ -211,17 +224,9 @@ def assertion
211
224
212
225
RESTRICT_ON_SEND = ASSERTION_MATCHERS . flat_map { |m | m ::MATCHERS }
213
226
214
- ASSERTION_MATCHERS . each do |m |
215
- name = m . name . split ( '::' ) . last
216
-
217
- def_node_matcher "minitest_#{ name } " . to_sym , m ::NODE_MATCHER_PATTERN
218
- end
219
-
220
227
def on_send ( node )
221
228
ASSERTION_MATCHERS . each do |m |
222
- name = m . name . split ( '::' ) . last
223
-
224
- public_send ( "minitest_#{ name } " . to_sym , node ) do |*args |
229
+ m . minitest_assertion ( node ) do |*args |
225
230
assertion = m . match ( *args )
226
231
227
232
next if assertion . nil?
0 commit comments