| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  | # TODO: this test should be named after the corresponding class, once | 
					
						
							|  |  |  | #       that class is abstracted from installer.rb | 
					
						
							| 
									
										
										
										
											2017-03-05 19:26:56 +01:00
										 |  |  | describe "Satisfy Dependencies and Requirements", :cask do | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |   subject { | 
					
						
							|  |  |  |     lambda do | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       Cask::Installer.new(cask).install | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |     end | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "depends_on cask" do | 
					
						
							|  |  |  |     context "when depends_on cask is cyclic" do | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-cask-cyclic")) } | 
					
						
							| 
									
										
										
										
											2018-03-25 13:30:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-03 10:49:58 +02:00
										 |  |  |       it { | 
					
						
							| 
									
										
										
										
											2018-09-20 09:07:56 +01:00
										 |  |  |         expect(subject).to raise_error( | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |           Cask::CaskCyclicDependencyError, | 
					
						
							| 
									
										
										
										
											2018-09-02 16:15:09 +01:00
										 |  |  |           "Cask 'with-depends-on-cask-cyclic' includes cyclic dependencies "\ | 
					
						
							|  |  |  |           "on other Casks: with-depends-on-cask-cyclic-helper", | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2017-10-03 10:49:58 +02:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context do | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-cask")) } | 
					
						
							|  |  |  |       let(:dependency) { Cask::CaskLoader.load(cask.depends_on.cask.first) } | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |       it "installs the dependency of a Cask and the Cask itself" do | 
					
						
							|  |  |  |         expect(subject).not_to raise_error | 
					
						
							|  |  |  |         expect(cask).to be_installed | 
					
						
							|  |  |  |         expect(dependency).to be_installed | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "depends_on macos" do | 
					
						
							|  |  |  |     context "given an array" do | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-macos-array")) } | 
					
						
							| 
									
										
										
										
											2018-03-25 13:30:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |       it { is_expected.not_to raise_error } | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-10 16:30:30 +00:00
										 |  |  |     context "given a comparison" do | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-macos-comparison")) } | 
					
						
							| 
									
										
										
										
											2018-03-25 13:30:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |       it { is_expected.not_to raise_error } | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context "given a string" do | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-macos-string")) } | 
					
						
							| 
									
										
										
										
											2018-03-25 13:30:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |       it { is_expected.not_to raise_error } | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context "given a symbol" do | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-macos-symbol")) } | 
					
						
							| 
									
										
										
										
											2018-03-25 13:30:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |       it { is_expected.not_to raise_error } | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context "when not satisfied" do | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-macos-failure")) } | 
					
						
							| 
									
										
										
										
											2018-03-25 13:30:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       it { is_expected.to raise_error(Cask::CaskError) } | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "depends_on arch" do | 
					
						
							|  |  |  |     context "when satisfied" do | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-arch")) } | 
					
						
							| 
									
										
										
										
											2018-03-25 13:30:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |       it { is_expected.not_to raise_error } | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "depends_on x11" do | 
					
						
							| 
									
										
										
										
											2018-03-25 13:30:37 +01:00
										 |  |  |     before do | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |       allow(MacOS::X11).to receive(:installed?).and_return(x11_installed) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context "when satisfied" do | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-x11")) } | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |       let(:x11_installed) { true } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it { is_expected.not_to raise_error } | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context "when not satisfied" do | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-x11")) } | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |       let(:x11_installed) { false } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       it { is_expected.to raise_error(Cask::CaskX11DependencyError) } | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context "when depends_on x11: false" do | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |       let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-x11-false")) } | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |       let(:x11_installed) { false } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it { is_expected.not_to raise_error } | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |