From f2abaf686275a38b5b31204b3add3904311c3633 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Wed, 22 May 2019 14:07:57 -0300 Subject: [PATCH] Add #uses_from_macos specs --- Library/Homebrew/test/formula_spec.rb | 88 +++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/Library/Homebrew/test/formula_spec.rb b/Library/Homebrew/test/formula_spec.rb index b762115950..170af26b1a 100644 --- a/Library/Homebrew/test/formula_spec.rb +++ b/Library/Homebrew/test/formula_spec.rb @@ -1387,4 +1387,92 @@ describe Formula do end end end + + describe "#uses_from_macos" do + context 'on Linux' do + before do + allow(OS).to receive(:mac?).and_return(false) + end + + it "acts like #depends_on" do + f = formula "foo" do + url "foo-1.0" + + uses_from_macos("foo") + end + + expect(f.class.stable.deps.first.name).to eq("foo") + expect(f.class.devel.deps.first.name).to eq("foo") + expect(f.class.head.deps.first.name).to eq("foo") + end + + it "ignores MacOS specifications" do + f = formula "foo" do + url "foo-1.0" + + uses_from_macos("foo", after: :mojave) + end + + expect(f.class.stable.deps.first.name).to eq("foo") + expect(f.class.devel.deps.first.name).to eq("foo") + expect(f.class.head.deps.first.name).to eq("foo") + end + end + + context 'on MacOS' do + before do + sierra_os_version = OS::Mac::Version.from_symbol(:sierra) + + allow(OS).to receive(:mac?).and_return(true) + allow(OS::Mac).to receive(:version).and_return(OS::Mac::Version.new(sierra_os_version)) + end + + it "doesn't adds a dependency if it doesn't meet OS version requirements" do + f = formula 'foo' do + url 'foo-1.0' + + uses_from_macos('foo', after: :high_sierra) + uses_from_macos('bar', before: :el_capitan) + end + + expect(f.class.stable.deps).to be_empty + expect(f.class.devel.deps).to be_empty + expect(f.class.head.deps).to be_empty + end + + it 'allows specifying dependencies after certain version' do + f = formula 'foo' do + url 'foo-1.0' + + uses_from_macos('foo', after: :el_capitan) + end + + expect(f.class.stable.deps.first.name).to eq('foo') + expect(f.class.devel.deps.first.name).to eq('foo') + expect(f.class.head.deps.first.name).to eq('foo') + end + + it 'allows specifying dependencies before certain version' do + f = formula 'foo' do + url 'foo-1.0' + + uses_from_macos('foo', before: :high_sierra) + end + + expect(f.class.stable.deps.first.name).to eq('foo') + expect(f.class.devel.deps.first.name).to eq('foo') + expect(f.class.head.deps.first.name).to eq('foo') + end + + it 'raises an error if passing invalid OS versions' do + expect { + formula 'foo' do + url 'foo-1.0' + + uses_from_macos('foo', after: 'bar', before: :mojave) + end + }.to raise_error(ArgumentError, 'unknown version "bar"') + end + end + end end