Merge pull request #18012 from apainintheneck/verify-more-constants-not-loaded-at-startup
Verify more constants are not loaded at startup
This commit is contained in:
commit
14633b3adb
@ -1,8 +1,8 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
RSpec.describe Homebrew, :integration_test do
|
||||
it "does not invoke `require \"formula\"` at startup" do
|
||||
expect { brew "verify-formula-undefined" }
|
||||
it "does not require slow dependencies at startup" do
|
||||
expect { brew "verify-undefined" }
|
||||
.to not_to_output.to_stdout
|
||||
.and not_to_output.to_stderr
|
||||
.and be_a_success
|
||||
|
||||
@ -1,23 +0,0 @@
|
||||
# typed: strict
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "cli/parser"
|
||||
|
||||
module Homebrew
|
||||
module Cmd
|
||||
class VerifyFormulaUndefined < AbstractCommand
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
parser = Homebrew::CLI::Parser.new(Homebrew::Cmd::VerifyFormulaUndefined) do
|
||||
usage_banner <<~EOS
|
||||
`verify-formula-undefined`
|
||||
|
||||
Verifies that `require "formula"` has not been performed at startup.
|
||||
EOS
|
||||
end
|
||||
|
||||
parser.parse
|
||||
|
||||
Homebrew.failed = defined?(Formula) && Formula.respond_to?(:[])
|
||||
40
Library/Homebrew/test/support/helper/cmd/brew-verify-undefined.rb
Executable file
40
Library/Homebrew/test/support/helper/cmd/brew-verify-undefined.rb
Executable file
@ -0,0 +1,40 @@
|
||||
# typed: strict
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "cli/parser"
|
||||
|
||||
UNDEFINED_CONSTANTS = %w[
|
||||
Cask::Cask
|
||||
Formula
|
||||
Formulary
|
||||
Homebrew::API
|
||||
Tap
|
||||
].freeze
|
||||
|
||||
module Homebrew
|
||||
module Cmd
|
||||
class VerifyUndefined < AbstractCommand
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
parser = Homebrew::CLI::Parser.new(Homebrew::Cmd::VerifyUndefined) do
|
||||
usage_banner <<~EOS
|
||||
`verify-undefined`
|
||||
|
||||
Verifies that the following constants have not been defined
|
||||
at startup to make sure that startup times stay consistent.
|
||||
|
||||
Contants:
|
||||
#{UNDEFINED_CONSTANTS.join("\n")}
|
||||
EOS
|
||||
end
|
||||
|
||||
parser.parse
|
||||
|
||||
UNDEFINED_CONSTANTS.each do |constant_name|
|
||||
Object.const_get(constant_name)
|
||||
ofail "#{constant_name} should not be defined at startup"
|
||||
rescue NameError
|
||||
# We expect this to error as it should not be defined.
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user