@@ -28,6 +28,12 @@ class MinitestAssertions < Base
2828
2929 # :nodoc:
3030 class BasicAssertion
31+ extend NodePattern ::Macros
32+
33+ def self . minitest_assertion
34+ raise NotImplementedError
35+ end
36+
3137 def initialize ( expected , actual , fail_message )
3238 @expected = expected &.source
3339 @actual = actual . source
@@ -60,7 +66,8 @@ class EqualAssertion < BasicAssertion
6066 refute_equal
6167 ] . freeze
6268
63- NODE_MATCHER_PATTERN = <<~PATTERN
69+ # @!method self.minitest_assertion(node)
70+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
6471 (send nil? {:assert_equal :assert_not_equal :refute_equal} $_ $_ $_?)
6572 PATTERN
6673
@@ -81,7 +88,8 @@ class InstanceOfAssertion < BasicAssertion
8188 refute_instance_of
8289 ] . freeze
8390
84- NODE_MATCHER_PATTERN = <<~PATTERN
91+ # @!method self.minitest_assertion(node)
92+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
8593 (send nil? {:assert_instance_of :assert_not_instance_of :refute_instance_of} $_ $_ $_?)
8694 PATTERN
8795
@@ -102,7 +110,8 @@ class IncludesAssertion < BasicAssertion
102110 refute_includes
103111 ] . freeze
104112
105- NODE_MATCHER_PATTERN = <<~PATTERN
113+ # @!method self.minitest_assertion(node)
114+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
106115 (send nil? {:assert_includes :assert_not_includes :refute_includes} $_ $_ $_?)
107116 PATTERN
108117
@@ -123,7 +132,8 @@ class PredicateAssertion < BasicAssertion
123132 refute_predicate
124133 ] . freeze
125134
126- NODE_MATCHER_PATTERN = <<~PATTERN
135+ # @!method self.minitest_assertion(node)
136+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
127137 (send nil? {:assert_predicate :assert_not_predicate :refute_predicate} $_ ${sym} $_?)
128138 PATTERN
129139
@@ -145,7 +155,8 @@ class MatchAssertion < BasicAssertion
145155 refute_match
146156 ] . freeze
147157
148- NODE_MATCHER_PATTERN = <<~PATTERN
158+ # @!method self.minitest_assertion(node)
159+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
149160 (send nil? {:assert_match :refute_match} $_ $_ $_?)
150161 PATTERN
151162
@@ -166,7 +177,8 @@ class NilAssertion < BasicAssertion
166177 refute_nil
167178 ] . freeze
168179
169- NODE_MATCHER_PATTERN = <<~PATTERN
180+ # @!method self.minitest_assertion(node)
181+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
170182 (send nil? {:assert_nil :assert_not_nil :refute_nil} $_ $_?)
171183 PATTERN
172184
@@ -187,7 +199,8 @@ class EmptyAssertion < BasicAssertion
187199 refute_empty
188200 ] . freeze
189201
190- NODE_MATCHER_PATTERN = <<~PATTERN
202+ # @!method self.minitest_assertion(node)
203+ def_node_matcher 'self.minitest_assertion' , <<~PATTERN # rubocop:disable InternalAffairs/NodeMatcherDirective
191204 (send nil? {:assert_empty :assert_not_empty :refute_empty} $_ $_?)
192205 PATTERN
193206
@@ -211,17 +224,9 @@ def assertion
211224
212225 RESTRICT_ON_SEND = ASSERTION_MATCHERS . flat_map { |m | m ::MATCHERS }
213226
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-
220227 def on_send ( node )
221228 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 |
225230 assertion = m . match ( *args )
226231
227232 next if assertion . nil?
0 commit comments