aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/cask/cli/zap_spec.rb
diff options
context:
space:
mode:
authorMarkus Reiter2017-03-05 06:31:36 +0100
committerMarkus Reiter2017-03-05 23:08:14 +0100
commit9fc6c7b2be300ff35dc52d80f4dc38d36d52ddc2 (patch)
tree43e99a683329471c1dc965dcc92daccb57df7e8d /Library/Homebrew/test/cask/cli/zap_spec.rb
parent67ec76d1492fbb03959a782a85c4fb985d6a5884 (diff)
downloadbrew-9fc6c7b2be300ff35dc52d80f4dc38d36d52ddc2.tar.bz2
Move Cask specs into `brew tests`.
Diffstat (limited to 'Library/Homebrew/test/cask/cli/zap_spec.rb')
-rw-r--r--Library/Homebrew/test/cask/cli/zap_spec.rb73
1 files changed, 73 insertions, 0 deletions
diff --git a/Library/Homebrew/test/cask/cli/zap_spec.rb b/Library/Homebrew/test/cask/cli/zap_spec.rb
new file mode 100644
index 000000000..0f3d024b5
--- /dev/null
+++ b/Library/Homebrew/test/cask/cli/zap_spec.rb
@@ -0,0 +1,73 @@
+describe Hbc::CLI::Zap, :cask do
+ it "shows an error when a bad Cask is provided" do
+ expect {
+ Hbc::CLI::Zap.run("notacask")
+ }.to raise_error(Hbc::CaskUnavailableError)
+ end
+
+ it "can zap 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::Zap.run("--notavalidoption",
+ "local-caffeine", "local-transmission")
+ end
+
+ expect(caffeine).not_to be_installed
+ expect(Hbc.appdir.join("Caffeine.app")).not_to be_a_symlink
+ expect(transmission).not_to be_installed
+ expect(Hbc.appdir.join("Transmission.app")).not_to be_a_symlink
+ end
+
+ # TODO: Explicit test that both zap and uninstall directives get dispatched.
+ # The above tests that implicitly.
+ #
+ # it "dispatches both uninstall and zap stanzas" do
+ # with_zap = Hbc.load('with-zap')
+ #
+ # shutup do
+ # Hbc::Installer.new(with_zap).install
+ # end
+ #
+ # with_zap.must_be :installed?
+ #
+ # Hbc::FakeSystemCommand.stubs_command(['/usr/bin/sudo', '-E', '--', '/usr/bin/osascript', '-e', 'tell application "System Events" to count processes whose bundle identifier is "my.fancy.package.app"'], '1')
+ # Hbc::FakeSystemCommand.stubs_command(['/usr/bin/sudo', '-E', '--', '/usr/bin/osascript', '-e', 'tell application id "my.fancy.package.app" to quit'])
+ # Hbc::FakeSystemCommand.stubs_command(['/usr/bin/sudo', '-E', '--', '/usr/bin/osascript', '-e', 'tell application "System Events" to count processes whose bundle identifier is "my.fancy.package.app.from.uninstall"'], '1')
+ # Hbc::FakeSystemCommand.stubs_command(['/usr/bin/sudo', '-E', '--', '/usr/bin/osascript', '-e', 'tell application id "my.fancy.package.app.from.uninstall" to quit'])
+ #
+ # Hbc::FakeSystemCommand.expects_command(['/usr/bin/sudo', '-E', '--', with_zap.staged_path.join('MyFancyPkg','FancyUninstaller.tool'), '--please'])
+ # Hbc::FakeSystemCommand.expects_command(['/usr/bin/sudo', '-E', '--', '/bin/rm', '-rf', '--',
+ # Pathname.new('~/Library/Preferences/my.fancy.app.plist').expand_path])
+ #
+ # shutup do
+ # Hbc::CLI::Zap.run('with-zap')
+ # end
+ # with_zap.wont_be :installed?
+ # end
+
+ describe "when no Cask is specified" do
+ it "raises an exception" do
+ expect {
+ Hbc::CLI::Zap.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::Zap.run("--notavalidoption")
+ }.to raise_error(Hbc::CaskUnspecifiedError)
+ end
+ end
+end