diff options
| author | L. E. Segovia | 2017-11-27 01:29:08 +0000 | 
|---|---|---|
| committer | L. E. Segovia | 2017-11-27 01:29:08 +0000 | 
| commit | a2730c8618ebb512cf00318af6d4987dbee1efe5 (patch) | |
| tree | 5a6cb922aa59ac11e8c46edf564b1888566aabab /Library/Homebrew/test/cask/cli | |
| parent | e0be066f8b5f4ccb313ddcf6bba1d6fed3549b69 (diff) | |
| download | brew-a2730c8618ebb512cf00318af6d4987dbee1efe5.tar.bz2 | |
Implement more of @reitermarkus's comments
- Include tests in context
- replace 'route' with 'path'
- more assorted fixes
Diffstat (limited to 'Library/Homebrew/test/cask/cli')
| -rw-r--r-- | Library/Homebrew/test/cask/cli/upgrade_spec.rb | 268 | 
1 files changed, 130 insertions, 138 deletions
diff --git a/Library/Homebrew/test/cask/cli/upgrade_spec.rb b/Library/Homebrew/test/cask/cli/upgrade_spec.rb index 0f15c2d5b..a9959bf6f 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,164 +17,156 @@ describe Hbc::CLI::Upgrade, :cask do        allow_any_instance_of(described_class).to receive(:verbose?).and_return(true)      end -  end - -  shared_context "Casks that will fail upon upgrade" do -    let(:installed) { -      [ -        "outdated/bad-checksum", -        "outdated/will-fail-if-upgraded", -      ] -    } - -    before(:example) do -      installed.each { |cask| Hbc::CLI::Install.run(cask) } -      allow_any_instance_of(described_class).to receive(:verbose?).and_return(true) +    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 -  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") +    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_route).to be_a_directory -      expect(local_caffeine.versions).to include("1.2.2") +        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_route).to be_a_directory -      expect(local_transmission.versions).to include("2.60") +        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 +        expect(local_transmission).to be_installed +        expect(local_transmission_path).to be_a_directory +        expect(local_transmission.versions).to include("2.60") -      expect(local_caffeine).to be_installed -      expect(local_caffeine_route).to be_a_directory -      expect(local_caffeine.versions).to include("1.2.3") +        described_class.run("--greedy") -      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_path).to be_a_directory +        expect(local_caffeine.versions).to include("1.2.3") -      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.61") -      expect(local_transmission).to be_installed -      expect(local_transmission_route).to be_a_directory -      expect(local_transmission.versions).to include("2.60") +        expect(local_transmission).to be_installed +        expect(local_transmission_path).to be_a_directory +        expect(local_transmission.versions).to include("2.61") +      end -      described_class.run("local-caffeine") +      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(local_caffeine).to be_installed -      expect(local_caffeine_route).to be_a_directory -      expect(local_caffeine.versions).to include("1.2.3") +        expect(cask).to be_installed +        expect(cask_path).to be_a_directory +        expect(cask.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") -    end +        described_class.run("auto-updates", "--greedy") -    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(cask).to be_installed +        expect(cask_path).to be_a_directory +        expect(cask.versions).to include("2.61") -      expect(local_caffeine).to be_installed -      expect(local_caffeine_route).to be_a_directory -      expect(local_caffeine.versions).to include("1.2.2") +        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.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") +        expect(cask).to be_installed +        expect(cask_path).to be_a_directory +        expect(cask.versions).to include("2.61") +      end      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") +  context "failed upgrade" do +    let(:installed) { +      [ +        "outdated/bad-checksum", +        "outdated/will-fail-if-upgraded", +      ] +    } -      described_class.run("auto-updates", "--greedy") +    before(:example) do +      installed.each { |cask| Hbc::CLI::Install.run(cask) } -      expect(auto_updates).to be_installed -      expect(auto_updates_path).to be_a_directory -      expect(auto_updates.versions).to include("2.61") +      allow_any_instance_of(described_class).to receive(:verbose?).and_return(true)      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")  | 
