From 0cc9d93885b7824e702156c50c46d22158b5a57f Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Sat, 25 Mar 2017 10:59:54 +0000 Subject: formula_installer: tweak req formula additions. Rather than just checking if a requirement's dependency is installed or not check if the requirement was actually satisfied by a particular formula rather than e.g. just having a `default_formula` defined. --- Library/Homebrew/test/formula_installer_spec.rb | 39 +++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'Library/Homebrew/test') diff --git a/Library/Homebrew/test/formula_installer_spec.rb b/Library/Homebrew/test/formula_installer_spec.rb index 600b4560f..f5218db73 100644 --- a/Library/Homebrew/test/formula_installer_spec.rb +++ b/Library/Homebrew/test/formula_installer_spec.rb @@ -134,4 +134,43 @@ describe FormulaInstaller do fi.check_install_sanity }.to raise_error(CannotInstallFormulaError) end + + describe "#install_requirement_formula?" do + before do + @requirement = Python3Requirement.new + allow(@requirement).to receive(:satisfied?).and_return(satisfied?) + allow(@requirement).to receive(:satisfied_by_formula?).and_return(satisfied_by_formula?) + allow_any_instance_of(Dependency).to receive(:installed?).and_return(installed?) + @dependent = formula do + url "foo" + version "0.1" + depends_on :python3 + end + @build = BuildOptions.new [], [] + @fi = FormulaInstaller.new(@dependent) + end + + subject { @fi.install_requirement_formula?(@requirement, @dependent, @build) } + + context "it returns false when requirement is satisfied" do + let(:satisfied?) { true } + let(:satisfied_by_formula?) { false } + let(:installed?) { false } + it { is_expected.to be false } + end + + context "it returns true when requirement isn't satisfied" do + let(:satisfied?) { false } + let(:satisfied_by_formula?) { false } + let(:installed?) { false } + it { is_expected.to be true } + end + + context "it returns true when requirement is satisfied by a formula" do + let(:satisfied?) { true } + let(:satisfied_by_formula?) { true } + let(:installed?) { false } + it { is_expected.to be true } + end + end end -- cgit v1.2.3