aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/rubocops/class_cop_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/test/rubocops/class_cop_spec.rb')
-rw-r--r--Library/Homebrew/test/rubocops/class_cop_spec.rb103
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