diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index eeaaf127d7..a028176c93 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -1546,3 +1546,5 @@ on_request: installed_on_request?, options:) $stderr.puts @requirement_messages end end + +require "extend/os/formula_installer" diff --git a/Library/Homebrew/test/formula_installer_spec.rb b/Library/Homebrew/test/formula_installer_spec.rb index d4b6284b3d..43906c1c9e 100644 --- a/Library/Homebrew/test/formula_installer_spec.rb +++ b/Library/Homebrew/test/formula_installer_spec.rb @@ -450,6 +450,27 @@ RSpec.describe FormulaInstaller do end end + describe "#fresh_install" do + subject(:formula_installer) { described_class.new(Testball.new) } + + it "is false by default" do + formula = Testball.new + expect(formula_installer.fresh_install?(formula)).to be false + end + + it "is false in developer mode" do + formula = Testball.new + allow(Homebrew::EnvConfig).to receive_messages(developer?: true) + expect(formula_installer.fresh_install?(formula)).to be false + end + + it "is false on outdated releases" do + formula = Testball.new + allow(OS::Mac.version).to receive_messages(outdated_release?: true) + expect(formula_installer.fresh_install?(formula)).to be false + end + end + describe "#install_service" do it "works if service is set" do formula = Testball.new diff --git a/Library/Homebrew/test/os/linux/formula_installer_spec.rb b/Library/Homebrew/test/os/linux/formula_installer_spec.rb new file mode 100644 index 0000000000..f5c47599de --- /dev/null +++ b/Library/Homebrew/test/os/linux/formula_installer_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require "formula_installer" +require "test/support/fixtures/testball" + +RSpec.describe FormulaInstaller do + include FileUtils + + subject(:keg) { described_class.new(keg_path) } + + describe "#fresh_install" do + subject(:formula_installer) { described_class.new(Testball.new) } + + it "is true by default" do + formula = Testball.new + expect(formula_installer.fresh_install?(formula)).to be true + end + + it "is false in developer mode" do + formula = Testball.new + allow(Homebrew::EnvConfig).to receive_messages(developer?: true) + expect(formula_installer.fresh_install?(formula)).to be false + end + end +end diff --git a/Library/Homebrew/test/os/mac/formula_installer_spec.rb b/Library/Homebrew/test/os/mac/formula_installer_spec.rb new file mode 100644 index 0000000000..21b83da6c3 --- /dev/null +++ b/Library/Homebrew/test/os/mac/formula_installer_spec.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require "formula_installer" +require "test/support/fixtures/testball" + +RSpec.describe FormulaInstaller do + include FileUtils + + subject(:keg) { described_class.new(keg_path) } + + describe "#fresh_install" do + subject(:formula_installer) { described_class.new(Testball.new) } + + it "is true by default" do + formula = Testball.new + expect(formula_installer.fresh_install?(formula)).to be true + end + + it "is false in developer mode" do + formula = Testball.new + allow(Homebrew::EnvConfig).to receive_messages(developer?: true) + expect(formula_installer.fresh_install?(formula)).to be false + end + + it "is false on outdated releases" do + formula = Testball.new + allow(OS::Mac.version).to receive_messages(outdated_release?: true) + expect(formula_installer.fresh_install?(formula)).to be false + end + end +end