mirror of
https://github.com/zhigang1992/boxen.git
synced 2026-01-12 17:12:46 +08:00
199 lines
4.2 KiB
Ruby
199 lines
4.2 KiB
Ruby
require "boxen/test"
|
|
require "boxen/flags"
|
|
|
|
class BoxenFlagsTest < Boxen::Test
|
|
def test_apply
|
|
config = mock do
|
|
expects(:debug=).with true
|
|
|
|
stubs(:fde?).returns true
|
|
expects(:fde=).with false
|
|
|
|
expects(:homedir=).with "homedir"
|
|
expects(:logfile=).with "logfile"
|
|
expects(:login=).with "login"
|
|
expects(:password=).with "password"
|
|
expects(:pretend=).with true
|
|
expects(:profile=).with true
|
|
expects(:srcdir=).with "srcdir"
|
|
expects(:stealth=).with true
|
|
expects(:user=).with "user"
|
|
expects(:color=).with true
|
|
end
|
|
|
|
# Do our best to frob every switch.
|
|
|
|
flags = Boxen::Flags.new "--debug", "--help", "--login", "login",
|
|
"--no-fde", "--no-pull", "--no-issue", "--noop", "--password", "password",
|
|
"--pretend", "--profile", "--projects", "--user", "user", "--homedir",
|
|
"homedir", "--srcdir", "srcdir", "--logfile", "logfile"
|
|
|
|
assert_same config, flags.apply(config)
|
|
end
|
|
|
|
def test_args
|
|
config = flags "--debug", "foo"
|
|
assert_equal %w(foo), config.args
|
|
end
|
|
|
|
def test_debug
|
|
refute flags.debug?
|
|
assert flags("--debug").debug?
|
|
end
|
|
|
|
def test_env?
|
|
refute flags.env?
|
|
assert flags("--env").env?
|
|
end
|
|
|
|
def test_help
|
|
refute flags.help?
|
|
|
|
%w(--help -h -?).each do |flag|
|
|
assert flags(flag).help?
|
|
end
|
|
end
|
|
|
|
def test_disable_services?
|
|
refute flags.disable_services?
|
|
assert flags("--disable-services").disable_services?
|
|
end
|
|
|
|
def test_enable_services?
|
|
refute flags.enable_services?
|
|
assert flags("--enable-services").enable_services?
|
|
end
|
|
|
|
def test_list_services?
|
|
refute flags.list_services?
|
|
assert flags("--list-services").list_services?
|
|
end
|
|
|
|
def test_homedir
|
|
assert_nil flags.homedir
|
|
assert_equal "foo", flags("--homedir", "foo").homedir
|
|
end
|
|
|
|
def test_initialize_bad_option
|
|
ex = assert_raises Boxen::Error do
|
|
flags "--bad-option"
|
|
end
|
|
|
|
assert_match "invalid option", ex.message
|
|
assert_match "--bad-option", ex.message
|
|
end
|
|
|
|
def test_initialize_dups
|
|
args = %w(foo)
|
|
config = flags args
|
|
|
|
assert_equal args, config.args
|
|
refute_same args, config.args
|
|
end
|
|
|
|
def test_initialize_empty
|
|
config = flags
|
|
assert_equal [], config.args
|
|
end
|
|
|
|
def test_initialize_flattens
|
|
config = flags "foo", ["bar"]
|
|
assert_equal %w(foo bar), config.args
|
|
end
|
|
|
|
def test_initialize_nils
|
|
config = flags "foo", nil, "bar"
|
|
assert_equal %w(foo bar), config.args
|
|
end
|
|
|
|
def test_initialize_strings
|
|
config = flags :foo, [:bar]
|
|
assert_equal %w(foo bar), config.args
|
|
end
|
|
|
|
def test_logfile
|
|
assert_nil flags.logfile
|
|
assert_equal "foo", flags("--logfile", "foo").logfile
|
|
end
|
|
|
|
def test_login
|
|
assert_nil flags.login
|
|
assert_equal "jbarnette", flags("--login", "jbarnette").login
|
|
end
|
|
|
|
def test_no_fde
|
|
assert flags.fde?
|
|
refute flags("--no-fde").fde?
|
|
end
|
|
|
|
def test_no_pull_is_a_noop
|
|
flags "--no-pull"
|
|
end
|
|
|
|
def test_parse
|
|
config = flags
|
|
config.parse "--debug", "foo"
|
|
|
|
assert config.debug?
|
|
assert_equal %w(foo), config.args
|
|
end
|
|
|
|
def test_password
|
|
assert_nil flags.password
|
|
assert_equal "foo", flags("--password", "foo").password
|
|
end
|
|
|
|
def test_password_missing_value
|
|
ex = assert_raises Boxen::Error do
|
|
flags "--password"
|
|
end
|
|
|
|
assert_match "missing argument", ex.message
|
|
end
|
|
|
|
def test_pretend
|
|
refute flags.pretend?
|
|
assert flags("--noop").pretend?
|
|
assert flags("--pretend").pretend?
|
|
end
|
|
|
|
def test_profile
|
|
refute flags.profile?
|
|
assert flags("--profile").profile?
|
|
end
|
|
|
|
def test_projects
|
|
refute flags.projects?
|
|
assert flags("--projects").projects?
|
|
end
|
|
|
|
def test_srcdir
|
|
assert_nil flags.srcdir
|
|
assert_equal "foo", flags("--srcdir", "foo").srcdir
|
|
end
|
|
|
|
def test_stealth
|
|
refute flags.stealth?
|
|
assert flags("--no-issue").stealth?
|
|
assert flags("--stealth").stealth?
|
|
end
|
|
|
|
def test_user
|
|
assert_equal "jbarnette", flags("--user", "jbarnette").user
|
|
end
|
|
|
|
def test_user_missing_value
|
|
ex = assert_raises Boxen::Error do
|
|
flags "--user"
|
|
end
|
|
|
|
assert_match "missing argument", ex.message
|
|
end
|
|
|
|
# Create an instance of Boxen::Flags with optional `args`.
|
|
|
|
def flags(*args)
|
|
Boxen::Flags.new *args
|
|
end
|
|
end
|