aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGautham Goli2017-08-02 23:49:51 +0530
committerGautham Goli2017-08-06 02:28:58 +0530
commit781da49df87f9f2ddbb3f812e3d53963500cc423 (patch)
tree754aa8476cacbf97c00537223489caad5d5d6e49
parent7614d2cc8be065c33f4e4e893ccd1f0995a05401 (diff)
downloadbrew-781da49df87f9f2ddbb3f812e3d53963500cc423.tar.bz2
audit: Add tests for audit rules ported from line_problems method to rubocops
-rw-r--r--Library/Homebrew/test/rubocops/lines_cop_spec.rb151
1 files changed, 151 insertions, 0 deletions
diff --git a/Library/Homebrew/test/rubocops/lines_cop_spec.rb b/Library/Homebrew/test/rubocops/lines_cop_spec.rb
index c865e1480..b0ed8f4d1 100644
--- a/Library/Homebrew/test/rubocops/lines_cop_spec.rb
+++ b/Library/Homebrew/test/rubocops/lines_cop_spec.rb
@@ -51,3 +51,154 @@ describe RuboCop::Cop::FormulaAudit::Lines do
end
end
end
+
+describe RuboCop::Cop::FormulaAudit::ClassInheritance do
+ subject(:cop) { described_class.new }
+
+ context "When auditing lines" do
+ it "with no space in class inheritance" do
+ source = <<-EOS.undent
+ class Foo<Formula
+ desc "foo"
+ url 'http://example.com/foo-1.0.tgz'
+ end
+ EOS
+
+ expected_offenses = [{ message: "Use a space in class inheritance: class Foo < Formula",
+ severity: :convention,
+ line: 1,
+ column: 10,
+ source: source }]
+
+ inspect_source(cop, source)
+
+ expected_offenses.zip(cop.offenses).each do |expected, actual|
+ expect_offense(expected, actual)
+ end
+ end
+ end
+end
+
+describe RuboCop::Cop::FormulaAudit::Comments do
+ subject(:cop) { described_class.new }
+
+ context "When auditing formula" do
+ it "with commented cmake call" do
+ source = <<-EOS.undent
+ class Foo < Formula
+ desc "foo"
+ url 'http://example.com/foo-1.0.tgz'
+ # system "cmake", ".", *std_cmake_args
+ end
+ EOS
+
+ expected_offenses = [{ message: "Please remove default template comments",
+ severity: :convention,
+ line: 4,
+ column: 2,
+ source: source }]
+
+ inspect_source(cop, source)
+
+ expected_offenses.zip(cop.offenses).each do |expected, actual|
+ expect_offense(expected, actual)
+ end
+ end
+
+ it "with default template comments" do
+ source = <<-EOS.undent
+ class Foo < Formula
+ # PLEASE REMOVE
+ desc "foo"
+ url 'http://example.com/foo-1.0.tgz'
+ end
+ EOS
+
+ expected_offenses = [{ message: "Please remove default template comments",
+ severity: :convention,
+ line: 2,
+ column: 2,
+ source: source }]
+
+ inspect_source(cop, source)
+
+ expected_offenses.zip(cop.offenses).each do |expected, actual|
+ expect_offense(expected, actual)
+ end
+ end
+
+ it "with commented out depends_on" do
+ source = <<-EOS.undent
+ class Foo < Formula
+ desc "foo"
+ url 'http://example.com/foo-1.0.tgz'
+ # depends_on "foo"
+ end
+ EOS
+
+ expected_offenses = [{ message: 'Commented-out dependency "foo"',
+ severity: :convention,
+ line: 4,
+ column: 2,
+ source: source }]
+
+ inspect_source(cop, source)
+
+ expected_offenses.zip(cop.offenses).each do |expected, actual|
+ expect_offense(expected, actual)
+ end
+ end
+ end
+end
+
+describe RuboCop::Cop::FormulaAudit::Miscellaneous do
+ subject(:cop) { described_class.new }
+
+ context "When auditing formula" do
+ it "with FileUtils" do
+ source = <<-EOS.undent
+ class Foo < Formula
+ desc "foo"
+ url 'http://example.com/foo-1.0.tgz'
+ FileUtils.mv "hello"
+ end
+ EOS
+
+ expected_offenses = [{ message: "Don't need 'FileUtils.' before mv",
+ severity: :convention,
+ line: 4,
+ column: 2,
+ source: source }]
+
+ inspect_source(cop, source)
+
+ expected_offenses.zip(cop.offenses).each do |expected, actual|
+ expect_offense(expected, actual)
+ end
+ end
+
+ it "with long inreplace block vars" do
+ source = <<-EOS.undent
+ class Foo < Formula
+ desc "foo"
+ url 'http://example.com/foo-1.0.tgz'
+ inreplace "foo" do |longvar|
+ somerandomCall(longvar)
+ end
+ end
+ EOS
+
+ expected_offenses = [{ message: "\"inreplace <filenames> do |s|\" is preferred over \"|longvar|\".",
+ severity: :convention,
+ line: 4,
+ column: 2,
+ source: source }]
+
+ inspect_source(cop, source)
+
+ expected_offenses.zip(cop.offenses).each do |expected, actual|
+ expect_offense(expected, actual)
+ end
+ end
+ end
+end