Merge pull request #2577 from DomT4/keg_only_style_tweaks

caveats: tweak keg_only style
This commit is contained in:
Mike McQuaid 2017-05-03 11:19:33 +01:00 committed by GitHub
commit e1ef37953f
3 changed files with 66 additions and 2 deletions

View File

@ -46,7 +46,7 @@ class Caveats
s = <<-EOS.undent s = <<-EOS.undent
This formula is keg-only, which means it was not symlinked into #{HOMEBREW_PREFIX}, This formula is keg-only, which means it was not symlinked into #{HOMEBREW_PREFIX},
because #{f.keg_only_reason}. because #{f.keg_only_reason.to_s.chomp}.
EOS EOS
if f.bin.directory? || f.sbin.directory? if f.bin.directory? || f.sbin.directory?
s << "\nIf you need to have this software first in your PATH run:\n" s << "\nIf you need to have this software first in your PATH run:\n"

View File

@ -502,6 +502,7 @@ class FormulaAuditor
GPG GPG
GNOME GNOME
BSD BSD
Firefox
].freeze ].freeze
reason = formula.keg_only_reason.to_s reason = formula.keg_only_reason.to_s
@ -510,7 +511,7 @@ class FormulaAuditor
reason.sub!(name, "") reason.sub!(name, "")
first_word = reason.split[0] first_word = reason.split[0]
if reason =~ /^[A-Z]/ && !reason.start_with?(*whitelist) if reason =~ /\A[A-Z]/ && !reason.start_with?(*whitelist)
problem <<-EOS.undent problem <<-EOS.undent
'#{first_word}' from the keg_only reason should be '#{first_word.downcase}'. '#{first_word}' from the keg_only reason should be '#{first_word.downcase}'.
EOS EOS

View File

@ -322,6 +322,69 @@ describe FormulaAuditor do
.to eq(["Don't recommend setuid in the caveats, suggest sudo instead."]) .to eq(["Don't recommend setuid in the caveats, suggest sudo instead."])
end end
describe "#audit_keg_only_style" do
specify "keg_only_needs_downcasing" do
fa = formula_auditor "foo", <<-EOS.undent, strict: true
class Foo < Formula
url "http://example.com/foo-1.0.tgz"
keg_only "Because why not"
end
EOS
fa.audit_keg_only_style
expect(fa.problems)
.to eq(["'Because' from the keg_only reason should be 'because'.\n"])
end
specify "keg_only_redundant_period" do
fa = formula_auditor "foo", <<-EOS.undent, strict: true
class Foo < Formula
url "http://example.com/foo-1.0.tgz"
keg_only "because this line ends in a period."
end
EOS
fa.audit_keg_only_style
expect(fa.problems)
.to eq(["keg_only reason should not end with a period."])
end
specify "keg_only_handles_block_correctly" do
fa = formula_auditor "foo", <<-EOS.undent, strict: true
class Foo < Formula
url "http://example.com/foo-1.0.tgz"
keg_only <<-EOF.undent
this line starts with a lowercase word.
This line does not but that shouldn't be a
problem
EOF
end
EOS
fa.audit_keg_only_style
expect(fa.problems)
.to eq([])
end
specify "keg_only_handles_whitelist_correctly" do
fa = formula_auditor "foo", <<-EOS.undent, strict: true
class Foo < Formula
url "http://example.com/foo-1.0.tgz"
keg_only "Apple ships foo in the CLT package"
end
EOS
fa.audit_keg_only_style
expect(fa.problems)
.to eq([])
end
end
describe "#audit_homepage" do describe "#audit_homepage" do
specify "homepage URLs" do specify "homepage URLs" do
fa = formula_auditor "foo", <<-EOS.undent, online: true fa = formula_auditor "foo", <<-EOS.undent, online: true