48 lines
1.3 KiB
Ruby
48 lines
1.3 KiB
Ruby
# typed: false
|
|
# frozen_string_literal: true
|
|
|
|
module CaskCop
|
|
shared_examples "does not report any offenses" do
|
|
it "does not report any offenses" do
|
|
expect_no_offenses(source)
|
|
end
|
|
end
|
|
|
|
shared_examples "reports offenses" do
|
|
it "reports offenses" do
|
|
expect_reported_offenses(source, expected_offenses)
|
|
end
|
|
end
|
|
|
|
shared_examples "autocorrects source" do
|
|
it "autocorrects source" do
|
|
expect_autocorrected_source(source, correct_source)
|
|
end
|
|
end
|
|
|
|
def expect_no_offenses(source)
|
|
expect(inspect_source(source)).to be_empty
|
|
end
|
|
|
|
def expect_reported_offenses(source, expected_offenses)
|
|
offenses = inspect_source(source)
|
|
expect(offenses.size).to eq(expected_offenses.size)
|
|
expected_offenses.zip(offenses).each do |expected, actual|
|
|
expect_offense(expected, actual)
|
|
end
|
|
end
|
|
|
|
def expect_offense(expected, actual)
|
|
expect(actual.message).to eq(expected[:message])
|
|
expect(actual.severity).to eq(expected[:severity])
|
|
expect(actual.line).to eq(expected[:line])
|
|
expect(actual.column).to eq(expected[:column])
|
|
expect(actual.location.source).to eq(expected[:source])
|
|
end
|
|
|
|
def expect_autocorrected_source(source, correct_source)
|
|
new_source = autocorrect_source(source)
|
|
expect(new_source).to eq(Array(correct_source).join("\n"))
|
|
end
|
|
end
|