Skip to content

Commit

Permalink
Merge pull request #18012 from apainintheneck/verify-more-constants-n…
Browse files Browse the repository at this point in the history
…ot-loaded-at-startup

Verify more constants are not loaded at startup
  • Loading branch information
apainintheneck authored Aug 15, 2024
2 parents 3f1e90a + f6a6979 commit 14633b3
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 25 deletions.
4 changes: 2 additions & 2 deletions Library/Homebrew/test/global_spec.rb
Original file line number Diff line number Diff line change
@@ -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
Expand Down

This file was deleted.

40 changes: 40 additions & 0 deletions Library/Homebrew/test/support/helper/cmd/brew-verify-undefined.rb
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 14633b3

Please sign in to comment.