Merge pull request #5091 from commitay/versioned-keg-only

audit: check versioned formulae for `keg_only :versioned_formula`
This commit is contained in:
commitay 2018-10-20 13:40:37 +10:00 committed by GitHub
commit 598909577c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 63 additions and 0 deletions

View File

@ -525,6 +525,25 @@ module Homebrew
problem "keg_only reason should not end with a period."
end
def audit_versioned_keg_only
return unless formula.versioned_formula?
return unless @core_tap
return if formula.keg_only? && formula.keg_only_reason.reason == :versioned_formula
keg_only_whitelist = %w[
autoconf@2.13
bash-completion@2
gnupg@1.4
lua@5.1
python@2
].freeze
return if keg_only_whitelist.include?(formula.name) || formula.name.start_with?("gcc@")
problem "Versioned formulae should use `keg_only :versioned_formula`"
end
def audit_homepage
homepage = formula.homepage

View File

@ -600,5 +600,49 @@ module Homebrew
expect(fa.problems).to eq([])
end
end
describe "#audit_versioned_keg_only" do
specify "it warns when a versioned formula is not `keg_only`" do
fa = formula_auditor "foo@1.1", <<~RUBY, core_tap: true
class FooAT11 < Formula
url "https://example.com/foo-1.1.tgz"
end
RUBY
fa.audit_versioned_keg_only
expect(fa.problems.first)
.to match("Versioned formulae should use `keg_only :versioned_formula`")
end
specify "it warns when a versioned formula has an incorrect `keg_only` reason" do
fa = formula_auditor "foo@1.1", <<~RUBY, core_tap: true
class FooAT11 < Formula
url "https://example.com/foo-1.1.tgz"
keg_only :provided_by_macos
end
RUBY
fa.audit_versioned_keg_only
expect(fa.problems.first)
.to match("Versioned formulae should use `keg_only :versioned_formula`")
end
specify "it does not warn when a versioned formula has `keg_only :versioned_formula`" do
fa = formula_auditor "foo@1.1", <<~RUBY, core_tap: true
class FooAT11 < Formula
url "https://example.com/foo-1.1.tgz"
keg_only :versioned_formula
end
RUBY
fa.audit_versioned_keg_only
expect(fa.problems).to eq([])
end
end
end
end