diff options
| author | Gautham Goli | 2017-08-14 21:34:01 +0530 |
|---|---|---|
| committer | Gautham Goli | 2017-08-14 21:45:01 +0530 |
| commit | 9c9c280c8aeb97a6ec8956242727208d80247826 (patch) | |
| tree | d491280f749e0924db7355d82854941c3a56359a | |
| parent | 65ae6bacd8c92d718b259f7efd50fc3fe9f0838b (diff) | |
| download | brew-9c9c280c8aeb97a6ec8956242727208d80247826.tar.bz2 | |
add tests for formula path string 1
| -rw-r--r-- | Library/Homebrew/rubocops/lines_cop.rb | 38 | ||||
| -rw-r--r-- | Library/Homebrew/test/rubocops/lines_cop_spec.rb | 24 |
2 files changed, 43 insertions, 19 deletions
diff --git a/Library/Homebrew/rubocops/lines_cop.rb b/Library/Homebrew/rubocops/lines_cop.rb index 919b21243..49eff510d 100644 --- a/Library/Homebrew/rubocops/lines_cop.rb +++ b/Library/Homebrew/rubocops/lines_cop.rb @@ -118,24 +118,24 @@ module RuboCop end end - # # Prefer formula path shortcuts in strings - # formula_path_strings(body_node, :prefix) do |p| - # next unless match = regex_match_group(p, %r{(/(man))[/'"]}) - # problem "\"\#\{prefix}#{match[1]}\" should be \"\#{#{match[3]}}\"" - # end - # - # formula_path_strings(body_node, :share) do |p| - # if match = regex_match_group(p, %r{/(bin|include|libexec|lib|sbin|share|Frameworks)}i) - # problem "\"\#\{prefix}#{match[1]}\" should be \"\#{#{match[1].downcase}}\"" - # end - # if match = regex_match_group(p, %r{((/share/man/|\#\{man\}/)(man[1-8]))}) - # problem "\"\#\{prefix}#{match[1]}\" should be \"\#{#{match[3]}}\"" - # end - # if match = regex_match_group(p, %r{(/share/(info|man))}) - # problem "\"\#\{prefix}#{match[1]}\" should be \"\#{#{match[2]}}\"" - # end - # end - # + # Prefer formula path shortcuts in strings + formula_path_strings(body_node, :share) do |p| + next unless match = regex_match_group(p, %r{(/(man))/?}) + problem "\"\#\{share}#{match[1]}\" should be \"\#{#{match[2]}}\"" + end + + formula_path_strings(body_node, :share) do |p| + if match = regex_match_group(p, %r{/(bin|include|libexec|lib|sbin|share|Frameworks)}i) + problem "\"\#\{prefix}#{match[1]}\" should be \"\#{#{match[1].downcase}}\"" + end + if match = regex_match_group(p, %r{((/share/man/|\#\{man\}/)(man[1-8]))}) + problem "\"\#\{prefix}#{match[1]}\" should be \"\#{#{match[3]}}\"" + end + if match = regex_match_group(p, %r{(/share/(info|man))}) + problem "\"\#\{prefix}#{match[1]}\" should be \"\#{#{match[2]}}\"" + end + end + # find_every_method_call_by_name(body_node, :depends_on) do |m| # key, value = destructure_hash(paramters(m).first) # next unless key.str_type? @@ -349,7 +349,7 @@ module RuboCop (hash (pair $_ $_)) EOS - def_node_matcher :formula_path_strings, <<-EOS.undent + def_node_search :formula_path_strings, <<-EOS.undent (dstr (begin (send nil %1)) $(str _ )) EOS diff --git a/Library/Homebrew/test/rubocops/lines_cop_spec.rb b/Library/Homebrew/test/rubocops/lines_cop_spec.rb index afe65e9ac..63ae88dd9 100644 --- a/Library/Homebrew/test/rubocops/lines_cop_spec.rb +++ b/Library/Homebrew/test/rubocops/lines_cop_spec.rb @@ -955,6 +955,30 @@ describe RuboCop::Cop::FormulaAudit::Miscellaneous do expect_offense(expected, actual) end end + + it "with formula path shortcut long form" do + source = <<-EOS.undent + class Foo < Formula + desc "foo" + url 'http://example.com/foo-1.0.tgz' + def install + mv "\#{share}/man", share + end + end + EOS + + expected_offenses = [{ message: "\"\#\{share}/man\" should be \"\#{man}\"", + severity: :convention, + line: 5, + column: 17, + 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]) |
