aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Reiter2017-10-03 10:49:58 +0200
committerMarkus Reiter2017-10-03 10:56:40 +0200
commit643b2a168c6c5b2f21b141ec385fc49d29c41718 (patch)
treeae9f32f7283806d2e1878bb4aa8932b2fbacb2de
parentec0d8fa7ba18f4fe05c5241258502c8db332b13d (diff)
downloadbrew-643b2a168c6c5b2f21b141ec385fc49d29c41718.tar.bz2
Refactor `cask/cli` specs.
-rw-r--r--Library/Homebrew/.rubocop.yml1
-rw-r--r--Library/Homebrew/test/cask/cli/audit_spec.rb16
-rw-r--r--Library/Homebrew/test/cask/cli/cat_spec.rb34
-rw-r--r--Library/Homebrew/test/cask/cli/cleanup_spec.rb4
-rw-r--r--Library/Homebrew/test/cask/cli/create_spec.rb28
-rw-r--r--Library/Homebrew/test/cask/cli/doctor_spec.rb4
-rw-r--r--Library/Homebrew/test/cask/cli/edit_spec.rb22
-rw-r--r--Library/Homebrew/test/cask/cli/fetch_spec.rb30
-rw-r--r--Library/Homebrew/test/cask/cli/home_spec.rb4
-rw-r--r--Library/Homebrew/test/cask/cli/info_spec.rb40
-rw-r--r--Library/Homebrew/test/cask/cli/install_spec.rb60
-rw-r--r--Library/Homebrew/test/cask/cli/list_spec.rb14
-rw-r--r--Library/Homebrew/test/cask/cli/options_spec.rb32
-rw-r--r--Library/Homebrew/test/cask/cli/outdated_spec.rb4
-rw-r--r--Library/Homebrew/test/cask/cli/reinstall_spec.rb4
-rw-r--r--Library/Homebrew/test/cask/cli/search_spec.rb4
-rw-r--r--Library/Homebrew/test/cask/cli/shared_examples/invalid_option.rb15
-rw-r--r--Library/Homebrew/test/cask/cli/shared_examples/requires_cask_token.rb9
-rw-r--r--Library/Homebrew/test/cask/cli/style_spec.rb4
-rw-r--r--Library/Homebrew/test/cask/cli/uninstall_spec.rb46
-rw-r--r--Library/Homebrew/test/cask/cli/zap_spec.rb26
-rw-r--r--Library/Homebrew/test/cask/depends_on_spec.rb5
22 files changed, 178 insertions, 228 deletions
diff --git a/Library/Homebrew/.rubocop.yml b/Library/Homebrew/.rubocop.yml
index dc4406527..3b440c33c 100644
--- a/Library/Homebrew/.rubocop.yml
+++ b/Library/Homebrew/.rubocop.yml
@@ -32,6 +32,7 @@ Metrics/ParameterLists:
Style/BlockDelimiters:
Exclude:
- '**/*_spec.rb'
+ - '**/shared_examples/**/*.rb'
# so many of these in formulae but none in here
Style/GuardClause:
diff --git a/Library/Homebrew/test/cask/cli/audit_spec.rb b/Library/Homebrew/test/cask/cli/audit_spec.rb
index 30ab437cb..da8bf1273 100644
--- a/Library/Homebrew/test/cask/cli/audit_spec.rb
+++ b/Library/Homebrew/test/cask/cli/audit_spec.rb
@@ -1,6 +1,10 @@
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Audit, :cask do
let(:cask) { Hbc::Cask.new(nil) }
+ it_behaves_like "a command that handles invalid options"
+
describe "selection of Casks to audit" do
it "audits all Casks if no tokens are given" do
expect(cask).to be_a Hbc::Cask
@@ -9,7 +13,7 @@ describe Hbc::CLI::Audit, :cask do
expect(Hbc::Auditor).to receive(:audit).twice.and_return(true)
- Hbc::CLI::Audit.run
+ described_class.run
end
it "audits specified Casks if tokens are given" do
@@ -20,7 +24,7 @@ describe Hbc::CLI::Audit, :cask do
.with(cask, audit_download: false, check_token_conflicts: false)
.and_return(true)
- Hbc::CLI::Audit.run(cask_token)
+ described_class.run(cask_token)
end
end
@@ -31,7 +35,7 @@ describe Hbc::CLI::Audit, :cask do
.with(cask, audit_download: false, check_token_conflicts: false)
.and_return(true)
- Hbc::CLI::Audit.run("casktoken")
+ described_class.run("casktoken")
end
it "download a Cask if --download flag is set" do
@@ -40,7 +44,7 @@ describe Hbc::CLI::Audit, :cask do
.with(cask, audit_download: true, check_token_conflicts: false)
.and_return(true)
- Hbc::CLI::Audit.run("casktoken", "--download")
+ described_class.run("casktoken", "--download")
end
end
@@ -51,7 +55,7 @@ describe Hbc::CLI::Audit, :cask do
.with(cask, audit_download: false, check_token_conflicts: false)
.and_return(true)
- Hbc::CLI::Audit.run("casktoken")
+ described_class.run("casktoken")
end
it "checks for token conflicts if --token-conflicts flag is set" do
@@ -60,7 +64,7 @@ describe Hbc::CLI::Audit, :cask do
.with(cask, audit_download: false, check_token_conflicts: true)
.and_return(true)
- Hbc::CLI::Audit.run("casktoken", "--token-conflicts")
+ described_class.run("casktoken", "--token-conflicts")
end
end
end
diff --git a/Library/Homebrew/test/cask/cli/cat_spec.rb b/Library/Homebrew/test/cask/cli/cat_spec.rb
index 5a4b29c6f..6b54a2e4b 100644
--- a/Library/Homebrew/test/cask/cli/cat_spec.rb
+++ b/Library/Homebrew/test/cask/cli/cat_spec.rb
@@ -1,4 +1,10 @@
+require_relative "shared_examples/requires_cask_token"
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Cat, :cask do
+ it_behaves_like "a command that requires a Cask token"
+ it_behaves_like "a command that handles invalid options"
+
describe "given a basic Cask" do
let(:basic_cask_content) {
<<-EOS.undent
@@ -16,41 +22,19 @@ describe Hbc::CLI::Cat, :cask do
it "displays the Cask file content about the specified Cask" do
expect {
- Hbc::CLI::Cat.run("basic-cask")
+ described_class.run("basic-cask")
}.to output(basic_cask_content).to_stdout
end
it "can display multiple Casks" do
expect {
- Hbc::CLI::Cat.run("basic-cask", "basic-cask")
+ described_class.run("basic-cask", "basic-cask")
}.to output(basic_cask_content * 2).to_stdout
end
-
- it "fails when option is unknown" do
- expect {
- Hbc::CLI::Cat.run("--notavalidoption", "basic-cask")
- }.to raise_error(/invalid option/)
- end
end
it "raises an exception when the Cask does not exist" do
- expect { Hbc::CLI::Cat.run("notacask") }
+ expect { described_class.run("notacask") }
.to raise_error(Hbc::CaskUnavailableError, /is unavailable/)
end
-
- describe "when no Cask is specified" do
- it "raises an exception" do
- expect {
- Hbc::CLI::Cat.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::Cat.run("--notavalidoption")
- }.to raise_error(/invalid option/)
- end
- end
end
diff --git a/Library/Homebrew/test/cask/cli/cleanup_spec.rb b/Library/Homebrew/test/cask/cli/cleanup_spec.rb
index 64e3ef49f..7cf00352d 100644
--- a/Library/Homebrew/test/cask/cli/cleanup_spec.rb
+++ b/Library/Homebrew/test/cask/cli/cleanup_spec.rb
@@ -1,3 +1,5 @@
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Cleanup, :cask do
let(:cache_location) { Pathname.new(Dir.mktmpdir).realpath }
let(:outdated_only) { false }
@@ -12,6 +14,8 @@ describe Hbc::CLI::Cleanup, :cask do
cache_location.rmtree
end
+ it_behaves_like "a command that handles invalid options"
+
describe "cleanup" do
let(:cask_token) { "caffeine" }
let(:cask_tokens) { [cask_token] }
diff --git a/Library/Homebrew/test/cask/cli/create_spec.rb b/Library/Homebrew/test/cask/cli/create_spec.rb
index 17d426f78..60c03db75 100644
--- a/Library/Homebrew/test/cask/cli/create_spec.rb
+++ b/Library/Homebrew/test/cask/cli/create_spec.rb
@@ -1,3 +1,6 @@
+require_relative "shared_examples/requires_cask_token"
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Create, :cask do
around(:each) do |example|
begin
@@ -13,6 +16,9 @@ describe Hbc::CLI::Create, :cask do
allow_any_instance_of(described_class).to receive(:exec_editor)
end
+ it_behaves_like "a command that requires a Cask token"
+ it_behaves_like "a command that handles invalid options"
+
it "opens the editor for the specified Cask" do
command = described_class.new("new-cask")
expect(command).to receive(:exec_editor).with(Hbc::CaskLoader.path("new-cask"))
@@ -53,26 +59,4 @@ describe Hbc::CLI::Create, :cask do
expect(command).to receive(:exec_editor).with(Hbc::CaskLoader.path("local-caff"))
command.run
end
-
- describe "when no Cask is specified" do
- it "raises an exception" do
- expect {
- described_class.run
- }.to raise_error(Hbc::CaskUnspecifiedError)
- end
- end
-
- context "when an invalid option is specified" do
- it "raises an exception when no Cask is specified" do
- expect {
- described_class.run("--notavalidoption")
- }.to raise_error(/invalid option/)
- end
-
- it "raises an exception" do
- expect {
- described_class.run("--notavalidoption", "yet-another-cask")
- }.to raise_error(/invalid option/)
- end
- end
end
diff --git a/Library/Homebrew/test/cask/cli/doctor_spec.rb b/Library/Homebrew/test/cask/cli/doctor_spec.rb
index b24c777eb..e3967060e 100644
--- a/Library/Homebrew/test/cask/cli/doctor_spec.rb
+++ b/Library/Homebrew/test/cask/cli/doctor_spec.rb
@@ -1,4 +1,8 @@
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Doctor, :cask do
+ it_behaves_like "a command that handles invalid options"
+
it "displays some nice info about the environment" do
expect {
Hbc::CLI::Doctor.run
diff --git a/Library/Homebrew/test/cask/cli/edit_spec.rb b/Library/Homebrew/test/cask/cli/edit_spec.rb
index 51542807f..347522020 100644
--- a/Library/Homebrew/test/cask/cli/edit_spec.rb
+++ b/Library/Homebrew/test/cask/cli/edit_spec.rb
@@ -1,8 +1,14 @@
+require_relative "shared_examples/requires_cask_token"
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Edit, :cask do
before(:each) do
allow_any_instance_of(described_class).to receive(:exec_editor)
end
+ it_behaves_like "a command that requires a Cask token"
+ it_behaves_like "a command that handles invalid options"
+
it "opens the editor for the specified Cask" do
command = described_class.new("local-caffeine")
expect(command).to receive(:exec_editor).with(Hbc::CaskLoader.path("local-caffeine"))
@@ -20,20 +26,4 @@ describe Hbc::CLI::Edit, :cask do
described_class.run("notacask")
}.to raise_error(Hbc::CaskUnavailableError)
end
-
- describe "when no Cask is specified" do
- it "raises an exception" do
- expect {
- described_class.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 {
- described_class.run("--notavalidoption")
- }.to raise_error(/invalid option/)
- end
- end
end
diff --git a/Library/Homebrew/test/cask/cli/fetch_spec.rb b/Library/Homebrew/test/cask/cli/fetch_spec.rb
index faaa69b35..087a30f50 100644
--- a/Library/Homebrew/test/cask/cli/fetch_spec.rb
+++ b/Library/Homebrew/test/cask/cli/fetch_spec.rb
@@ -1,3 +1,6 @@
+require_relative "shared_examples/requires_cask_token"
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Fetch, :cask do
let(:local_transmission) {
Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-transmission.rb")
@@ -7,8 +10,11 @@ describe Hbc::CLI::Fetch, :cask do
Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-caffeine.rb")
}
+ it_behaves_like "a command that requires a Cask token"
+ it_behaves_like "a command that handles invalid options"
+
it "allows download the installer of a Cask" do
- Hbc::CLI::Fetch.run("local-transmission", "local-caffeine")
+ described_class.run("local-transmission", "local-caffeine")
expect(Hbc::CurlDownloadStrategy.new(local_transmission).cached_location).to exist
expect(Hbc::CurlDownloadStrategy.new(local_caffeine).cached_location).to exist
end
@@ -19,7 +25,7 @@ describe Hbc::CLI::Fetch, :cask do
Hbc::Download.new(local_transmission).perform
old_ctime = File.stat(download_stategy.cached_location).ctime
- Hbc::CLI::Fetch.run("local-transmission")
+ described_class.run("local-transmission")
new_ctime = File.stat(download_stategy.cached_location).ctime
expect(old_ctime.to_i).to eq(new_ctime.to_i)
@@ -32,7 +38,7 @@ describe Hbc::CLI::Fetch, :cask do
old_ctime = File.stat(download_stategy.cached_location).ctime
sleep(1)
- Hbc::CLI::Fetch.run("local-transmission", "--force")
+ described_class.run("local-transmission", "--force")
download_stategy = Hbc::CurlDownloadStrategy.new(local_transmission)
new_ctime = File.stat(download_stategy.cached_location).ctime
@@ -41,23 +47,7 @@ describe Hbc::CLI::Fetch, :cask do
it "properly handles Casks that are not present" do
expect {
- Hbc::CLI::Fetch.run("notacask")
+ described_class.run("notacask")
}.to raise_error(Hbc::CaskUnavailableError)
end
-
- describe "when no Cask is specified" do
- it "raises an exception" do
- expect {
- Hbc::CLI::Fetch.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::Fetch.run("--notavalidoption")
- }.to raise_error(/invalid option/)
- end
- end
end
diff --git a/Library/Homebrew/test/cask/cli/home_spec.rb b/Library/Homebrew/test/cask/cli/home_spec.rb
index e985fb6cd..8960d2acc 100644
--- a/Library/Homebrew/test/cask/cli/home_spec.rb
+++ b/Library/Homebrew/test/cask/cli/home_spec.rb
@@ -1,8 +1,12 @@
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Home, :cask do
before do
allow(described_class).to receive(:open_url)
end
+ it_behaves_like "a command that handles invalid options"
+
it "opens the homepage for the specified Cask" do
expect(described_class).to receive(:open_url).with("http://example.com/local-caffeine")
described_class.run("local-caffeine")
diff --git a/Library/Homebrew/test/cask/cli/info_spec.rb b/Library/Homebrew/test/cask/cli/info_spec.rb
index df02bb1e5..e24eead11 100644
--- a/Library/Homebrew/test/cask/cli/info_spec.rb
+++ b/Library/Homebrew/test/cask/cli/info_spec.rb
@@ -1,7 +1,13 @@
+require_relative "shared_examples/requires_cask_token"
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Info, :cask do
+ it_behaves_like "a command that requires a Cask token"
+ it_behaves_like "a command that handles invalid options"
+
it "displays some nice info about the specified Cask" do
expect {
- Hbc::CLI::Info.run("local-caffeine")
+ described_class.run("local-caffeine")
}.to output(<<-EOS.undent).to_stdout
local-caffeine: 1.2.3
http://example.com/local-caffeine
@@ -38,20 +44,14 @@ describe Hbc::CLI::Info, :cask do
it "displays the info" do
expect {
- Hbc::CLI::Info.run("local-caffeine", "local-transmission")
+ described_class.run("local-caffeine", "local-transmission")
}.to output(expected_output).to_stdout
end
-
- it "throws away stray options" do
- expect {
- Hbc::CLI::Info.run("--notavalidoption", "local-caffeine", "local-transmission")
- }.to raise_error(/invalid option/)
- end
end
it "should print caveats if the Cask provided one" do
expect {
- Hbc::CLI::Info.run("with-caveats")
+ described_class.run("with-caveats")
}.to output(<<-EOS.undent).to_stdout
with-caveats: 1.2.3
http://example.com/local-caffeine
@@ -77,7 +77,7 @@ describe Hbc::CLI::Info, :cask do
it 'should not print "Caveats" section divider if the caveats block has no output' do
expect {
- Hbc::CLI::Info.run("with-conditional-caveats")
+ described_class.run("with-conditional-caveats")
}.to output(<<-EOS.undent).to_stdout
with-conditional-caveats: 1.2.3
http://example.com/local-caffeine
@@ -92,7 +92,7 @@ describe Hbc::CLI::Info, :cask do
it "prints languages specified in the Cask" do
expect {
- Hbc::CLI::Info.run("with-languages")
+ described_class.run("with-languages")
}.to output(<<-EOS.undent).to_stdout
with-languages: 1.2.3
http://example.com/local-caffeine
@@ -109,7 +109,7 @@ describe Hbc::CLI::Info, :cask do
it 'does not print "Languages" section divider if the languages block has no output' do
expect {
- Hbc::CLI::Info.run("without-languages")
+ described_class.run("without-languages")
}.to output(<<-EOS.undent).to_stdout
without-languages: 1.2.3
http://example.com/local-caffeine
@@ -121,20 +121,4 @@ describe Hbc::CLI::Info, :cask do
Caffeine.app (App)
EOS
end
-
- describe "when no Cask is specified" do
- it "raises an exception" do
- expect {
- Hbc::CLI::Info.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::Info.run("--notavalidoption")
- }.to raise_error(/invalid option/)
- end
- end
end
diff --git a/Library/Homebrew/test/cask/cli/install_spec.rb b/Library/Homebrew/test/cask/cli/install_spec.rb
index e30489789..17a7b9f99 100644
--- a/Library/Homebrew/test/cask/cli/install_spec.rb
+++ b/Library/Homebrew/test/cask/cli/install_spec.rb
@@ -1,4 +1,10 @@
+require_relative "shared_examples/requires_cask_token"
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Install, :cask do
+ it_behaves_like "a command that requires a Cask token"
+ it_behaves_like "a command that handles invalid options"
+
it "displays the installation progress" do
output = Regexp.new <<-EOS.undent
==> Downloading file:.*caffeine.zip
@@ -9,12 +15,12 @@ describe Hbc::CLI::Install, :cask do
EOS
expect {
- Hbc::CLI::Install.run("local-caffeine")
+ described_class.run("local-caffeine")
}.to output(output).to_stdout
end
it "allows staging and activation of multiple Casks at once" do
- Hbc::CLI::Install.run("local-transmission", "local-caffeine")
+ described_class.run("local-transmission", "local-caffeine")
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
@@ -23,31 +29,31 @@ describe Hbc::CLI::Install, :cask do
end
it "skips double install (without nuking existing installation)" do
- Hbc::CLI::Install.run("local-transmission")
- Hbc::CLI::Install.run("local-transmission")
+ described_class.run("local-transmission")
+ described_class.run("local-transmission")
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
- Hbc::CLI::Install.run("local-transmission")
+ described_class.run("local-transmission")
expect {
- Hbc::CLI::Install.run("local-transmission")
+ described_class.run("local-transmission")
}.to output(/Warning: Cask 'local-transmission' is already installed./).to_stderr
end
it "allows double install with --force" do
- Hbc::CLI::Install.run("local-transmission")
+ described_class.run("local-transmission")
expect {
expect {
- Hbc::CLI::Install.run("local-transmission", "--force")
+ described_class.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
- Hbc::CLI::Install.run("with-depends-on-cask-multiple", "--skip-cask-deps")
+ described_class.run("with-depends-on-cask-multiple", "--skip-cask-deps")
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
@@ -55,49 +61,19 @@ describe Hbc::CLI::Install, :cask do
it "properly handles Casks that are not present" do
expect {
- Hbc::CLI::Install.run("notacask")
+ described_class.run("notacask")
}.to raise_error(Hbc::CaskUnavailableError)
end
it "returns a suggestion for a misspelled Cask" do
expect {
- Hbc::CLI::Install.run("localcaffeine")
+ described_class.run("localcaffeine")
}.to raise_error(Hbc::CaskUnavailableError, /Cask 'localcaffeine' is unavailable: No Cask with this name exists\. Did you mean “local-caffeine”?/)
end
it "returns multiple suggestions for a Cask fragment" do
expect {
- Hbc::CLI::Install.run("local")
+ described_class.run("local")
}.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/)
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
- it "raises an error" do
- expect {
- Hbc::CLI::Install.run("--notavalidoption")
- }.to raise_error(/invalid option/)
- end
- end
- end
end
diff --git a/Library/Homebrew/test/cask/cli/list_spec.rb b/Library/Homebrew/test/cask/cli/list_spec.rb
index d2d7efd3b..75da82762 100644
--- a/Library/Homebrew/test/cask/cli/list_spec.rb
+++ b/Library/Homebrew/test/cask/cli/list_spec.rb
@@ -1,4 +1,8 @@
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::List, :cask do
+ it_behaves_like "a command that handles invalid options"
+
it "lists the installed Casks in a pretty fashion" do
casks = %w[local-caffeine local-transmission].map { |c| Hbc::CaskLoader.load(c) }
@@ -7,7 +11,7 @@ describe Hbc::CLI::List, :cask do
end
expect {
- Hbc::CLI::List.run
+ described_class.run
}.to output(<<-EOS.undent).to_stdout
local-caffeine
local-transmission
@@ -26,7 +30,7 @@ describe Hbc::CLI::List, :cask do
end
expect {
- Hbc::CLI::List.run("--full-name")
+ described_class.run("--full-name")
}.to output(<<-EOS.undent).to_stdout
local-caffeine
local-transmission
@@ -49,13 +53,13 @@ describe Hbc::CLI::List, :cask do
it "of all installed Casks" do
expect {
- Hbc::CLI::List.run("--versions")
+ described_class.run("--versions")
}.to output(expected_output).to_stdout
end
it "of given Casks" do
expect {
- Hbc::CLI::List.run("--versions", "local-caffeine", "local-transmission")
+ described_class.run("--versions", "local-caffeine", "local-transmission")
}.to output(expected_output).to_stdout
end
end
@@ -72,7 +76,7 @@ describe Hbc::CLI::List, :cask do
.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
expect {
- Hbc::CLI::List.run("local-transmission", "local-caffeine")
+ described_class.run("local-transmission", "local-caffeine")
}.to output(<<-EOS.undent).to_stdout
==> Apps
#{Hbc.appdir.join("Transmission.app")} (#{Hbc.appdir.join("Transmission.app").abv})
diff --git a/Library/Homebrew/test/cask/cli/options_spec.rb b/Library/Homebrew/test/cask/cli/options_spec.rb
index 98eb05f7e..82d830795 100644
--- a/Library/Homebrew/test/cask/cli/options_spec.rb
+++ b/Library/Homebrew/test/cask/cli/options_spec.rb
@@ -1,6 +1,6 @@
describe Hbc::CLI, :cask do
it "supports setting the appdir" do
- Hbc::CLI.new.process_options("help", "--appdir=/some/path/foo")
+ described_class.new.process_options("help", "--appdir=/some/path/foo")
expect(Hbc.appdir).to eq(Pathname.new("/some/path/foo"))
end
@@ -8,13 +8,13 @@ describe Hbc::CLI, :cask do
it "supports setting the appdir from ENV" do
ENV["HOMEBREW_CASK_OPTS"] = "--appdir=/some/path/bar"
- Hbc::CLI.new.process_options("help")
+ described_class.new.process_options("help")
expect(Hbc.appdir).to eq(Pathname.new("/some/path/bar"))
end
it "supports setting the prefpanedir" do
- Hbc::CLI.new.process_options("help", "--prefpanedir=/some/path/foo")
+ described_class.new.process_options("help", "--prefpanedir=/some/path/foo")
expect(Hbc.prefpanedir).to eq(Pathname.new("/some/path/foo"))
end
@@ -22,13 +22,13 @@ describe Hbc::CLI, :cask do
it "supports setting the prefpanedir from ENV" do
ENV["HOMEBREW_CASK_OPTS"] = "--prefpanedir=/some/path/bar"
- Hbc::CLI.new.process_options("help")
+ described_class.new.process_options("help")
expect(Hbc.prefpanedir).to eq(Pathname.new("/some/path/bar"))
end
it "supports setting the qlplugindir" do
- Hbc::CLI.new.process_options("help", "--qlplugindir=/some/path/foo")
+ described_class.new.process_options("help", "--qlplugindir=/some/path/foo")
expect(Hbc.qlplugindir).to eq(Pathname.new("/some/path/foo"))
end
@@ -36,13 +36,13 @@ describe Hbc::CLI, :cask do
it "supports setting the qlplugindir from ENV" do
ENV["HOMEBREW_CASK_OPTS"] = "--qlplugindir=/some/path/bar"
- Hbc::CLI.new.process_options("help")
+ described_class.new.process_options("help")
expect(Hbc.qlplugindir).to eq(Pathname.new("/some/path/bar"))
end
it "supports setting the colorpickerdir" do
- Hbc::CLI.new.process_options("help", "--colorpickerdir=/some/path/foo")
+ described_class.new.process_options("help", "--colorpickerdir=/some/path/foo")
expect(Hbc.colorpickerdir).to eq(Pathname.new("/some/path/foo"))
end
@@ -50,13 +50,13 @@ describe Hbc::CLI, :cask do
it "supports setting the colorpickerdir from ENV" do
ENV["HOMEBREW_CASK_OPTS"] = "--colorpickerdir=/some/path/bar"
- Hbc::CLI.new.process_options("help")
+ described_class.new.process_options("help")
expect(Hbc.colorpickerdir).to eq(Pathname.new("/some/path/bar"))
end
it "supports setting the dictionarydir" do
- Hbc::CLI.new.process_options("help", "--dictionarydir=/some/path/foo")
+ described_class.new.process_options("help", "--dictionarydir=/some/path/foo")
expect(Hbc.dictionarydir).to eq(Pathname.new("/some/path/foo"))
end
@@ -64,13 +64,13 @@ describe Hbc::CLI, :cask do
it "supports setting the dictionarydir from ENV" do
ENV["HOMEBREW_CASK_OPTS"] = "--dictionarydir=/some/path/bar"
- Hbc::CLI.new.process_options("help")
+ described_class.new.process_options("help")
expect(Hbc.dictionarydir).to eq(Pathname.new("/some/path/bar"))
end
it "supports setting the fontdir" do
- Hbc::CLI.new.process_options("help", "--fontdir=/some/path/foo")
+ described_class.new.process_options("help", "--fontdir=/some/path/foo")
expect(Hbc.fontdir).to eq(Pathname.new("/some/path/foo"))
end
@@ -78,13 +78,13 @@ describe Hbc::CLI, :cask do
it "supports setting the fontdir from ENV" do
ENV["HOMEBREW_CASK_OPTS"] = "--fontdir=/some/path/bar"
- Hbc::CLI.new.process_options("help")
+ described_class.new.process_options("help")
expect(Hbc.fontdir).to eq(Pathname.new("/some/path/bar"))
end
it "supports setting the servicedir" do
- Hbc::CLI.new.process_options("help", "--servicedir=/some/path/foo")
+ described_class.new.process_options("help", "--servicedir=/some/path/foo")
expect(Hbc.servicedir).to eq(Pathname.new("/some/path/foo"))
end
@@ -92,13 +92,13 @@ describe Hbc::CLI, :cask do
it "supports setting the servicedir from ENV" do
ENV["HOMEBREW_CASK_OPTS"] = "--servicedir=/some/path/bar"
- Hbc::CLI.new.process_options("help")
+ described_class.new.process_options("help")
expect(Hbc.servicedir).to eq(Pathname.new("/some/path/bar"))
end
it "allows additional options to be passed through" do
- rest = Hbc::CLI.new.process_options("edit", "foo", "--create", "--appdir=/some/path/qux")
+ rest = described_class.new.process_options("edit", "foo", "--create", "--appdir=/some/path/qux")
expect(Hbc.appdir).to eq(Pathname.new("/some/path/qux"))
expect(rest).to eq(%w[edit foo --create])
@@ -106,7 +106,7 @@ describe Hbc::CLI, :cask do
describe "--help" do
it "sets the Cask help method to true" do
- command = Hbc::CLI.new("foo", "--help")
+ command = described_class.new("foo", "--help")
expect(command.help?).to be true
end
end
diff --git a/Library/Homebrew/test/cask/cli/outdated_spec.rb b/Library/Homebrew/test/cask/cli/outdated_spec.rb
index 946092f89..7fca8c248 100644
--- a/Library/Homebrew/test/cask/cli/outdated_spec.rb
+++ b/Library/Homebrew/test/cask/cli/outdated_spec.rb
@@ -1,3 +1,5 @@
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Outdated, :cask do
let(:installed) do
[
@@ -15,6 +17,8 @@ describe Hbc::CLI::Outdated, :cask do
allow_any_instance_of(described_class).to receive(:verbose?).and_return(true)
end
+ it_behaves_like "a command that handles invalid options"
+
describe 'without --greedy it ignores the Casks with "vesion latest" or "auto_updates true"' do
it "checks all the installed Casks when no token is provided" do
expect {
diff --git a/Library/Homebrew/test/cask/cli/reinstall_spec.rb b/Library/Homebrew/test/cask/cli/reinstall_spec.rb
index 3a9c3e2f5..073fbb23c 100644
--- a/Library/Homebrew/test/cask/cli/reinstall_spec.rb
+++ b/Library/Homebrew/test/cask/cli/reinstall_spec.rb
@@ -1,4 +1,8 @@
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Reinstall, :cask do
+ it_behaves_like "a command that handles invalid options"
+
it "displays the reinstallation progress" do
caffeine = Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-caffeine.rb")
diff --git a/Library/Homebrew/test/cask/cli/search_spec.rb b/Library/Homebrew/test/cask/cli/search_spec.rb
index 3d58e6a15..a4f796f3c 100644
--- a/Library/Homebrew/test/cask/cli/search_spec.rb
+++ b/Library/Homebrew/test/cask/cli/search_spec.rb
@@ -1,8 +1,12 @@
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Search, :cask do
before(:each) do
allow(Tty).to receive(:width).and_return(0)
end
+ it_behaves_like "a command that handles invalid options"
+
it "lists the available Casks that match the search term" do
allow(GitHub).to receive(:search_code).and_return([])
diff --git a/Library/Homebrew/test/cask/cli/shared_examples/invalid_option.rb b/Library/Homebrew/test/cask/cli/shared_examples/invalid_option.rb
new file mode 100644
index 000000000..12a05be92
--- /dev/null
+++ b/Library/Homebrew/test/cask/cli/shared_examples/invalid_option.rb
@@ -0,0 +1,15 @@
+shared_examples "a command that handles invalid options" do
+ context "when an invalid option is specified" do
+ it "raises an exception when no Cask is specified" do
+ expect {
+ described_class.run("--not-a-valid-option")
+ }.to raise_error("invalid option: --not-a-valid-option")
+ end
+
+ it "raises an exception when a Cask is specified" do
+ expect {
+ described_class.run("--not-a-valid-option", "basic-cask")
+ }.to raise_error("invalid option: --not-a-valid-option")
+ end
+ end
+end
diff --git a/Library/Homebrew/test/cask/cli/shared_examples/requires_cask_token.rb b/Library/Homebrew/test/cask/cli/shared_examples/requires_cask_token.rb
new file mode 100644
index 000000000..dc1e471e5
--- /dev/null
+++ b/Library/Homebrew/test/cask/cli/shared_examples/requires_cask_token.rb
@@ -0,0 +1,9 @@
+shared_examples "a command that requires a Cask token" do
+ context "when no Cask is specified" do
+ it "raises an exception " do
+ expect {
+ described_class.run
+ }.to raise_error(Hbc::CaskUnspecifiedError, "This command requires a Cask token.")
+ end
+ end
+end
diff --git a/Library/Homebrew/test/cask/cli/style_spec.rb b/Library/Homebrew/test/cask/cli/style_spec.rb
index 2007b87d7..12cd348a0 100644
--- a/Library/Homebrew/test/cask/cli/style_spec.rb
+++ b/Library/Homebrew/test/cask/cli/style_spec.rb
@@ -1,11 +1,13 @@
require "open3"
require "rubygems"
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Style, :cask do
let(:args) { [] }
let(:cli) { described_class.new(*args) }
- around(&:run)
+ it_behaves_like "a command that handles invalid options"
describe "#run" do
subject { cli.run }
diff --git a/Library/Homebrew/test/cask/cli/uninstall_spec.rb b/Library/Homebrew/test/cask/cli/uninstall_spec.rb
index 2ec506839..9ebd80dfb 100644
--- a/Library/Homebrew/test/cask/cli/uninstall_spec.rb
+++ b/Library/Homebrew/test/cask/cli/uninstall_spec.rb
@@ -1,4 +1,10 @@
+require_relative "shared_examples/requires_cask_token"
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Uninstall, :cask do
+ it_behaves_like "a command that requires a Cask token"
+ it_behaves_like "a command that handles invalid options"
+
it "displays the uninstallation progress" do
caffeine = Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-caffeine.rb")
@@ -10,23 +16,23 @@ describe Hbc::CLI::Uninstall, :cask do
EOS
expect {
- Hbc::CLI::Uninstall.run("local-caffeine")
+ described_class.run("local-caffeine")
}.to output(output).to_stdout
end
it "shows an error when a bad Cask is provided" do
- expect { Hbc::CLI::Uninstall.run("notacask") }
+ expect { described_class.run("notacask") }
.to raise_error(Hbc::CaskUnavailableError, /is unavailable/)
end
it "shows an error when a Cask is provided that's not installed" do
- expect { Hbc::CLI::Uninstall.run("local-caffeine") }
+ expect { described_class.run("local-caffeine") }
.to raise_error(Hbc::CaskNotInstalledError, /is not installed/)
end
it "tries anyway on a non-present Cask when --force is given" do
expect {
- Hbc::CLI::Uninstall.run("local-caffeine", "--force")
+ described_class.run("local-caffeine", "--force")
}.not_to raise_error
end
@@ -40,7 +46,7 @@ describe Hbc::CLI::Uninstall, :cask do
expect(caffeine).to be_installed
expect(transmission).to be_installed
- Hbc::CLI::Uninstall.run("local-caffeine", "local-transmission")
+ described_class.run("local-caffeine", "local-transmission")
expect(caffeine).not_to be_installed
expect(Hbc.appdir.join("Transmission.app")).not_to exist
@@ -57,7 +63,7 @@ describe Hbc::CLI::Uninstall, :cask do
expect(Hbc.appdir.join("MyFancyApp.app")).to exist
expect {
- Hbc::CLI::Uninstall.run("with-uninstall-script-app")
+ described_class.run("with-uninstall-script-app")
}.not_to raise_error
expect(cask).not_to be_installed
@@ -73,13 +79,13 @@ describe Hbc::CLI::Uninstall, :cask do
Hbc.appdir.join("MyFancyApp.app").rmtree
- expect { Hbc::CLI::Uninstall.run("with-uninstall-script-app") }
+ expect { described_class.run("with-uninstall-script-app") }
.to raise_error(Hbc::CaskError, /uninstall script .* does not exist/)
expect(cask).to be_installed
expect {
- Hbc::CLI::Uninstall.run("with-uninstall-script-app", "--force")
+ described_class.run("with-uninstall-script-app", "--force")
}.not_to raise_error
expect(cask).not_to be_installed
@@ -112,13 +118,13 @@ describe Hbc::CLI::Uninstall, :cask do
end
it "uninstalls one version at a time" do
- Hbc::CLI::Uninstall.run("versioned-cask")
+ described_class.run("versioned-cask")
expect(caskroom_path.join(first_installed_version)).to exist
expect(caskroom_path.join(last_installed_version)).not_to exist
expect(caskroom_path).to exist
- Hbc::CLI::Uninstall.run("versioned-cask")
+ described_class.run("versioned-cask")
expect(caskroom_path.join(first_installed_version)).not_to exist
expect(caskroom_path).not_to exist
@@ -127,7 +133,7 @@ describe Hbc::CLI::Uninstall, :cask do
it "displays a message when versions remain installed" do
expect {
expect {
- Hbc::CLI::Uninstall.run("versioned-cask")
+ described_class.run("versioned-cask")
}.not_to output.to_stderr
}.to output(/#{token} #{first_installed_version} is still installed./).to_stdout
end
@@ -157,26 +163,10 @@ describe Hbc::CLI::Uninstall, :cask do
end
it "can still uninstall those Casks" do
- Hbc::CLI::Uninstall.run("ive-been-renamed")
+ described_class.run("ive-been-renamed")
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(/invalid option/)
- end
- end
end
diff --git a/Library/Homebrew/test/cask/cli/zap_spec.rb b/Library/Homebrew/test/cask/cli/zap_spec.rb
index 502bf8e69..19e8ff261 100644
--- a/Library/Homebrew/test/cask/cli/zap_spec.rb
+++ b/Library/Homebrew/test/cask/cli/zap_spec.rb
@@ -1,6 +1,12 @@
+require_relative "shared_examples/requires_cask_token"
+require_relative "shared_examples/invalid_option"
+
describe Hbc::CLI::Zap, :cask do
+ it_behaves_like "a command that requires a Cask token"
+ it_behaves_like "a command that handles invalid options"
+
it "shows an error when a bad Cask is provided" do
- expect { Hbc::CLI::Zap.run("notacask") }
+ expect { described_class.run("notacask") }
.to raise_error(Hbc::CaskUnavailableError, /is unavailable/)
end
@@ -14,7 +20,7 @@ describe Hbc::CLI::Zap, :cask do
expect(caffeine).to be_installed
expect(transmission).to be_installed
- Hbc::CLI::Zap.run("local-caffeine", "local-transmission")
+ described_class.run("local-caffeine", "local-transmission")
expect(caffeine).not_to be_installed
expect(Hbc.appdir.join("Caffeine.app")).not_to be_a_symlink
@@ -45,20 +51,4 @@ describe Hbc::CLI::Zap, :cask do
#
# 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(/invalid option/)
- end
- end
end
diff --git a/Library/Homebrew/test/cask/depends_on_spec.rb b/Library/Homebrew/test/cask/depends_on_spec.rb
index fb92a9a24..2818ff8b0 100644
--- a/Library/Homebrew/test/cask/depends_on_spec.rb
+++ b/Library/Homebrew/test/cask/depends_on_spec.rb
@@ -10,7 +10,10 @@ describe "Satisfy Dependencies and Requirements", :cask do
describe "depends_on cask" do
context "when depends_on cask is cyclic" do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-depends-on-cask-cyclic.rb") }
- it { is_expected.to raise_error(Hbc::CaskCyclicDependencyError) }
+ it {
+ is_expected.to raise_error(Hbc::CaskCyclicDependencyError,
+ "Cask 'with-depends-on-cask-cyclic' includes cyclic dependencies on other Casks: with-depends-on-cask-cyclic-helper")
+ }
end
context do