Class: RuboCop::Cop::RSpec::RepeatedExampleGroupBody
- Includes:
- RepeatedItems, SkipOrPending
- Defined in:
- lib/rubocop/cop/rspec/repeated_example_group_body.rb
Overview
Check for repeated describe and context block body.
Constant Summary collapse
- MSG =
'Repeated %<group>s block body on line(s) %<loc>s'
Instance Method Summary collapse
- #body(node) ⇒ Object
- #const_arg(node) ⇒ Object
- #metadata(node) ⇒ Object
- #on_begin(node) ⇒ Object
- #several_example_groups?(node) ⇒ Object
Methods included from RepeatedItems
#add_repeated_lines, #find_repeated_groups
Methods included from SkipOrPending
#skip_or_pending_inside_block?, #skipped_in_metadata?
Methods inherited from Base
inherited, #on_new_investigation
Methods included from RSpec::Language
#example?, #example_group?, #example_group_with_body?, #explicit_rspec?, #hook?, #include?, #let?, #rspec?, #shared_group?, #spec_group?, #subject?
Instance Method Details
#body(node) ⇒ Object
60 |
# File 'lib/rubocop/cop/rspec/repeated_example_group_body.rb', line 60 def_node_matcher :body, '(block _ args $...)' |
#const_arg(node) ⇒ Object
63 |
# File 'lib/rubocop/cop/rspec/repeated_example_group_body.rb', line 63 def_node_matcher :const_arg, '(block (send _ _ $const ...) ...)' |
#metadata(node) ⇒ Object
57 |
# File 'lib/rubocop/cop/rspec/repeated_example_group_body.rb', line 57 def_node_matcher :metadata, '(block (send _ _ _ $...) ...)' |
#on_begin(node) ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/rubocop/cop/rspec/repeated_example_group_body.rb', line 65 def on_begin(node) return unless several_example_groups?(node) repeated_group_bodies(node).each do |group, repeats| add_offense(group, message: (group, repeats)) end end |
#several_example_groups?(node) ⇒ Object
52 53 54 |
# File 'lib/rubocop/cop/rspec/repeated_example_group_body.rb', line 52 def_node_matcher :several_example_groups?, <<~PATTERN (begin <#example_group_with_body? #example_group_with_body? ...>) PATTERN |