From 3d031420404506223d047fc509e53df4cc9185d9 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Wed, 8 Feb 2017 13:40:31 +0100 Subject: Convert Uninstall test to spec. --- .../Homebrew/cask/spec/cask/cli/uninstall_spec.rb | 144 +++++++++++++++++++ .../Homebrew/cask/test/cask/cli/uninstall_test.rb | 154 --------------------- 2 files changed, 144 insertions(+), 154 deletions(-) create mode 100644 Library/Homebrew/cask/spec/cask/cli/uninstall_spec.rb delete mode 100644 Library/Homebrew/cask/test/cask/cli/uninstall_test.rb (limited to 'Library') diff --git a/Library/Homebrew/cask/spec/cask/cli/uninstall_spec.rb b/Library/Homebrew/cask/spec/cask/cli/uninstall_spec.rb new file mode 100644 index 000000000..be0aa31b6 --- /dev/null +++ b/Library/Homebrew/cask/spec/cask/cli/uninstall_spec.rb @@ -0,0 +1,144 @@ +require "spec_helper" + +describe Hbc::CLI::Uninstall do + it "shows an error when a bad Cask is provided" do + expect { + Hbc::CLI::Uninstall.run("notacask") + }.to raise_error(Hbc::CaskUnavailableError) + end + + it "shows an error when a Cask is provided that's not installed" do + expect { + Hbc::CLI::Uninstall.run("anvil") + }.to raise_error(Hbc::CaskNotInstalledError) + end + + it "tries anyway on a non-present Cask when --force is given" do + expect { + Hbc::CLI::Uninstall.run("anvil", "--force") + }.not_to raise_error + end + + it "can uninstall and unlink multiple Casks at once" do + caffeine = Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-caffeine.rb") + transmission = Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-transmission.rb") + + shutup do + Hbc::Installer.new(caffeine).install + Hbc::Installer.new(transmission).install + end + + expect(caffeine).to be_installed + expect(transmission).to be_installed + + shutup do + Hbc::CLI::Uninstall.run("local-caffeine", "local-transmission") + end + + expect(caffeine).not_to be_installed + expect(Hbc.appdir.join("Transmission.app")).not_to exist + expect(transmission).not_to be_installed + expect(Hbc.appdir.join("Caffeine.app")).not_to exist + end + + describe "when multiple versions of a cask are installed" do + let(:token) { "versioned-cask" } + let(:first_installed_version) { "1.2.3" } + let(:last_installed_version) { "4.5.6" } + let(:timestamped_versions) { + [ + [first_installed_version, "123000"], + [last_installed_version, "456000"], + ] + } + let(:caskroom_path) { Hbc.caskroom.join(token).tap(&:mkpath) } + + before(:each) do + timestamped_versions.each do |timestamped_version| + caskroom_path.join(".metadata", *timestamped_version, "Casks").tap(&:mkpath) + .join("#{token}.rb").open("w") do |caskfile| + caskfile.puts <<-EOS.undent + cask '#{token}' do + version '#{timestamped_version[0]}' + end + EOS + end + caskroom_path.join(timestamped_version[0]).mkpath + end + end + + it "uninstalls one version at a time" do + shutup do + Hbc::CLI::Uninstall.run("versioned-cask") + end + + expect(caskroom_path.join(first_installed_version)).to exist + expect(caskroom_path.join(last_installed_version)).not_to exist + expect(caskroom_path).to exist + + shutup do + Hbc::CLI::Uninstall.run("versioned-cask") + end + + expect(caskroom_path.join(first_installed_version)).not_to exist + expect(caskroom_path).not_to exist + end + + it "displays a message when versions remain installed" do + expect { + expect { + Hbc::CLI::Uninstall.run("versioned-cask") + }.not_to output.to_stderr + }.to output(/#{token} #{first_installed_version} is still installed./).to_stdout + end + end + + describe "when Casks in Taps have been renamed or removed" do + let(:app) { Hbc.appdir.join("ive-been-renamed.app") } + let(:caskroom_path) { Hbc.caskroom.join("ive-been-renamed").tap(&:mkpath) } + let(:saved_caskfile) { caskroom_path.join(".metadata", "latest", "timestamp", "Casks").join("ive-been-renamed.rb") } + + before do + app.tap(&:mkpath) + .join("Contents").tap(&:mkpath) + .join("Info.plist").tap(&FileUtils.method(:touch)) + + caskroom_path.mkpath + + saved_caskfile.dirname.mkpath + + IO.write saved_caskfile, <<-EOS.undent + cask 'ive-been-renamed' do + version :latest + + app 'ive-been-renamed.app' + end + EOS + end + + it "can still uninstall those Casks" do + shutup do + Hbc::CLI::Uninstall.run("ive-been-renamed") + end + + expect(app).not_to exist + expect(caskroom_path).not_to exist + end + end + + describe "when no Cask is specified" do + it "raises an exception" do + expect { + Hbc::CLI::Uninstall.run + }.to raise_error(Hbc::CaskUnspecifiedError) + end + end + + describe "when no Cask is specified, but an invalid option" do + it "raises an exception" do + expect { + Hbc::CLI::Uninstall.run("--notavalidoption") + }.to raise_error(Hbc::CaskUnspecifiedError) + end + end +end diff --git a/Library/Homebrew/cask/test/cask/cli/uninstall_test.rb b/Library/Homebrew/cask/test/cask/cli/uninstall_test.rb deleted file mode 100644 index 540909be3..000000000 --- a/Library/Homebrew/cask/test/cask/cli/uninstall_test.rb +++ /dev/null @@ -1,154 +0,0 @@ -require "test_helper" - -describe Hbc::CLI::Uninstall do - it "shows an error when a bad Cask is provided" do - lambda { - Hbc::CLI::Uninstall.run("notacask") - }.must_raise Hbc::CaskUnavailableError - end - - it "shows an error when a Cask is provided that's not installed" do - lambda { - Hbc::CLI::Uninstall.run("anvil") - }.must_raise Hbc::CaskNotInstalledError - end - - it "tries anyway on a non-present Cask when --force is given" do - lambda do - Hbc::CLI::Uninstall.run("anvil", "--force") - end # wont_raise - end - - it "can uninstall and unlink multiple Casks at once" do - caffeine = Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-caffeine.rb") - transmission = Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-transmission.rb") - - shutup do - Hbc::Installer.new(caffeine).install - Hbc::Installer.new(transmission).install - end - - caffeine.must_be :installed? - transmission.must_be :installed? - - shutup do - Hbc::CLI::Uninstall.run("local-caffeine", "local-transmission") - end - - caffeine.wont_be :installed? - Hbc.appdir.join("Transmission.app").wont_be :exist? - transmission.wont_be :installed? - Hbc.appdir.join("Caffeine.app").wont_be :exist? - end - - describe "when multiple versions of a cask are installed" do - let(:token) { "versioned-cask" } - let(:first_installed_version) { "1.2.3" } - let(:last_installed_version) { "4.5.6" } - let(:timestamped_versions) { - [ - [first_installed_version, "123000"], - [last_installed_version, "456000"], - ] - } - let(:caskroom_path) { Hbc.caskroom.join(token).tap(&:mkpath) } - - before(:each) do - timestamped_versions.each do |timestamped_version| - caskroom_path.join(".metadata", *timestamped_version, "Casks").tap(&:mkpath) - .join("#{token}.rb").open("w") do |caskfile| - caskfile.puts <<-EOS.undent - cask '#{token}' do - version '#{timestamped_version[0]}' - end - EOS - end - caskroom_path.join(timestamped_version[0]).mkpath - end - end - - after(:each) do - caskroom_path.rmtree if caskroom_path.exist? - end - - it "uninstalls one version at a time" do - shutup do - Hbc::CLI::Uninstall.run("versioned-cask") - end - - caskroom_path.join(first_installed_version).must_be :exist? - caskroom_path.join(last_installed_version).wont_be :exist? - caskroom_path.must_be :exist? - - shutup do - Hbc::CLI::Uninstall.run("versioned-cask") - end - - caskroom_path.join(first_installed_version).wont_be :exist? - caskroom_path.wont_be :exist? - end - - it "displays a message when versions remain installed" do - out, err = capture_io do - Hbc::CLI::Uninstall.run("versioned-cask") - end - - out.must_match(/#{token} #{first_installed_version} is still installed./) - err.must_be :empty? - end - end - - describe "when Casks in Taps have been renamed or removed" do - let(:app) { Hbc.appdir.join("ive-been-renamed.app") } - let(:caskroom_path) { Hbc.caskroom.join("ive-been-renamed").tap(&:mkpath) } - let(:saved_caskfile) { caskroom_path.join(".metadata", "latest", "timestamp", "Casks").join("ive-been-renamed.rb") } - - before do - app.tap(&:mkpath) - .join("Contents").tap(&:mkpath) - .join("Info.plist").tap(&FileUtils.method(:touch)) - - caskroom_path.mkpath - - saved_caskfile.dirname.mkpath - - IO.write saved_caskfile, <<-EOS.undent - cask 'ive-been-renamed' do - version :latest - - app 'ive-been-renamed.app' - end - EOS - end - - after do - app.rmtree if app.exist? - caskroom_path.rmtree if caskroom_path.exist? - end - - it "can still uninstall those Casks" do - shutup do - Hbc::CLI::Uninstall.run("ive-been-renamed") - end - - app.wont_be :exist? - caskroom_path.wont_be :exist? - end - end - - describe "when no Cask is specified" do - it "raises an exception" do - lambda { - Hbc::CLI::Uninstall.run - }.must_raise Hbc::CaskUnspecifiedError - end - end - - describe "when no Cask is specified, but an invalid option" do - it "raises an exception" do - lambda { - Hbc::CLI::Uninstall.run("--notavalidoption") - }.must_raise Hbc::CaskUnspecifiedError - end - end -end -- cgit v1.2.3