| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "cask/list" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 15:11:11 -08:00
										 |  |  | RSpec.describe Cask::List, :cask do | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |   it "lists the installed Casks in a pretty fashion" do | 
					
						
							|  |  |  |     casks = %w[local-caffeine local-transmission].map { |c| Cask::CaskLoader.load(c) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     casks.each do |c| | 
					
						
							|  |  |  |       InstallHelper.install_with_caskfile(c) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |     expect do | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |       described_class.list_casks | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |     end.to output(<<~EOS).to_stdout | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |       local-caffeine | 
					
						
							|  |  |  |       local-transmission | 
					
						
							|  |  |  |     EOS | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it "lists oneline" do | 
					
						
							|  |  |  |     casks = %w[
 | 
					
						
							|  |  |  |       local-caffeine | 
					
						
							|  |  |  |       third-party/tap/third-party-cask | 
					
						
							|  |  |  |       local-transmission | 
					
						
							|  |  |  |     ].map { |c| Cask::CaskLoader.load(c) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     casks.each do |c| | 
					
						
							|  |  |  |       InstallHelper.install_with_caskfile(c) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |     expect do | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |       described_class.list_casks(one: true) | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |     end.to output(<<~EOS).to_stdout | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |       local-caffeine | 
					
						
							|  |  |  |       local-transmission | 
					
						
							|  |  |  |       third-party-cask | 
					
						
							|  |  |  |     EOS | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it "lists full names" do | 
					
						
							|  |  |  |     casks = %w[
 | 
					
						
							|  |  |  |       local-caffeine | 
					
						
							|  |  |  |       third-party/tap/third-party-cask | 
					
						
							|  |  |  |       local-transmission | 
					
						
							|  |  |  |     ].map { |c| Cask::CaskLoader.load(c) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     casks.each do |c| | 
					
						
							|  |  |  |       InstallHelper.install_with_caskfile(c) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |     expect do | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |       described_class.list_casks(full_name: true) | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |     end.to output(<<~EOS).to_stdout | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |       local-caffeine | 
					
						
							|  |  |  |       local-transmission | 
					
						
							|  |  |  |       third-party/tap/third-party-cask | 
					
						
							|  |  |  |     EOS | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "lists versions" do | 
					
						
							| 
									
										
										
										
											2024-02-09 21:39:12 +01:00
										 |  |  |     let(:casks) do | 
					
						
							|  |  |  |       [ | 
					
						
							|  |  |  |         "local-caffeine", | 
					
						
							|  |  |  |         "local-transmission", | 
					
						
							|  |  |  |       ].map { |token| Cask::CaskLoader.load(token) } | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |     end | 
					
						
							|  |  |  |     let(:expected_output) do | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |       <<~EOS | 
					
						
							|  |  |  |         local-caffeine 1.2.3
 | 
					
						
							|  |  |  |         local-transmission 2.61
 | 
					
						
							|  |  |  |       EOS | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 21:39:12 +01:00
										 |  |  |     before do | 
					
						
							|  |  |  |       casks.each do |cask| | 
					
						
							|  |  |  |         InstallHelper.install_with_caskfile(cask) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |     it "of all installed Casks" do | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |         described_class.list_casks(versions: true) | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       end.to output(expected_output).to_stdout | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "of given Casks" do | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |         described_class.list_casks(*casks, versions: true) | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       end.to output(expected_output).to_stdout | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "given a set of installed Casks" do | 
					
						
							|  |  |  |     let(:caffeine) { Cask::CaskLoader.load(cask_path("local-caffeine")) } | 
					
						
							|  |  |  |     let(:transmission) { Cask::CaskLoader.load(cask_path("local-transmission")) } | 
					
						
							|  |  |  |     let(:casks) { [caffeine, transmission] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "lists the installed files for those Casks" do | 
					
						
							| 
									
										
										
										
											2024-03-03 18:55:56 -08:00
										 |  |  |       casks.each { InstallHelper.install_without_artifacts_with_caskfile(_1) } | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  |       transmission.artifacts.select { |a| a.is_a?(Cask::Artifact::App) }.each do |artifact| | 
					
						
							|  |  |  |         artifact.install_phase(command: NeverSudoSystemCommand, force: false) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |         described_class.list_casks(transmission, caffeine) | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       end.to output(<<~EOS).to_stdout | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:27 +09:00
										 |  |  |         ==> App | 
					
						
							|  |  |  |         #{transmission.config.appdir.join("Transmission.app")} (#{transmission.config.appdir.join("Transmission.app").abv}) | 
					
						
							|  |  |  |         ==> App | 
					
						
							|  |  |  |         Missing App: #{caffeine.config.appdir.join("Caffeine.app")} | 
					
						
							|  |  |  |       EOS | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |