From a2730c8618ebb512cf00318af6d4987dbee1efe5 Mon Sep 17 00:00:00 2001 From: "L. E. Segovia" Date: Mon, 27 Nov 2017 01:29:08 +0000 Subject: [PATCH] Implement more of @reitermarkus's comments - Include tests in context - replace 'route' with 'path' - more assorted fixes --- .../Homebrew/test/cask/cli/upgrade_spec.rb | 284 +++++++++--------- 1 file changed, 138 insertions(+), 146 deletions(-) diff --git a/Library/Homebrew/test/cask/cli/upgrade_spec.rb b/Library/Homebrew/test/cask/cli/upgrade_spec.rb index 0f15c2d5ba..a9959bf6f8 100644 --- a/Library/Homebrew/test/cask/cli/upgrade_spec.rb +++ b/Library/Homebrew/test/cask/cli/upgrade_spec.rb @@ -3,7 +3,7 @@ require_relative "shared_examples/invalid_option" describe Hbc::CLI::Upgrade, :cask do it_behaves_like "a command that handles invalid options" - shared_context "Proper Casks" do + context "successful upgrade" do let(:installed) { [ "outdated/local-caffeine", @@ -17,9 +17,144 @@ describe Hbc::CLI::Upgrade, :cask do allow_any_instance_of(described_class).to receive(:verbose?).and_return(true) end + + describe 'without --greedy it ignores the Casks with "version latest" or "auto_updates true"' do + it "updates all the installed Casks when no token is provided" do + local_caffeine = Hbc::CaskLoader.load("local-caffeine") + local_caffeine_path = Hbc.appdir.join("Caffeine.app") + local_transmission = Hbc::CaskLoader.load("local-transmission") + local_transmission_path = Hbc.appdir.join("Transmission.app") + + expect(local_caffeine).to be_installed + expect(local_caffeine_path).to be_a_directory + expect(local_caffeine.versions).to include("1.2.2") + + expect(local_transmission).to be_installed + expect(local_transmission_path).to be_a_directory + expect(local_transmission.versions).to include("2.60") + + described_class.run + + expect(local_caffeine).to be_installed + expect(local_caffeine_path).to be_a_directory + expect(local_caffeine.versions).to include("1.2.3") + + expect(local_transmission).to be_installed + expect(local_transmission_path).to be_a_directory + expect(local_transmission.versions).to include("2.61") + end + + it "updates only the Casks specified in the command line" do + local_caffeine = Hbc::CaskLoader.load("local-caffeine") + local_caffeine_path = Hbc.appdir.join("Caffeine.app") + local_transmission = Hbc::CaskLoader.load("local-transmission") + local_transmission_path = Hbc.appdir.join("Transmission.app") + + expect(local_caffeine).to be_installed + expect(local_caffeine_path).to be_a_directory + expect(local_caffeine.versions).to include("1.2.2") + + expect(local_transmission).to be_installed + expect(local_transmission_path).to be_a_directory + expect(local_transmission.versions).to include("2.60") + + described_class.run("local-caffeine") + + expect(local_caffeine).to be_installed + expect(local_caffeine_path).to be_a_directory + expect(local_caffeine.versions).to include("1.2.3") + + expect(local_transmission).to be_installed + expect(local_transmission_path).to be_a_directory + expect(local_transmission.versions).to include("2.60") + end + + it 'updates "auto_updates" and "latest" Casks when their tokens are provided in the command line' do + local_caffeine = Hbc::CaskLoader.load("local-caffeine") + local_caffeine_path = Hbc.appdir.join("Caffeine.app") + auto_updates = Hbc::CaskLoader.load("auto-updates") + auto_updates_path = Hbc.appdir.join("MyFancyApp.app") + + expect(local_caffeine).to be_installed + expect(local_caffeine_path).to be_a_directory + expect(local_caffeine.versions).to include("1.2.2") + + expect(auto_updates).to be_installed + expect(auto_updates_path).to be_a_directory + expect(auto_updates.versions).to include("2.57") + + described_class.run("local-caffeine", "auto-updates") + + expect(local_caffeine).to be_installed + expect(local_caffeine_path).to be_a_directory + expect(local_caffeine.versions).to include("1.2.3") + + expect(auto_updates).to be_installed + expect(auto_updates_path).to be_a_directory + expect(auto_updates.versions).to include("2.61") + end + end + + describe "with --greedy it checks additional Casks" do + it 'includes the Casks with "auto_updates true" or "version latest" with --greedy' do + local_caffeine = Hbc::CaskLoader.load("local-caffeine") + local_caffeine_path = Hbc.appdir.join("Caffeine.app") + auto_updates = Hbc::CaskLoader.load("auto-updates") + auto_updates_path = Hbc.appdir.join("MyFancyApp.app") + local_transmission = Hbc::CaskLoader.load("local-transmission") + local_transmission_path = Hbc.appdir.join("Transmission.app") + + expect(local_caffeine).to be_installed + expect(local_caffeine_path).to be_a_directory + expect(local_caffeine.versions).to include("1.2.2") + + expect(auto_updates).to be_installed + expect(auto_updates_path).to be_a_directory + expect(auto_updates.versions).to include("2.57") + + expect(local_transmission).to be_installed + expect(local_transmission_path).to be_a_directory + expect(local_transmission.versions).to include("2.60") + + described_class.run("--greedy") + + expect(local_caffeine).to be_installed + expect(local_caffeine_path).to be_a_directory + expect(local_caffeine.versions).to include("1.2.3") + + expect(auto_updates).to be_installed + expect(auto_updates_path).to be_a_directory + expect(auto_updates.versions).to include("2.61") + + expect(local_transmission).to be_installed + expect(local_transmission_path).to be_a_directory + expect(local_transmission.versions).to include("2.61") + end + + it 'does not include the Casks with "auto_updates true" when the version did not change' do + cask = Hbc::CaskLoader.load("auto-updates") + cask_path = Hbc.appdir.join("MyFancyApp.app") + + expect(cask).to be_installed + expect(cask_path).to be_a_directory + expect(cask.versions).to include("2.57") + + described_class.run("auto-updates", "--greedy") + + expect(cask).to be_installed + expect(cask_path).to be_a_directory + expect(cask.versions).to include("2.61") + + described_class.run("auto-updates", "--greedy") + + expect(cask).to be_installed + expect(cask_path).to be_a_directory + expect(cask.versions).to include("2.61") + end + end end - shared_context "Casks that will fail upon upgrade" do + context "failed upgrade" do let(:installed) { [ "outdated/bad-checksum", @@ -32,149 +167,6 @@ describe Hbc::CLI::Upgrade, :cask do allow_any_instance_of(described_class).to receive(:verbose?).and_return(true) end - end - - describe 'without --greedy it ignores the Casks with "version latest" or "auto_updates true"' do - include_context "Proper Casks" - - it "and updates all the installed Casks when no token is provided" do - local_caffeine = Hbc::CaskLoader.load("local-caffeine") - local_caffeine_route = Hbc.appdir.join("Caffeine.app") - local_transmission = Hbc::CaskLoader.load("local-transmission") - local_transmission_route = Hbc.appdir.join("Transmission.app") - - expect(local_caffeine).to be_installed - expect(local_caffeine_route).to be_a_directory - expect(local_caffeine.versions).to include("1.2.2") - - expect(local_transmission).to be_installed - expect(local_transmission_route).to be_a_directory - expect(local_transmission.versions).to include("2.60") - - described_class.run - - expect(local_caffeine).to be_installed - expect(local_caffeine_route).to be_a_directory - expect(local_caffeine.versions).to include("1.2.3") - - expect(local_transmission).to be_installed - expect(local_transmission_route).to be_a_directory - expect(local_transmission.versions).to include("2.61") - end - - it "and updates only the Casks specified in the command line" do - local_caffeine = Hbc::CaskLoader.load("local-caffeine") - local_caffeine_route = Hbc.appdir.join("Caffeine.app") - local_transmission = Hbc::CaskLoader.load("local-transmission") - local_transmission_route = Hbc.appdir.join("Transmission.app") - - expect(local_caffeine).to be_installed - expect(local_caffeine_route).to be_a_directory - expect(local_caffeine.versions).to include("1.2.2") - - expect(local_transmission).to be_installed - expect(local_transmission_route).to be_a_directory - expect(local_transmission.versions).to include("2.60") - - described_class.run("local-caffeine") - - expect(local_caffeine).to be_installed - expect(local_caffeine_route).to be_a_directory - expect(local_caffeine.versions).to include("1.2.3") - - expect(local_transmission).to be_installed - expect(local_transmission_route).to be_a_directory - expect(local_transmission.versions).to include("2.60") - end - - it 'updates "auto_updates" and "latest" Casks when their tokens are provided in the command line' do - local_caffeine = Hbc::CaskLoader.load("local-caffeine") - local_caffeine_route = Hbc.appdir.join("Caffeine.app") - auto_updates = Hbc::CaskLoader.load("auto-updates") - auto_updates_path = Hbc.appdir.join("MyFancyApp.app") - - expect(local_caffeine).to be_installed - expect(local_caffeine_route).to be_a_directory - expect(local_caffeine.versions).to include("1.2.2") - - expect(auto_updates).to be_installed - expect(auto_updates_path).to be_a_directory - expect(auto_updates.versions).to include("2.57") - - described_class.run("local-caffeine", "auto-updates") - - expect(local_caffeine).to be_installed - expect(local_caffeine_route).to be_a_directory - expect(local_caffeine.versions).to include("1.2.3") - - expect(auto_updates).to be_installed - expect(auto_updates_path).to be_a_directory - expect(auto_updates.versions).to include("2.61") - end - end - - describe "with --greedy it checks additional Casks" do - include_context "Proper Casks" - - it 'includes the Casks with "auto_updates true" or "version latest" with --greedy' do - local_caffeine = Hbc::CaskLoader.load("local-caffeine") - local_caffeine_route = Hbc.appdir.join("Caffeine.app") - auto_updates = Hbc::CaskLoader.load("auto-updates") - auto_updates_path = Hbc.appdir.join("MyFancyApp.app") - local_transmission = Hbc::CaskLoader.load("local-transmission") - local_transmission_route = Hbc.appdir.join("Transmission.app") - - expect(local_caffeine).to be_installed - expect(local_caffeine_route).to be_a_directory - expect(local_caffeine.versions).to include("1.2.2") - - expect(auto_updates).to be_installed - expect(auto_updates_path).to be_a_directory - expect(auto_updates.versions).to include("2.57") - - expect(local_transmission).to be_installed - expect(local_transmission_route).to be_a_directory - expect(local_transmission.versions).to include("2.60") - - described_class.run("--greedy") - - expect(local_caffeine).to be_installed - expect(local_caffeine_route).to be_a_directory - expect(local_caffeine.versions).to include("1.2.3") - - expect(auto_updates).to be_installed - expect(auto_updates_path).to be_a_directory - expect(auto_updates.versions).to include("2.61") - - expect(local_transmission).to be_installed - expect(local_transmission_route).to be_a_directory - expect(local_transmission.versions).to include("2.61") - end - - it 'does not include the Casks with "auto_updates true" when the version did not change' do - auto_updates = Hbc::CaskLoader.load("auto-updates") - auto_updates_path = Hbc.appdir.join("MyFancyApp.app") - - expect(auto_updates).to be_installed - expect(auto_updates_path).to be_a_directory - expect(auto_updates.versions).to include("2.57") - - described_class.run("auto-updates", "--greedy") - - expect(auto_updates).to be_installed - expect(auto_updates_path).to be_a_directory - expect(auto_updates.versions).to include("2.61") - - described_class.run("auto-updates", "--greedy") - - expect(auto_updates).to be_installed - expect(auto_updates_path).to be_a_directory - expect(auto_updates.versions).to include("2.61") - end - end - - describe "handles borked upgrades" do - include_context "Casks that will fail upon upgrade" output_reverted = Regexp.new <<~EOS Warning: Reverting upgrade for Cask .* @@ -198,7 +190,7 @@ describe Hbc::CLI::Upgrade, :cask do expect(will_fail_if_upgraded.staged_path).to_not exist end - it "by not restoring the old Cask if the upgrade failed pre-install" do + it "does not restore the old Cask if the upgrade failed pre-install" do bad_checksum = Hbc::CaskLoader.load("bad-checksum") bad_checksum_path = Hbc.appdir.join("Caffeine.app")