aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/rubocops/extend/formula_cop.rb1
-rw-r--r--Library/Homebrew/rubocops/lines_cop.rb6
-rw-r--r--Library/Homebrew/test/rubocops/lines_cop_spec.rb23
3 files changed, 27 insertions, 3 deletions
diff --git a/Library/Homebrew/rubocops/extend/formula_cop.rb b/Library/Homebrew/rubocops/extend/formula_cop.rb
index 08c9e6eb8..cb404046c 100644
--- a/Library/Homebrew/rubocops/extend/formula_cop.rb
+++ b/Library/Homebrew/rubocops/extend/formula_cop.rb
@@ -232,6 +232,7 @@ module RuboCop
@offense_source_range = def_node.source_range
return def_node
end
+ return if node.parent.nil?
# If not found then, parent node becomes the offensive node
@offensive_node = node.parent
@offense_source_range = node.parent.source_range
diff --git a/Library/Homebrew/rubocops/lines_cop.rb b/Library/Homebrew/rubocops/lines_cop.rb
index 1b7a1935e..22df46205 100644
--- a/Library/Homebrew/rubocops/lines_cop.rb
+++ b/Library/Homebrew/rubocops/lines_cop.rb
@@ -271,9 +271,9 @@ module RuboCop
problem "Use the `#{match}` Ruby method instead of `#{m.source}`"
end
- # if find_method_def(@processed_source.ast)
- # problem "Define method #{method_name(@offensive_node)} in the class body, not at the top-level"
- # end
+ if find_method_def(@processed_source.ast)
+ problem "Define method #{method_name(@offensive_node)} in the class body, not at the top-level"
+ end
#
# find_instance_method_call(body_node, :build, :without?) do |m|
# next unless unless_modifier?(m.parent)
diff --git a/Library/Homebrew/test/rubocops/lines_cop_spec.rb b/Library/Homebrew/test/rubocops/lines_cop_spec.rb
index 1af5d2e72..00543f545 100644
--- a/Library/Homebrew/test/rubocops/lines_cop_spec.rb
+++ b/Library/Homebrew/test/rubocops/lines_cop_spec.rb
@@ -596,6 +596,29 @@ describe RuboCop::Cop::FormulaAudit::Miscellaneous do
expect_offense(expected, actual)
end
end
+ it "with a top-level function def " do
+ source = <<-EOS.undent
+ def test
+ nil
+ end
+ class Foo < Formula
+ desc "foo"
+ url 'http://example.com/foo-1.0.tgz'
+ end
+ EOS
+
+ expected_offenses = [{ message: "Define method test in the class body, not at the top-level",
+ severity: :convention,
+ line: 1,
+ column: 0,
+ source: source }]
+
+ inspect_source(cop, source)
+
+ expected_offenses.zip(cop.offenses).each do |expected, actual|
+ expect_offense(expected, actual)
+ end
+ end
end
def expect_offense(expected, actual)
expect(actual.message).to eq(expected[:message])