Convert Options test to spec.

This commit is contained in:
Markus Reiter 2017-02-08 13:25:10 +01:00
parent bcaa13b750
commit 7b2d8ed4b3
2 changed files with 50 additions and 32 deletions

View File

@ -1,10 +1,10 @@
require "test_helper"
require "spec_helper"
describe Hbc::CLI do
it "supports setting the appdir" do
Hbc::CLI.process_options %w[help --appdir=/some/path/foo]
Hbc.appdir.must_equal Pathname("/some/path/foo")
expect(Hbc.appdir).to eq(Pathname.new("/some/path/foo"))
end
it "supports setting the appdir from ENV" do
@ -12,13 +12,13 @@ describe Hbc::CLI do
Hbc::CLI.process_options %w[help]
Hbc.appdir.must_equal Pathname("/some/path/bar")
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]
Hbc.prefpanedir.must_equal Pathname("/some/path/foo")
expect(Hbc.prefpanedir).to eq(Pathname.new("/some/path/foo"))
end
it "supports setting the prefpanedir from ENV" do
@ -26,13 +26,13 @@ describe Hbc::CLI do
Hbc::CLI.process_options %w[help]
Hbc.prefpanedir.must_equal Pathname("/some/path/bar")
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]
Hbc.qlplugindir.must_equal Pathname("/some/path/foo")
expect(Hbc.qlplugindir).to eq(Pathname.new("/some/path/foo"))
end
it "supports setting the qlplugindir from ENV" do
@ -40,13 +40,13 @@ describe Hbc::CLI do
Hbc::CLI.process_options %w[help]
Hbc.qlplugindir.must_equal Pathname("/some/path/bar")
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]
Hbc.colorpickerdir.must_equal Pathname("/some/path/foo")
expect(Hbc.colorpickerdir).to eq(Pathname.new("/some/path/foo"))
end
it "supports setting the colorpickerdir from ENV" do
@ -54,13 +54,13 @@ describe Hbc::CLI do
Hbc::CLI.process_options %w[help]
Hbc.colorpickerdir.must_equal Pathname("/some/path/bar")
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]
Hbc.dictionarydir.must_equal Pathname("/some/path/foo")
expect(Hbc.dictionarydir).to eq(Pathname.new("/some/path/foo"))
end
it "supports setting the dictionarydir from ENV" do
@ -68,13 +68,13 @@ describe Hbc::CLI do
Hbc::CLI.process_options %w[help]
Hbc.dictionarydir.must_equal Pathname("/some/path/bar")
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]
Hbc.fontdir.must_equal Pathname("/some/path/foo")
expect(Hbc.fontdir).to eq(Pathname.new("/some/path/foo"))
end
it "supports setting the fontdir from ENV" do
@ -82,13 +82,13 @@ describe Hbc::CLI do
Hbc::CLI.process_options %w[help]
Hbc.fontdir.must_equal Pathname("/some/path/bar")
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]
Hbc.servicedir.must_equal Pathname("/some/path/foo")
expect(Hbc.servicedir).to eq(Pathname.new("/some/path/foo"))
end
it "supports setting the servicedir from ENV" do
@ -96,36 +96,36 @@ describe Hbc::CLI do
Hbc::CLI.process_options %w[help]
Hbc.servicedir.must_equal Pathname("/some/path/bar")
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]
Hbc.appdir.must_equal Pathname("/some/path/qux")
rest.must_equal %w[edit foo --create]
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
lambda {
expect {
Hbc::CLI.process_options %w[install -f]
}.must_raise Hbc::CaskError
}.to raise_error(Hbc::CaskError)
end
end
describe "given an ambiguous option" do
it "shows a user-friendly error message" do
lambda {
expect {
Hbc::CLI.process_options %w[edit -c]
}.must_raise Hbc::CaskError
}.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]
Hbc.debug.must_equal true
expect(Hbc.debug).to be true
Hbc.debug = false
end
end
@ -133,12 +133,8 @@ describe Hbc::CLI do
describe "--help" do
it "sets the Cask help method to true" do
Hbc::CLI.process_options %w[foo --help]
Hbc.help.must_equal true
expect(Hbc.help).to be true
Hbc.help = false
end
end
after do
ENV["HOMEBREW_CASK_OPTS"] = nil
end
end

View File

@ -37,12 +37,34 @@ 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
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
module Hbc