diff options
Diffstat (limited to 'Library/Homebrew/test/rubocops/class_cop_spec.rb')
| -rw-r--r-- | Library/Homebrew/test/rubocops/class_cop_spec.rb | 103 |
1 files changed, 42 insertions, 61 deletions
diff --git a/Library/Homebrew/test/rubocops/class_cop_spec.rb b/Library/Homebrew/test/rubocops/class_cop_spec.rb index 3f210af11..2ea58777a 100644 --- a/Library/Homebrew/test/rubocops/class_cop_spec.rb +++ b/Library/Homebrew/test/rubocops/class_cop_spec.rb @@ -1,81 +1,62 @@ -require "rubocop" -require "rubocop/rspec/support" -require_relative "../../extend/string" require_relative "../../rubocops/class_cop" describe RuboCop::Cop::FormulaAudit::ClassName do subject(:cop) { described_class.new } - context "When auditing formula" do - it "with deprecated inheritance" do - formulas = [{ - "class" => "GithubGistFormula", - }, { - "class" => "ScriptFileFormula", - }, { - "class" => "AmazonWebServicesFormula", - }] - - formulas.each do |formula| - source = <<~EOS - class Foo < #{formula["class"]} - url 'http://example.com/foo-1.0.tgz' - end - EOS + it "reports an offense when using ScriptFileFormula" do + expect_offense(<<~RUBY) + class Foo < ScriptFileFormula + ^^^^^^^^^^^^^^^^^ ScriptFileFormula is deprecated, use Formula instead + url 'http://example.com/foo-1.0.tgz' + end + RUBY + end - expected_offenses = [{ message: "#{formula["class"]} is deprecated, use Formula instead", - severity: :convention, - line: 1, - column: 12, - source: source }] + it "reports an offense when using GithubGistFormula" do + expect_offense(<<~RUBY) + class Foo < GithubGistFormula + ^^^^^^^^^^^^^^^^^ GithubGistFormula is deprecated, use Formula instead + url 'http://example.com/foo-1.0.tgz' + end + RUBY + end - inspect_source(source) + it "reports an offense when using AmazonWebServicesFormula" do + expect_offense(<<~RUBY) + class Foo < AmazonWebServicesFormula + ^^^^^^^^^^^^^^^^^^^^^^^^ AmazonWebServicesFormula is deprecated, use Formula instead + url 'http://example.com/foo-1.0.tgz' + end + RUBY + end - expected_offenses.zip(cop.offenses.reverse).each do |expected, actual| - expect_offense(expected, actual) - end + it "supports auto-correcting deprecated parent classes" do + source = <<~EOS + class Foo < AmazonWebServicesFormula + url 'http://example.com/foo-1.0.tgz' end - end + EOS - it "with deprecated inheritance and autocorrect" do - source = <<~EOS - class Foo < AmazonWebServicesFormula - url 'http://example.com/foo-1.0.tgz' - end - EOS - corrected_source = <<~EOS - class Foo < Formula - url 'http://example.com/foo-1.0.tgz' - end - EOS + corrected_source = <<~EOS + class Foo < Formula + url 'http://example.com/foo-1.0.tgz' + end + EOS - new_source = autocorrect_source(source) - expect(new_source).to eq(corrected_source) - end + new_source = autocorrect_source(source) + expect(new_source).to eq(corrected_source) end end describe RuboCop::Cop::FormulaAuditStrict::Test do subject(:cop) { described_class.new } - context "When auditing formula" do - it "without a test block" do - source = <<~EOS - class Foo < Formula - url 'http://example.com/foo-1.0.tgz' - end - EOS - expected_offenses = [{ message: described_class::MSG, - severity: :convention, - line: 1, - column: 0, - source: source }] - - inspect_source(source) - - expected_offenses.zip(cop.offenses).each do |expected, actual| - expect_offense(expected, actual) + it "reports an offense when there is no test block" do + expect_offense(<<~RUBY) + class Foo < Formula + ^^^^^^^^^^^^^^^^^^^ A `test do` test block should be added + url 'http://example.com/foo-1.0.tgz' end - end + RUBY end end |
