2017-10-03 10:49:58 +02:00
require_relative " shared_examples/requires_cask_token "
require_relative " shared_examples/invalid_option "
2017-03-05 19:26:56 +01:00
describe Hbc :: CLI :: Install , :cask do
2017-10-03 10:49:58 +02:00
it_behaves_like " a command that requires a Cask token "
it_behaves_like " a command that handles invalid options "
2017-03-18 18:57:04 -05:00
it " displays the installation progress " do
output = Regexp . new <<-EOS.undent
2017-03-19 19:56:41 -05:00
== > Downloading file : . * caffeine . zip
2017-03-18 18:57:04 -05:00
== > Verifying checksum for Cask local - caffeine
== > Installing Cask local - caffeine
2017-03-19 19:56:41 -05:00
== > Moving App 'Caffeine.app' to '.*Caffeine.app' .
. * local - caffeine was successfully installed!
2017-03-18 18:57:04 -05:00
EOS
expect {
2017-10-03 10:49:58 +02:00
described_class . run ( " local-caffeine " )
2017-03-18 18:57:04 -05:00
} . to output ( output ) . to_stdout
end
2016-08-18 22:11:42 +03:00
it " allows staging and activation of multiple Casks at once " do
2017-10-03 10:49:58 +02:00
described_class . run ( " local-transmission " , " local-caffeine " )
2016-08-18 22:11:42 +03:00
2017-02-08 12:29:33 +01:00
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
2016-08-18 22:11:42 +03:00
end
it " skips double install (without nuking existing installation) " do
2017-10-03 10:49:58 +02:00
described_class . run ( " local-transmission " )
described_class . run ( " local-transmission " )
2017-02-08 12:29:33 +01:00
expect ( Hbc :: CaskLoader . load_from_file ( TEST_FIXTURE_DIR / " cask/Casks/local-transmission.rb " ) ) . to be_installed
2016-08-18 22:11:42 +03:00
end
it " prints a warning message on double install " do
2017-10-03 10:49:58 +02:00
described_class . run ( " local-transmission " )
2016-08-18 22:11:42 +03:00
2017-02-08 12:29:33 +01:00
expect {
2017-10-03 10:49:58 +02:00
described_class . run ( " local-transmission " )
2017-06-11 02:00:59 +02:00
} . to output ( / Warning: Cask 'local-transmission' is already installed. / ) . to_stderr
2016-08-18 22:11:42 +03:00
end
it " allows double install with --force " do
2017-10-03 10:49:58 +02:00
described_class . run ( " local-transmission " )
2016-08-18 22:11:42 +03:00
2017-02-08 12:29:33 +01:00
expect {
expect {
2017-10-03 10:49:58 +02:00
described_class . run ( " local-transmission " , " --force " )
2017-02-08 12:29:33 +01:00
} . to output ( / It seems there is already an App at.*overwriting \ . / ) . to_stderr
} . to output ( / local-transmission was successfully installed! / ) . to_stdout
2016-08-18 22:11:42 +03:00
end
it " skips dependencies with --skip-cask-deps " do
2017-10-03 10:49:58 +02:00
described_class . run ( " with-depends-on-cask-multiple " , " --skip-cask-deps " )
2017-02-08 12:29:33 +01:00
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
2016-08-18 22:11:42 +03:00
end
it " properly handles Casks that are not present " do
2017-02-08 12:29:33 +01:00
expect {
2017-10-03 10:49:58 +02:00
described_class . run ( " notacask " )
2017-09-11 08:37:15 +02:00
} . to raise_error ( Hbc :: CaskUnavailableError )
2016-08-18 22:11:42 +03:00
end
it " returns a suggestion for a misspelled Cask " do
2017-02-08 12:29:33 +01:00
expect {
2017-10-03 10:49:58 +02:00
described_class . run ( " localcaffeine " )
2017-09-11 08:37:15 +02:00
} . to raise_error ( Hbc :: CaskUnavailableError , / Cask 'localcaffeine' is unavailable: No Cask with this name exists \ . Did you mean “local-caffeine”? / )
2016-08-18 22:11:42 +03:00
end
it " returns multiple suggestions for a Cask fragment " do
2017-02-08 12:29:33 +01:00
expect {
2017-10-03 10:49:58 +02:00
described_class . run ( " local " )
2017-09-11 08:37:15 +02:00
} . to raise_error ( Hbc :: CaskUnavailableError , / Cask 'local' is unavailable: No Cask with this name exists \ . Did you mean one of these \ ? \ nlocal-caffeine \ nlocal-transmission / )
2016-08-18 22:11:42 +03:00
end
end