diff --git a/Library/Homebrew/cli/parser.rb b/Library/Homebrew/cli/parser.rb index 7ffe3e0c72..b464755e05 100644 --- a/Library/Homebrew/cli/parser.rb +++ b/Library/Homebrew/cli/parser.rb @@ -231,7 +231,8 @@ module Homebrew end env_value = value_for_env(env) - set_switch(*names, value: env_value, from: :env) unless env_value.nil? + value = env_value&.present? + set_switch(*names, value:, from: :env) unless value.nil? end alias switch_option switch diff --git a/Library/Homebrew/test/cli/parser_spec.rb b/Library/Homebrew/test/cli/parser_spec.rb index d4d5edb786..c2b23fd81c 100644 --- a/Library/Homebrew/test/cli/parser_spec.rb +++ b/Library/Homebrew/test/cli/parser_spec.rb @@ -10,12 +10,15 @@ RSpec.describe Homebrew::CLI::Parser do described_class.new(Cmd) do switch "--more-verbose", description: "Flag for higher verbosity" switch "--pry", env: :pry + switch "--bar", env: :bar switch "--hidden", hidden: true end end before do allow(Homebrew::EnvConfig).to receive(:pry?).and_return(true) + allow(ENV).to receive(:fetch).and_call_original + allow(ENV).to receive(:fetch).with("HOMEBREW_BAR", nil).and_return("1") end context "when using binary options" do @@ -113,6 +116,7 @@ RSpec.describe Homebrew::CLI::Parser do it "maps environment var to an option" do args = parser.parse([]) expect(args.pry?).to be true + expect(args.bar?).to be true end end