@@ -50,14 +50,23 @@ class MultipleExpectations < Cop
50
50
51
51
MSG = 'Example has too many expectations [%<total>d/%<max>d].'
52
52
53
- def_node_search :with_aggregate_failures? , '(sym :aggregate_failures)'
54
- def_node_search :disabled_aggregate_failures? , <<-PATTERN
55
- (pair (sym :aggregate_failures) (false))
53
+ def_node_matcher :aggregate_failures? , <<-PATTERN
54
+ (block {
55
+ (send _ _ <(sym :aggregate_failures) ...>)
56
+ (send _ _ ... (hash <(pair (sym :aggregate_failures) true) ...>))
57
+ } ...)
58
+ PATTERN
59
+
60
+ def_node_matcher :aggregate_failures_present? , <<-PATTERN
61
+ (block {
62
+ (send _ _ <(sym :aggregate_failures) ...>)
63
+ (send _ _ ... (hash <(pair (sym :aggregate_failures) _) ...>))
64
+ } ...)
56
65
PATTERN
57
66
58
67
def_node_matcher :expect? , Expectations ::ALL . send_pattern
59
68
def_node_matcher :aggregate_failures_block? , <<-PATTERN
60
- (block (send _ :aggregate_failures ...) ...)
69
+ (block (send nil? :aggregate_failures ...) ...)
61
70
PATTERN
62
71
63
72
def on_block ( node )
@@ -88,23 +97,6 @@ def find_aggregate_failures(example_node)
88
97
. find { |block_node | aggregate_failures_present? ( block_node ) }
89
98
end
90
99
91
- def aggregate_failures_present? ( node )
92
- metadata ( node ) &.any? ( &method ( :with_aggregate_failures? ) )
93
- end
94
-
95
- def aggregate_failures? ( example_or_group_node )
96
- metadata ( example_or_group_node ) &.any? do |metadata |
97
- with_aggregate_failures? ( metadata ) &&
98
- !disabled_aggregate_failures? ( metadata )
99
- end
100
- end
101
-
102
- def metadata ( example_or_group_node )
103
- RuboCop ::RSpec ::Example
104
- . new ( example_or_group_node )
105
- . metadata
106
- end
107
-
108
100
def find_expectation ( node , &block )
109
101
yield if expect? ( node ) || aggregate_failures_block? ( node )
110
102
0 commit comments