brew/Library/Homebrew/test/rubocops/text/make_check_spec.rb
apainintheneck a3e917afe1 Refactor method to remove extra tap requires
We were selectively requiring the tap.rb file in a few places for
performance reasons. The main method we were referencing was the
`Tap.cmd_directories` method which uses `Pathname` and the `TAP_DIRECTORY`
constant internally. `Tap.cmd_directories` is mostly used in the `Commands`
module and that is loaded very early on in the program so it made sense
to move that command to that module. To facilitate that I moved the
`TAP_DIRECTORY` constant to the top-level and renamed it to
`HOMEBREW_TAP_DIRECTORY`. It now lies in the tap_constants.rb file.

A nice bonus of this refactor is that it speeds up loading external
commands since the tap.rb file is no longer required by default in
those cases.
2024-08-10 13:49:10 -07:00

46 lines
1.2 KiB
Ruby

# frozen_string_literal: true
require "rubocops/lines"
RSpec.describe RuboCop::Cop::FormulaAuditStrict::MakeCheck do
subject(:cop) { described_class.new }
let(:path) { HOMEBREW_TAP_DIRECTORY/"homebrew/homebrew-core" }
before do
path.mkpath
(path/"style_exceptions").mkpath
end
def setup_style_exceptions
(path/"style_exceptions/make_check_allowlist.json").write <<~JSON
[ "bar" ]
JSON
end
it "reports an offense when formulae in homebrew/core run build-time checks" do
setup_style_exceptions
expect_offense(<<~RUBY, "#{path}/Formula/foo.rb")
class Foo < Formula
desc "foo"
url 'https://brew.sh/foo-1.0.tgz'
system "make", "-j1", "test"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAuditStrict/MakeCheck: Formulae in homebrew/core (except e.g. cryptography, libraries) should not run build-time checks
end
RUBY
end
it "reports no offenses when exempted formulae in homebrew/core run build-time checks" do
setup_style_exceptions
expect_no_offenses(<<~RUBY, "#{path}/Formula/bar.rb")
class Bar < Formula
desc "bar"
url 'https://brew.sh/bar-1.0.tgz'
system "make", "-j1", "test"
end
RUBY
end
end