class RuboCop::Cop::RSpec::OverwritingSetup
let!(:other) { other }
let(:baz) { baz }
let(:foo) { bar }
subject(:test) { something }
# good
let!(:foo) { baz }
let(:foo) { bar }
let(:foo) { baz }
subject(:foo) { bar }
let(:foo) { baz }
let(:foo) { bar }
# bad
@example
Checks if there is a let/subject that overwrites an existing one.
def find_duplicates(node)
def find_duplicates(node) setup_expressions = Set.new node.each_child_node do |child| setup?(child) do |name| yield child, name unless setup_expressions.add?(name) end end end
def on_block(node)
def on_block(node) return unless example_group_with_body?(node) find_duplicates(node.body) do |duplicate, name| add_offense( duplicate, location: :expression, message: format(MSG, name: name) ) end end