| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2024-04-03 09:12:47 -07:00
										 |  |  | # rubocop:disable RSpec/DescribeClass | 
					
						
							| 
									
										
										
										
											2024-02-18 15:11:11 -08:00
										 |  |  | RSpec.describe "Satisfy Dependencies and Requirements", :cask do | 
					
						
							| 
									
										
										
										
											2024-04-03 09:12:47 -07:00
										 |  |  |   # rubocop:enable RSpec/DescribeClass | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |   subject(:install) do | 
					
						
							| 
									
										
										
										
											2019-10-03 08:50:45 +02:00
										 |  |  |     Cask::Installer.new(cask).install | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   describe "depends_on cask" do | 
					
						
							| 
									
										
										
										
											2019-03-28 19:16:56 +00:00
										 |  |  |     let(:dependency) { Cask::CaskLoader.load(cask.depends_on.cask.first) } | 
					
						
							|  |  |  |     let(:cask) { Cask::CaskLoader.load(cask_path("with-depends-on-cask")) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "installs the dependency of a Cask and the Cask itself" do | 
					
						
							| 
									
										
										
										
											2019-10-03 08:50:45 +02:00
										 |  |  |       expect { install }.not_to raise_error | 
					
						
							| 
									
										
										
										
											2019-03-28 19:16:56 +00:00
										 |  |  |       expect(cask).to be_installed | 
					
						
							|  |  |  |       expect(dependency).to be_installed | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |     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 { | 
					
						
							| 
									
										
										
										
											2019-10-03 08:50:45 +02:00
										 |  |  |         expect { install }.to raise_error( | 
					
						
							| 
									
										
										
										
											2018-09-06 08:29:14 +02:00
										 |  |  |           Cask::CaskCyclicDependencyError, | 
					
						
							| 
									
										
										
										
											2022-06-28 10:09:59 +01:00
										 |  |  |           "Cask 'with-depends-on-cask-cyclic' includes cyclic dependencies " \ | 
					
						
							| 
									
										
										
										
											2018-09-02 16:15:09 +01:00
										 |  |  |           "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 | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "depends_on macos" do | 
					
						
							| 
									
										
										
										
											2021-02-19 23:15:33 +00:00
										 |  |  |     context "with 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-03 08:50:45 +02:00
										 |  |  |       it "does not raise an error" do | 
					
						
							|  |  |  |         expect { install }.not_to raise_error | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-19 23:15:33 +00:00
										 |  |  |     context "with 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-03 08:50:45 +02:00
										 |  |  |       it "does not raise an error" do | 
					
						
							|  |  |  |         expect { install }.not_to raise_error | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-19 23:15:33 +00:00
										 |  |  |     context "with 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-03 08:50:45 +02:00
										 |  |  |       it "does not raise an error" do | 
					
						
							|  |  |  |         expect { install }.not_to raise_error | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |     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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-03 08:50:45 +02:00
										 |  |  |       it "raises an error" do | 
					
						
							|  |  |  |         expect { install }.to raise_error(Cask::CaskError) | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-03 08:50:45 +02:00
										 |  |  |       it "does not raise an error" do | 
					
						
							|  |  |  |         expect { install }.not_to raise_error | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2017-02-08 08:30:33 +01:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |