Sha256: 8892d02b0a7c2ec877942e2fa389b3027040a55393a5132c8ee5948e835fe0d4
Contents?: true
Size: 1.29 KB
Versions: 1
Compression:
Stored size: 1.29 KB
Contents
# frozen_string_literal: true module RuboCop module RSpec # Helper methods for top level example group cops module TopLevelGroup extend RuboCop::NodePattern::Macros include RuboCop::RSpec::Language def_node_matcher :example_or_shared_group?, (ExampleGroups::ALL + SharedGroups::ALL).block_pattern def on_new_investigation super return unless root_node top_level_groups.each do |node| example_group?(node, &method(:on_top_level_example_group)) on_top_level_group(node) end end def top_level_groups @top_level_groups ||= top_level_nodes(root_node).select { |n| example_or_shared_group?(n) } end private # Dummy methods to be overridden in the consumer def on_top_level_example_group; end def on_top_level_group; end def top_level_group?(node) top_level_groups.include?(node) end def top_level_nodes(node) if node.nil? [] elsif node.begin_type? node.children elsif node.module_type? || node.class_type? top_level_nodes(node.body) else [node] end end def root_node processed_source.ast end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rubocop-rspec-1.43.1 | lib/rubocop/rspec/top_level_group.rb |