aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cask/spec
diff options
context:
space:
mode:
authorMarkus Reiter2017-02-08 13:25:10 +0100
committerMarkus Reiter2017-02-10 17:19:19 +0100
commit7b2d8ed4b3a1a71da59b1aa1859e844c37ba24c2 (patch)
tree3163a050980a2906cb9d20bcb219be797236ea5e /Library/Homebrew/cask/spec
parentbcaa13b7507afaf7f957a2d815884a8263461d31 (diff)
downloadbrew-7b2d8ed4b3a1a71da59b1aa1859e844c37ba24c2.tar.bz2
Convert Options test to spec.
Diffstat (limited to 'Library/Homebrew/cask/spec')
-rw-r--r--Library/Homebrew/cask/spec/cask/cli/options_spec.rb140
-rw-r--r--Library/Homebrew/cask/spec/spec_helper.rb32
2 files changed, 167 insertions, 5 deletions
diff --git a/Library/Homebrew/cask/spec/cask/cli/options_spec.rb b/Library/Homebrew/cask/spec/cask/cli/options_spec.rb
new file mode 100644
index 000000000..a4381213a
--- /dev/null
+++ b/Library/Homebrew/cask/spec/cask/cli/options_spec.rb
@@ -0,0 +1,140 @@
+require "spec_helper"
+
+describe Hbc::CLI do
+ it "supports setting the appdir" do
+ Hbc::CLI.process_options %w[help --appdir=/some/path/foo]
+
+ expect(Hbc.appdir).to eq(Pathname.new("/some/path/foo"))
+ end
+
+ it "supports setting the appdir from ENV" do
+ ENV["HOMEBREW_CASK_OPTS"] = "--appdir=/some/path/bar"
+
+ Hbc::CLI.process_options %w[help]
+
+ expect(Hbc.appdir).to eq(Pathname.new("/some/path/bar"))
+ end
+
+ it "supports setting the prefpanedir" do
+ Hbc::CLI.process_options %w[help --prefpanedir=/some/path/foo]
+
+ expect(Hbc.prefpanedir).to eq(Pathname.new("/some/path/foo"))
+ end
+
+ it "supports setting the prefpanedir from ENV" do
+ ENV["HOMEBREW_CASK_OPTS"] = "--prefpanedir=/some/path/bar"
+
+ Hbc::CLI.process_options %w[help]
+
+ expect(Hbc.prefpanedir).to eq(Pathname.new("/some/path/bar"))
+ end
+
+ it "supports setting the qlplugindir" do
+ Hbc::CLI.process_options %w[help --qlplugindir=/some/path/foo]
+
+ expect(Hbc.qlplugindir).to eq(Pathname.new("/some/path/foo"))
+ end
+
+ it "supports setting the qlplugindir from ENV" do
+ ENV["HOMEBREW_CASK_OPTS"] = "--qlplugindir=/some/path/bar"
+
+ Hbc::CLI.process_options %w[help]
+
+ expect(Hbc.qlplugindir).to eq(Pathname.new("/some/path/bar"))
+ end
+
+ it "supports setting the colorpickerdir" do
+ Hbc::CLI.process_options %w[help --colorpickerdir=/some/path/foo]
+
+ expect(Hbc.colorpickerdir).to eq(Pathname.new("/some/path/foo"))
+ end
+
+ it "supports setting the colorpickerdir from ENV" do
+ ENV["HOMEBREW_CASK_OPTS"] = "--colorpickerdir=/some/path/bar"
+
+ Hbc::CLI.process_options %w[help]
+
+ expect(Hbc.colorpickerdir).to eq(Pathname.new("/some/path/bar"))
+ end
+
+ it "supports setting the dictionarydir" do
+ Hbc::CLI.process_options %w[help --dictionarydir=/some/path/foo]
+
+ expect(Hbc.dictionarydir).to eq(Pathname.new("/some/path/foo"))
+ end
+
+ it "supports setting the dictionarydir from ENV" do
+ ENV["HOMEBREW_CASK_OPTS"] = "--dictionarydir=/some/path/bar"
+
+ Hbc::CLI.process_options %w[help]
+
+ expect(Hbc.dictionarydir).to eq(Pathname.new("/some/path/bar"))
+ end
+
+ it "supports setting the fontdir" do
+ Hbc::CLI.process_options %w[help --fontdir=/some/path/foo]
+
+ expect(Hbc.fontdir).to eq(Pathname.new("/some/path/foo"))
+ end
+
+ it "supports setting the fontdir from ENV" do
+ ENV["HOMEBREW_CASK_OPTS"] = "--fontdir=/some/path/bar"
+
+ Hbc::CLI.process_options %w[help]
+
+ expect(Hbc.fontdir).to eq(Pathname.new("/some/path/bar"))
+ end
+
+ it "supports setting the servicedir" do
+ Hbc::CLI.process_options %w[help --servicedir=/some/path/foo]
+
+ expect(Hbc.servicedir).to eq(Pathname.new("/some/path/foo"))
+ end
+
+ it "supports setting the servicedir from ENV" do
+ ENV["HOMEBREW_CASK_OPTS"] = "--servicedir=/some/path/bar"
+
+ Hbc::CLI.process_options %w[help]
+
+ expect(Hbc.servicedir).to eq(Pathname.new("/some/path/bar"))
+ end
+
+ it "allows additional options to be passed through" do
+ rest = Hbc::CLI.process_options %w[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])
+ end
+
+ describe "when a mandatory argument is missing" do
+ it "shows a user-friendly error message" do
+ expect {
+ Hbc::CLI.process_options %w[install -f]
+ }.to raise_error(Hbc::CaskError)
+ end
+ end
+
+ describe "given an ambiguous option" do
+ it "shows a user-friendly error message" do
+ expect {
+ Hbc::CLI.process_options %w[edit -c]
+ }.to raise_error(Hbc::CaskError)
+ end
+ end
+
+ describe "--debug" do
+ it "sets the Cask debug method to true" do
+ Hbc::CLI.process_options %w[help --debug]
+ expect(Hbc.debug).to be true
+ Hbc.debug = false
+ end
+ end
+
+ describe "--help" do
+ it "sets the Cask help method to true" do
+ Hbc::CLI.process_options %w[foo --help]
+ expect(Hbc.help).to be true
+ Hbc.help = false
+ end
+ end
+end
diff --git a/Library/Homebrew/cask/spec/spec_helper.rb b/Library/Homebrew/cask/spec/spec_helper.rb
index 059d13a3a..13ed746b5 100644
--- a/Library/Homebrew/cask/spec/spec_helper.rb
+++ b/Library/Homebrew/cask/spec/spec_helper.rb
@@ -37,11 +37,33 @@ FileUtils.ln_s Pathname.new(ENV["HOMEBREW_LIBRARY"]).join("Taps", "caskroom", "h
RSpec.configure do |config|
config.order = :random
config.include(Test::Helper::Shutup)
- config.after(:each) do
- FileUtils.rm_rf [
- Hbc.appdir.children,
- Hbc.caskroom.children,
- ]
+ config.around(:each) do |example|
+ begin
+ @__appdir = Hbc.appdir
+ @__caskroom = Hbc.caskroom
+ @__prefpanedir = Hbc.prefpanedir
+ @__qlplugindir = Hbc.qlplugindir
+ @__servicedir = Hbc.servicedir
+
+ @__argv = ARGV.dup
+ @__env = ENV.to_hash # dup doesn't work on ENV
+
+ example.run
+ ensure
+ ARGV.replace(@__argv)
+ ENV.replace(@__env)
+
+ Hbc.appdir = @__appdir
+ Hbc.caskroom = @__caskroom
+ Hbc.prefpanedir = @__prefpanedir
+ Hbc.qlplugindir = @__qlplugindir
+ Hbc.servicedir = @__servicedir
+
+ FileUtils.rm_rf [
+ Hbc.appdir.children,
+ Hbc.caskroom.children,
+ ]
+ end
end
end