aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cask/spec
diff options
context:
space:
mode:
authorMarkus Reiter2017-02-08 12:29:33 +0100
committerMarkus Reiter2017-02-10 17:19:19 +0100
commitcd4705b7bca5f266907ea6424d721190617edbcd (patch)
tree60de5fc21b55218176238883e6ea69bd65f2a29b /Library/Homebrew/cask/spec
parent9d36734e40c064efc48a58d28da9b23c9158dedc (diff)
downloadbrew-cd4705b7bca5f266907ea6424d721190617edbcd.tar.bz2
Convert Install test to spec.
Diffstat (limited to 'Library/Homebrew/cask/spec')
-rw-r--r--Library/Homebrew/cask/spec/cask/cli/install_spec.rb109
-rw-r--r--Library/Homebrew/cask/spec/spec_helper.rb3
2 files changed, 112 insertions, 0 deletions
diff --git a/Library/Homebrew/cask/spec/cask/cli/install_spec.rb b/Library/Homebrew/cask/spec/cask/cli/install_spec.rb
new file mode 100644
index 000000000..07aa78aa3
--- /dev/null
+++ b/Library/Homebrew/cask/spec/cask/cli/install_spec.rb
@@ -0,0 +1,109 @@
+require "spec_helper"
+
+describe Hbc::CLI::Install do
+ it "allows staging and activation of multiple Casks at once" do
+ shutup do
+ Hbc::CLI::Install.run("local-transmission", "local-caffeine")
+ end
+
+ expect(Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-transmission.rb")).to be_installed
+ expect(Hbc.appdir.join("Transmission.app")).to be_a_directory
+ expect(Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-caffeine.rb")).to be_installed
+ expect(Hbc.appdir.join("Caffeine.app")).to be_a_directory
+ end
+
+ it "skips double install (without nuking existing installation)" do
+ shutup do
+ Hbc::CLI::Install.run("local-transmission")
+ end
+ shutup do
+ Hbc::CLI::Install.run("local-transmission")
+ end
+ expect(Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-transmission.rb")).to be_installed
+ end
+
+ it "prints a warning message on double install" do
+ shutup do
+ Hbc::CLI::Install.run("local-transmission")
+ end
+
+ expect {
+ Hbc::CLI::Install.run("local-transmission", "")
+ }.to output(/Warning: A Cask for local-transmission is already installed./).to_stderr
+ end
+
+ it "allows double install with --force" do
+ shutup do
+ Hbc::CLI::Install.run("local-transmission")
+ end
+
+ expect {
+ expect {
+ Hbc::CLI::Install.run("local-transmission", "--force")
+ }.to output(/It seems there is already an App at.*overwriting\./).to_stderr
+ }.to output(/local-transmission was successfully installed!/).to_stdout
+ end
+
+ it "skips dependencies with --skip-cask-deps" do
+ shutup do
+ Hbc::CLI::Install.run("with-depends-on-cask-multiple", "--skip-cask-deps")
+ end
+ expect(Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-depends-on-cask-multiple.rb")).to be_installed
+ expect(Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-caffeine.rb")).not_to be_installed
+ expect(Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-transmission.rb")).not_to be_installed
+ end
+
+ it "properly handles Casks that are not present" do
+ expect {
+ shutup do
+ Hbc::CLI::Install.run("notacask")
+ end
+ }.to raise_error(Hbc::CaskError)
+ end
+
+ it "returns a suggestion for a misspelled Cask" do
+ expect {
+ begin
+ Hbc::CLI::Install.run("googlechrome")
+ rescue Hbc::CaskError
+ nil
+ end
+ }.to output(/No available Cask for googlechrome\. Did you mean:\ngoogle-chrome/).to_stderr
+ end
+
+ it "returns multiple suggestions for a Cask fragment" do
+ expect {
+ begin
+ Hbc::CLI::Install.run("google")
+ rescue Hbc::CaskError
+ nil
+ end
+ }.to output(/No available Cask for google\. Did you mean one of:\ngoogle/).to_stderr
+ end
+
+ describe "when no Cask is specified" do
+ with_options = lambda do |options|
+ it "raises an exception" do
+ expect {
+ Hbc::CLI::Install.run(*options)
+ }.to raise_error(Hbc::CaskUnspecifiedError)
+ end
+ end
+
+ describe "without options" do
+ with_options.call([])
+ end
+
+ describe "with --force" do
+ with_options.call(["--force"])
+ end
+
+ describe "with --skip-cask-deps" do
+ with_options.call(["--skip-cask-deps"])
+ end
+
+ describe "with an invalid option" do
+ with_options.call(["--notavalidoption"])
+ end
+ end
+end
diff --git a/Library/Homebrew/cask/spec/spec_helper.rb b/Library/Homebrew/cask/spec/spec_helper.rb
index d9f29c828..059d13a3a 100644
--- a/Library/Homebrew/cask/spec/spec_helper.rb
+++ b/Library/Homebrew/cask/spec/spec_helper.rb
@@ -31,6 +31,9 @@ Hbc.default_tap = Tap.fetch("caskroom", "spec").tap do |tap|
FileUtils.ln_s TEST_FIXTURE_DIR.join("cask"), tap.path
end
+# pretend that the caskroom/cask Tap is installed
+FileUtils.ln_s Pathname.new(ENV["HOMEBREW_LIBRARY"]).join("Taps", "caskroom", "homebrew-cask"), Tap.fetch("caskroom", "cask").path
+
RSpec.configure do |config|
config.order = :random
config.include(Test::Helper::Shutup)