style: use pkgshare instead of share/foo
This commit is contained in:
parent
792533462a
commit
1859162735
@ -848,22 +848,12 @@ module Homebrew
|
|||||||
# TODO: check could be in RuboCop
|
# TODO: check could be in RuboCop
|
||||||
problem "`#{Regexp.last_match(1)}` is now unnecessary" if line =~ /(require ["']formula["'])/
|
problem "`#{Regexp.last_match(1)}` is now unnecessary" if line =~ /(require ["']formula["'])/
|
||||||
|
|
||||||
if line.match?(%r{#\{share\}/#{Regexp.escape(formula.name)}[/'"]})
|
return unless !@core_tap && line =~ /depends_on .+ if build\.with(out)?\?\(?["']\w+["']\)?/
|
||||||
# TODO: check could be in RuboCop
|
|
||||||
problem "Use \#{pkgshare} instead of \#{share}/#{formula.name}"
|
|
||||||
end
|
|
||||||
|
|
||||||
if !@core_tap && line =~ /depends_on .+ if build\.with(out)?\?\(?["']\w+["']\)?/
|
|
||||||
# TODO: check could be in RuboCop
|
# TODO: check could be in RuboCop
|
||||||
problem "`Use :optional` or `:recommended` instead of `#{Regexp.last_match(0)}`"
|
problem "`Use :optional` or `:recommended` instead of `#{Regexp.last_match(0)}`"
|
||||||
end
|
end
|
||||||
|
|
||||||
if line =~ %r{share(\s*[/+]\s*)(['"])#{Regexp.escape(formula.name)}(?:\2|/)}
|
|
||||||
# TODO: check could be in RuboCop
|
|
||||||
problem "Use pkgshare instead of (share#{Regexp.last_match(1)}\"#{formula.name}\")"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def audit_reverse_migration
|
def audit_reverse_migration
|
||||||
# Only enforce for new formula being re-added to core
|
# Only enforce for new formula being re-added to core
|
||||||
return unless @strict
|
return unless @strict
|
||||||
|
|||||||
@ -121,6 +121,20 @@ module RuboCop
|
|||||||
problem "`env :userpaths` in homebrew/core formulae is deprecated"
|
problem "`env :userpaths` in homebrew/core formulae is deprecated"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
body_node.each_descendant(:dstr) do |dstr_node|
|
||||||
|
next unless match = dstr_node.source.match(%r{(\#{share}/#{Regexp.escape(@formula_name)})[ /"]})
|
||||||
|
|
||||||
|
offending_node(dstr_node)
|
||||||
|
problem "Use `\#{pkgshare}` instead of `#{match[1]}`"
|
||||||
|
end
|
||||||
|
|
||||||
|
find_every_method_call_by_name(body_node, :share).each do |share_node|
|
||||||
|
if match = share_node.parent.source.match(%r{(share\s*[/+]\s*"#{Regexp.escape(@formula_name)})[/"]})
|
||||||
|
offending_node(share_node.parent)
|
||||||
|
problem "Use `pkgshare` instead of `#{match[1]}\"`"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return unless formula_tap == "homebrew-core"
|
return unless formula_tap == "homebrew-core"
|
||||||
|
|
||||||
find_method_with_args(body_node, :env, :std) do
|
find_method_with_args(body_node, :env, :std) do
|
||||||
|
|||||||
@ -179,60 +179,6 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Intentionally outputted non-interpolated strings
|
|
||||||
# rubocop:disable Lint/InterpolationCheck
|
|
||||||
describe "#line_problems" do
|
|
||||||
specify "pkgshare" do
|
|
||||||
fa = formula_auditor "foo", <<~RUBY, strict: true
|
|
||||||
class Foo < Formula
|
|
||||||
url "https://brew.sh/foo-1.0.tgz"
|
|
||||||
end
|
|
||||||
RUBY
|
|
||||||
|
|
||||||
fa.line_problems 'ohai "#{share}/foo"', 3
|
|
||||||
expect(fa.problems.shift).to eq("Use \#{pkgshare} instead of \#{share}/foo")
|
|
||||||
|
|
||||||
fa.line_problems 'ohai "#{share}/foo/bar"', 3
|
|
||||||
expect(fa.problems.shift).to eq("Use \#{pkgshare} instead of \#{share}/foo")
|
|
||||||
|
|
||||||
fa.line_problems 'ohai share/"foo"', 3
|
|
||||||
expect(fa.problems.shift).to eq('Use pkgshare instead of (share/"foo")')
|
|
||||||
|
|
||||||
fa.line_problems 'ohai share/"foo/bar"', 3
|
|
||||||
expect(fa.problems.shift).to eq('Use pkgshare instead of (share/"foo")')
|
|
||||||
|
|
||||||
fa.line_problems 'ohai "#{share}/foo-bar"', 3
|
|
||||||
expect(fa.problems).to eq([])
|
|
||||||
|
|
||||||
fa.line_problems 'ohai share/"foo-bar"', 3
|
|
||||||
expect(fa.problems).to eq([])
|
|
||||||
|
|
||||||
fa.line_problems 'ohai share/"bar"', 3
|
|
||||||
expect(fa.problems).to eq([])
|
|
||||||
end
|
|
||||||
|
|
||||||
# Regression test for https://github.com/Homebrew/legacy-homebrew/pull/48744
|
|
||||||
# Formulae with "++" in their name would break various audit regexps:
|
|
||||||
# Error: nested *?+ in regexp: /^libxml++3\s/
|
|
||||||
specify "++ in name" do
|
|
||||||
fa = formula_auditor "foolibc++", <<~RUBY, strict: true
|
|
||||||
class Foolibcxx < Formula
|
|
||||||
desc "foolibc++ is a test"
|
|
||||||
url "https://brew.sh/foo-1.0.tgz"
|
|
||||||
end
|
|
||||||
RUBY
|
|
||||||
|
|
||||||
fa.line_problems 'ohai "#{share}/foolibc++"', 3
|
|
||||||
expect(fa.problems.shift)
|
|
||||||
.to eq("Use \#{pkgshare} instead of \#{share}/foolibc++")
|
|
||||||
|
|
||||||
fa.line_problems 'ohai share/"foolibc++"', 3
|
|
||||||
expect(fa.problems.shift)
|
|
||||||
.to eq('Use pkgshare instead of (share/"foolibc++")')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
# rubocop:enable Lint/InterpolationCheck
|
|
||||||
|
|
||||||
describe "#audit_github_repository" do
|
describe "#audit_github_repository" do
|
||||||
specify "#audit_github_repository when HOMEBREW_NO_GITHUB_API is set" do
|
specify "#audit_github_repository when HOMEBREW_NO_GITHUB_API is set" do
|
||||||
ENV["HOMEBREW_NO_GITHUB_API"] = "1"
|
ENV["HOMEBREW_NO_GITHUB_API"] = "1"
|
||||||
|
|||||||
@ -342,5 +342,101 @@ describe RuboCop::Cop::FormulaAuditStrict::Text do
|
|||||||
end
|
end
|
||||||
RUBY
|
RUBY
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "when `\#{share}/foo` is used instead of `\#{pkgshare}`" do
|
||||||
|
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
||||||
|
class Foo < Formula
|
||||||
|
def install
|
||||||
|
ohai "\#{share}/foo"
|
||||||
|
^^^^^^^^^^^^^^ Use `\#{pkgshare}` instead of `\#{share}/foo`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
|
|
||||||
|
it "when `\#{share}/foo/bar` is used instead of `\#{pkgshare}/bar`" do
|
||||||
|
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
||||||
|
class Foo < Formula
|
||||||
|
def install
|
||||||
|
ohai "\#{share}/foo/bar"
|
||||||
|
^^^^^^^^^^^^^^^^^^ Use `\#{pkgshare}` instead of `\#{share}/foo`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
|
|
||||||
|
it "when `\#{share}/foolibc++` is used instead of `\#{pkgshare}/foolibc++`" do
|
||||||
|
expect_offense(<<~RUBY, "/homebrew-core/Formula/foolibc++.rb")
|
||||||
|
class Foo < Formula
|
||||||
|
def install
|
||||||
|
ohai "\#{share}/foolibc++"
|
||||||
|
^^^^^^^^^^^^^^^^^^^^ Use `\#{pkgshare}` instead of `\#{share}/foolibc++`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
|
|
||||||
|
it "when `share/\"foo\"` is used instead of `pkgshare`" do
|
||||||
|
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
||||||
|
class Foo < Formula
|
||||||
|
def install
|
||||||
|
ohai share/"foo"
|
||||||
|
^^^^^^^^^^^ Use `pkgshare` instead of `share/"foo"`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
|
|
||||||
|
it "when `share/\"foo/bar\"` is used instead of `pkgshare`" do
|
||||||
|
expect_offense(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
||||||
|
class Foo < Formula
|
||||||
|
def install
|
||||||
|
ohai share/"foo/bar"
|
||||||
|
^^^^^^^^^^^^^^^ Use `pkgshare` instead of `share/"foo"`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
|
|
||||||
|
it "when `share/\"foolibc++\"` is used instead of `pkgshare`" do
|
||||||
|
expect_offense(<<~RUBY, "/homebrew-core/Formula/foolibc++.rb")
|
||||||
|
class Foo < Formula
|
||||||
|
def install
|
||||||
|
ohai share/"foolibc++"
|
||||||
|
^^^^^^^^^^^^^^^^^ Use `pkgshare` instead of `share/"foolibc++"`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
|
|
||||||
|
it "when `\#{share}/foo-bar` doesn't match formula name" do
|
||||||
|
expect_no_offenses(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
||||||
|
class Foo < Formula
|
||||||
|
def install
|
||||||
|
ohai "\#{share}/foo-bar"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
|
|
||||||
|
it "when `share/foo-bar` doesn't match formula name" do
|
||||||
|
expect_no_offenses(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
||||||
|
class Foo < Formula
|
||||||
|
def install
|
||||||
|
ohai share/"foo-bar"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
|
|
||||||
|
it "when `share/bar` doesn't match formula name" do
|
||||||
|
expect_no_offenses(<<~RUBY, "/homebrew-core/Formula/foo.rb")
|
||||||
|
class Foo < Formula
|
||||||
|
def install
|
||||||
|
ohai share/"bar"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user