From efabd4b5c2beadecf3282dbe730b1b6f779571e0 Mon Sep 17 00:00:00 2001 From: Gautham Goli Date: Tue, 15 Aug 2017 00:42:56 +0530 Subject: [PATCH] Add tests for MACOS version consts usage --- .../Homebrew/rubocops/extend/formula_cop.rb | 4 ++-- Library/Homebrew/rubocops/lines_cop.rb | 16 ++++++------- .../Homebrew/test/rubocops/lines_cop_spec.rb | 24 +++++++++++++++++++ 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/rubocops/extend/formula_cop.rb b/Library/Homebrew/rubocops/extend/formula_cop.rb index 862dabfda4..76c7e43e9d 100644 --- a/Library/Homebrew/rubocops/extend/formula_cop.rb +++ b/Library/Homebrew/rubocops/extend/formula_cop.rb @@ -173,8 +173,8 @@ module RuboCop # if block given, yield matching nodes def find_const(node, const_name) return if node.nil? - node.each_child_node(:const) do |const_node| - next if const_node.const_name != const_name + node.each_descendant(:const) do |const_node| + next unless const_node.const_name == const_name @offensive_node = const_node @offense_source_range = const_node.source_range yield const_node if block_given? diff --git a/Library/Homebrew/rubocops/lines_cop.rb b/Library/Homebrew/rubocops/lines_cop.rb index 0ba3c6bc52..e5ccc09e9b 100644 --- a/Library/Homebrew/rubocops/lines_cop.rb +++ b/Library/Homebrew/rubocops/lines_cop.rb @@ -173,14 +173,14 @@ module RuboCop problem "Use \"if build.#{match[1].downcase}?\" instead" end - # find_const(body_node, :MACOS_VERSION) do - # problem "Use MacOS.version instead of MACOS_VERSION" - # end - # - # find_const(body_node, :MACOS_FULL_VERSION) do - # problem "Use MacOS.full_version instead of MACOS_FULL_VERSION" - # end - # + find_const(body_node, "MACOS_VERSION") do + problem "Use MacOS.version instead of MACOS_VERSION" + end + + find_const(body_node, "MACOS_FULL_VERSION") do + problem "Use MacOS.full_version instead of MACOS_FULL_VERSION" + end + # dependency(body_node) do |m| # # handle symbols and shit: WIP # next 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 44f22df623..b069148f93 100644 --- a/Library/Homebrew/test/rubocops/lines_cop_spec.rb +++ b/Library/Homebrew/test/rubocops/lines_cop_spec.rb @@ -1189,6 +1189,30 @@ describe RuboCop::Cop::FormulaAudit::Miscellaneous do end end + it "with MACOS_VERSION const" do + source = <<-EOS.undent + class Foo < Formula + desc "foo" + url 'http://example.com/foo-1.0.tgz' + test do + version = MACOS_VERSION + end + end + EOS + + expected_offenses = [{ message: "Use MacOS.version instead of MACOS_VERSION", + severity: :convention, + line: 5, + column: 14, + 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])