boxen 2.9.0 → 3.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- data/boxen.gemspec +12 -12
- data/lib/boxen/check.rb +8 -39
- data/lib/boxen/cli.rb +19 -45
- data/lib/boxen/command.rb +142 -0
- data/lib/boxen/command/help.rb +40 -0
- data/lib/boxen/command/preflight.rb +38 -0
- data/lib/boxen/command/project.rb +49 -0
- data/lib/boxen/command/project/install.rb +33 -0
- data/lib/boxen/command/run.rb +199 -0
- data/lib/boxen/command/service.rb +61 -0
- data/lib/boxen/command/service/disable.rb +15 -0
- data/lib/boxen/command/service/enable.rb +15 -0
- data/lib/boxen/command/service/restart.rb +24 -0
- data/lib/boxen/command/version.rb +29 -0
- data/lib/boxen/command_status.rb +15 -0
- data/lib/boxen/config.rb +43 -61
- data/lib/boxen/hook.rb +15 -8
- data/lib/boxen/keychain.rb +1 -1
- data/lib/boxen/postflight/env.rb +1 -1
- data/lib/boxen/postflight/github_issue.rb +124 -0
- data/lib/boxen/postflight/hooks.rb +16 -0
- data/lib/boxen/postflight/web_hook.rb +63 -0
- data/lib/boxen/preflight.rb +4 -7
- data/lib/boxen/preflight/creds.rb +8 -47
- data/lib/boxen/preflight/facts.rb +36 -0
- data/lib/boxen/preflight/homebrew.rb +13 -0
- data/lib/boxen/preflight/identity.rb +2 -0
- data/lib/boxen/preflight/offline.rb +33 -0
- data/lib/boxen/preflight/os.rb +1 -1
- data/lib/boxen/preflight/update.rb +109 -0
- data/lib/boxen/util/logging.rb +59 -0
- data/lib/boxen/version.rb +3 -0
- data/script/bootstrap +1 -1
- data/script/tests +1 -0
- data/test/boxen/test.rb +1 -1
- data/test/boxen_cli_test.rb +8 -31
- data/test/boxen_command_test.rb +93 -0
- data/test/boxen_config_test.rb +1 -31
- data/test/boxen_directories_test.rb +4 -4
- data/test/boxen_hook_test.rb +25 -0
- data/test/command/help_test.rb +49 -0
- data/test/command/project/install_test.rb +34 -0
- data/test/command/project_test.rb +32 -0
- data/test/command/run_test.rb +21 -0
- data/test/command/service/disable_test.rb +49 -0
- data/test/command/service/enable_test.rb +49 -0
- data/test/command/service/restart_test.rb +53 -0
- data/test/command/service_test.rb +55 -0
- data/test/command/version_test.rb +15 -0
- data/test/{boxen_postflight_active_test.rb → postflight/boxen_postflight_active_test.rb} +3 -3
- data/test/{boxen_postflight_env_test.rb → postflight/boxen_postflight_env_test.rb} +0 -0
- data/test/{boxen_hook_github_issue_test.rb → postflight/boxen_postflight_github_issue_test.rb} +72 -82
- data/test/{boxen_hook_web_test.rb → postflight/boxen_postflight_web_hook_test.rb} +12 -11
- data/test/preflight/boxen_preflight_creds_test.rb +82 -0
- data/test/{boxen_preflight_etc_my_cnf_test.rb → preflight/boxen_preflight_etc_my_cnf_test.rb} +1 -1
- data/test/preflight/boxen_preflight_homebrew_test.rb +10 -0
- data/test/{boxen_preflight_rvm_test.rb → preflight/boxen_preflight_rvm_test.rb} +1 -1
- metadata +247 -171
- checksums.yaml +0 -7
- data/lib/boxen/flags.rb +0 -282
- data/lib/boxen/hook/github_issue.rb +0 -120
- data/lib/boxen/hook/web.rb +0 -56
- data/lib/boxen/puppeteer.rb +0 -121
- data/lib/boxen/runner.rb +0 -149
- data/test/boxen_check_test.rb +0 -55
- data/test/boxen_flags_test.rb +0 -217
- data/test/boxen_preflight_creds_test.rb +0 -177
- data/test/boxen_puppeteer_test.rb +0 -101
- data/test/boxen_runner_test.rb +0 -171
data/lib/boxen/puppeteer.rb
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
require "fileutils"
|
2
|
-
require "boxen/util"
|
3
|
-
|
4
|
-
module Boxen
|
5
|
-
|
6
|
-
# Manages an invocation of puppet.
|
7
|
-
|
8
|
-
class Puppeteer
|
9
|
-
|
10
|
-
class Status < Struct.new(:code)
|
11
|
-
# Puppet's detailed exit codes reserves 2 for a successful run with changes
|
12
|
-
def success?
|
13
|
-
[0,2].include?(code)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
attr_reader :config
|
18
|
-
|
19
|
-
def initialize(config)
|
20
|
-
@config = config
|
21
|
-
end
|
22
|
-
|
23
|
-
def command
|
24
|
-
manifestdir = "#{config.repodir}/manifests"
|
25
|
-
puppet = "#{config.repodir}/bin/puppet"
|
26
|
-
|
27
|
-
[puppet, "apply", flags, manifestdir].flatten
|
28
|
-
end
|
29
|
-
|
30
|
-
def hiera_config
|
31
|
-
if File.exist? "#{config.repodir}/config/hiera.yaml"
|
32
|
-
"#{config.repodir}/config/hiera.yaml"
|
33
|
-
else
|
34
|
-
"/dev/null"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def flags
|
39
|
-
flags = []
|
40
|
-
root = File.expand_path "../../..", __FILE__
|
41
|
-
|
42
|
-
flags << ["--group", "admin"]
|
43
|
-
flags << ["--confdir", "#{config.puppetdir}/conf"]
|
44
|
-
flags << ["--vardir", "#{config.puppetdir}/var"]
|
45
|
-
flags << ["--libdir", "#{config.repodir}/lib"]#:#{root}/lib"]
|
46
|
-
flags << ["--libdir", "#{root}/lib"]
|
47
|
-
flags << ["--modulepath", "#{config.repodir}/modules:#{config.repodir}/shared"]
|
48
|
-
|
49
|
-
# Don't ever complain about Hiera to me
|
50
|
-
flags << ["--hiera_config", hiera_config]
|
51
|
-
|
52
|
-
# Log to both the console and a file.
|
53
|
-
|
54
|
-
flags << ["--logdest", config.logfile]
|
55
|
-
flags << ["--logdest", "console"]
|
56
|
-
|
57
|
-
# For some reason Puppet tries to set up a bunch of rrd stuff
|
58
|
-
# (user, group) unless reports are completely disabled.
|
59
|
-
|
60
|
-
flags << "--no-report" unless config.report?
|
61
|
-
flags << "--detailed-exitcodes"
|
62
|
-
|
63
|
-
flags << "--graph" if config.graph?
|
64
|
-
|
65
|
-
flags << "--show_diff"
|
66
|
-
|
67
|
-
if config.profile?
|
68
|
-
flags << "--evaltrace"
|
69
|
-
flags << "--summarize"
|
70
|
-
end
|
71
|
-
|
72
|
-
if config.future_parser?
|
73
|
-
flags << "--parser=future"
|
74
|
-
end
|
75
|
-
|
76
|
-
flags << "--debug" if config.debug?
|
77
|
-
flags << "--noop" if config.pretend?
|
78
|
-
|
79
|
-
flags << "--color=false" unless config.color?
|
80
|
-
|
81
|
-
flags.flatten
|
82
|
-
end
|
83
|
-
|
84
|
-
def run
|
85
|
-
FileUtils.mkdir_p config.puppetdir
|
86
|
-
|
87
|
-
FileUtils.rm_f config.logfile
|
88
|
-
|
89
|
-
FileUtils.rm_rf "#{config.puppetdir}/var/reports" if config.report?
|
90
|
-
|
91
|
-
FileUtils.rm_rf "#{config.puppetdir}/var/state/graphs" if config.graph?
|
92
|
-
|
93
|
-
FileUtils.mkdir_p File.dirname config.logfile
|
94
|
-
FileUtils.touch config.logfile
|
95
|
-
|
96
|
-
if File.file? "Puppetfile"
|
97
|
-
librarian = "#{config.repodir}/bin/librarian-puppet"
|
98
|
-
|
99
|
-
unless config.enterprise?
|
100
|
-
# Set an environment variable for librarian-puppet's
|
101
|
-
# github_tarball source strategy.
|
102
|
-
ENV["GITHUB_API_TOKEN"] = config.token
|
103
|
-
end
|
104
|
-
|
105
|
-
librarian_command = [librarian, "install", "--path=#{config.repodir}/shared"]
|
106
|
-
librarian_command << "--verbose" if config.debug?
|
107
|
-
|
108
|
-
warn librarian_command.join(" ") if config.debug?
|
109
|
-
unless system *librarian_command
|
110
|
-
abort "Can't run Puppet, fetching dependencies with librarian failed."
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
warn command.join(" ") if config.debug?
|
115
|
-
|
116
|
-
Boxen::Util.sudo *command
|
117
|
-
|
118
|
-
Status.new($?.exitstatus)
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
data/lib/boxen/runner.rb
DELETED
@@ -1,149 +0,0 @@
|
|
1
|
-
require "boxen/checkout"
|
2
|
-
require "boxen/config"
|
3
|
-
require "boxen/hook"
|
4
|
-
require "boxen/flags"
|
5
|
-
require "boxen/puppeteer"
|
6
|
-
require "boxen/service"
|
7
|
-
require "boxen/util"
|
8
|
-
require "facter"
|
9
|
-
|
10
|
-
module Boxen
|
11
|
-
class Runner
|
12
|
-
attr_reader :config
|
13
|
-
attr_reader :flags
|
14
|
-
attr_reader :puppet
|
15
|
-
attr_reader :checkout
|
16
|
-
attr_reader :hooks
|
17
|
-
|
18
|
-
def initialize(config, flags)
|
19
|
-
@config = config
|
20
|
-
@flags = flags
|
21
|
-
@puppet = Boxen::Puppeteer.new(@config)
|
22
|
-
@checkout = Boxen::Checkout.new(@config)
|
23
|
-
@hooks = Boxen::Hook.all
|
24
|
-
end
|
25
|
-
|
26
|
-
def process
|
27
|
-
# --env prints out the current BOXEN_ env vars.
|
28
|
-
|
29
|
-
exec "env | grep ^BOXEN_ | sort" if flags.env?
|
30
|
-
|
31
|
-
process_flags
|
32
|
-
|
33
|
-
process_args
|
34
|
-
|
35
|
-
# Actually run Puppet and return its result
|
36
|
-
|
37
|
-
puppet.run
|
38
|
-
end
|
39
|
-
|
40
|
-
def run
|
41
|
-
report(process)
|
42
|
-
end
|
43
|
-
|
44
|
-
def report(result)
|
45
|
-
hooks.each { |hook| hook.new(config, checkout, puppet, result).run }
|
46
|
-
|
47
|
-
result
|
48
|
-
end
|
49
|
-
|
50
|
-
def process_flags
|
51
|
-
|
52
|
-
# --projects prints a list of available projects and exits.
|
53
|
-
|
54
|
-
if flags.projects?
|
55
|
-
puts "You can install any of these projects with `#{$0} <project-name>`:\n"
|
56
|
-
|
57
|
-
config.projects.each do |project|
|
58
|
-
puts " #{project.name}"
|
59
|
-
end
|
60
|
-
|
61
|
-
exit
|
62
|
-
end
|
63
|
-
|
64
|
-
# --disable-services stops all services
|
65
|
-
|
66
|
-
if flags.disable_services?
|
67
|
-
Boxen::Service.list.each do |service|
|
68
|
-
puts "Disabling #{service}..."
|
69
|
-
service.disable
|
70
|
-
end
|
71
|
-
|
72
|
-
exit
|
73
|
-
end
|
74
|
-
|
75
|
-
# --enable-services starts all services
|
76
|
-
|
77
|
-
if flags.enable_services?
|
78
|
-
Boxen::Service.list.each do |service|
|
79
|
-
puts "Enabling #{service}..."
|
80
|
-
service.enable
|
81
|
-
end
|
82
|
-
|
83
|
-
exit
|
84
|
-
end
|
85
|
-
|
86
|
-
# --disable-service [name] stops a service
|
87
|
-
|
88
|
-
if flags.disable_service?
|
89
|
-
service = Boxen::Service.new(flags.disable_service)
|
90
|
-
puts "Disabling #{service}..."
|
91
|
-
service.disable
|
92
|
-
|
93
|
-
exit
|
94
|
-
end
|
95
|
-
|
96
|
-
# --enable-service [name] starts a service
|
97
|
-
|
98
|
-
if flags.enable_service?
|
99
|
-
service = Boxen::Service.new(flags.enable_service)
|
100
|
-
puts "Enabling #{service}..."
|
101
|
-
service.enable
|
102
|
-
|
103
|
-
exit
|
104
|
-
end
|
105
|
-
|
106
|
-
# --restart-service [name] starts a service
|
107
|
-
|
108
|
-
if flags.restart_service?
|
109
|
-
service = Boxen::Service.new(flags.restart_service)
|
110
|
-
puts "Restarting #{service}..."
|
111
|
-
service.disable
|
112
|
-
service.enable
|
113
|
-
|
114
|
-
exit
|
115
|
-
end
|
116
|
-
|
117
|
-
# --list-services lists all services
|
118
|
-
|
119
|
-
if flags.list_services?
|
120
|
-
Boxen::Service.list.each do |service|
|
121
|
-
puts service
|
122
|
-
end
|
123
|
-
|
124
|
-
exit
|
125
|
-
end
|
126
|
-
|
127
|
-
# --restart-services restarts all services
|
128
|
-
|
129
|
-
if flags.restart_services?
|
130
|
-
Boxen::Service.list_enabled.each do |service|
|
131
|
-
puts "Restarting #{service}..."
|
132
|
-
service.disable
|
133
|
-
service.enable
|
134
|
-
end
|
135
|
-
|
136
|
-
exit
|
137
|
-
end
|
138
|
-
|
139
|
-
end
|
140
|
-
|
141
|
-
def process_args
|
142
|
-
projects = flags.args.join(',')
|
143
|
-
File.open("#{config.repodir}/.projects", "w+") do |f|
|
144
|
-
f.truncate 0
|
145
|
-
f.write projects
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
data/test/boxen_check_test.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
require "boxen/test"
|
2
|
-
require "boxen/check"
|
3
|
-
|
4
|
-
class BoxenCheckTest < Boxen::Test
|
5
|
-
def test_initialize
|
6
|
-
check = Boxen::Check.new :config
|
7
|
-
assert_equal :config, check.config
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_ok?
|
11
|
-
ex = assert_raises RuntimeError do
|
12
|
-
Boxen::Check.new(:config).ok?
|
13
|
-
end
|
14
|
-
|
15
|
-
assert_match "must implement", ex.message
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_run
|
19
|
-
ex = assert_raises RuntimeError do
|
20
|
-
Boxen::Check.new(:config).run
|
21
|
-
end
|
22
|
-
|
23
|
-
assert_match "must implement", ex.message
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_self_checks
|
27
|
-
subclass = Class.new Boxen::Check
|
28
|
-
Boxen::Check.const_set :TestCheck, subclass
|
29
|
-
|
30
|
-
assert Boxen::Check.checks(:config).any? { |c| subclass === c },
|
31
|
-
"an instance of TestCheck exists in checks"
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_self_checks_subclasses
|
35
|
-
klass = Struct.new :config
|
36
|
-
Boxen::Check.const_set :TestBadCheck, klass
|
37
|
-
|
38
|
-
refute Boxen::Check.checks(:config).any? { |c| klass === c },
|
39
|
-
"checks are subclasses of Boxen::Check"
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_self_run
|
43
|
-
willrun = mock do
|
44
|
-
expects(:ok?).returns false
|
45
|
-
expects(:run)
|
46
|
-
end
|
47
|
-
|
48
|
-
wontrun = mock do
|
49
|
-
expects(:ok?).returns true
|
50
|
-
end
|
51
|
-
|
52
|
-
Boxen::Check.expects(:checks).with(:config).returns [willrun, wontrun]
|
53
|
-
Boxen::Check.run :config
|
54
|
-
end
|
55
|
-
end
|
data/test/boxen_flags_test.rb
DELETED
@@ -1,217 +0,0 @@
|
|
1
|
-
require "boxen/test"
|
2
|
-
require "boxen/flags"
|
3
|
-
|
4
|
-
class BoxenFlagsTest < Boxen::Test
|
5
|
-
def test_apply
|
6
|
-
config = mock do
|
7
|
-
expects(:debug=).with true
|
8
|
-
|
9
|
-
stubs(:fde?).returns true
|
10
|
-
expects(:fde=).with false
|
11
|
-
|
12
|
-
expects(:homedir=).with "homedir"
|
13
|
-
expects(:logfile=).with "logfile"
|
14
|
-
expects(:login=).with "login"
|
15
|
-
expects(:token=).with "token"
|
16
|
-
expects(:pretend=).with true
|
17
|
-
expects(:profile=).with true
|
18
|
-
expects(:future_parser=).with true
|
19
|
-
expects(:report=).with true
|
20
|
-
expects(:graph=).with true
|
21
|
-
expects(:srcdir=).with "srcdir"
|
22
|
-
expects(:stealth=).with true
|
23
|
-
expects(:user=).with "user"
|
24
|
-
expects(:color=).with true
|
25
|
-
end
|
26
|
-
|
27
|
-
# Do our best to frob every switch.
|
28
|
-
|
29
|
-
flags = Boxen::Flags.new "--debug", "--help", "--login", "login",
|
30
|
-
"--no-fde", "--no-pull", "--no-issue", "--noop",
|
31
|
-
"--pretend", "--profile", "--future-parser", "--report", "--graph", "--projects",
|
32
|
-
"--user", "user", "--homedir", "homedir", "--srcdir", "srcdir",
|
33
|
-
"--logfile", "logfile", "--token", "token"
|
34
|
-
|
35
|
-
assert_same config, flags.apply(config)
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_args
|
39
|
-
config = flags "--debug", "foo"
|
40
|
-
assert_equal %w(foo), config.args
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_debug
|
44
|
-
refute flags.debug?
|
45
|
-
assert flags("--debug").debug?
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_env?
|
49
|
-
refute flags.env?
|
50
|
-
assert flags("--env").env?
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_help
|
54
|
-
refute flags.help?
|
55
|
-
|
56
|
-
%w(--help -h -?).each do |flag|
|
57
|
-
assert flags(flag).help?
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_disable_services?
|
62
|
-
refute flags.disable_services?
|
63
|
-
assert flags("--disable-services").disable_services?
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_enable_services?
|
67
|
-
refute flags.enable_services?
|
68
|
-
assert flags("--enable-services").enable_services?
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_list_services?
|
72
|
-
refute flags.list_services?
|
73
|
-
assert flags("--list-services").list_services?
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_homedir
|
77
|
-
assert_nil flags.homedir
|
78
|
-
assert_equal "foo", flags("--homedir", "foo").homedir
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_initialize_bad_option
|
82
|
-
ex = assert_raises Boxen::Error do
|
83
|
-
flags "--bad-option"
|
84
|
-
end
|
85
|
-
|
86
|
-
assert_match "invalid option", ex.message
|
87
|
-
assert_match "--bad-option", ex.message
|
88
|
-
end
|
89
|
-
|
90
|
-
def test_initialize_dups
|
91
|
-
args = %w(foo)
|
92
|
-
config = flags args
|
93
|
-
|
94
|
-
assert_equal args, config.args
|
95
|
-
refute_same args, config.args
|
96
|
-
end
|
97
|
-
|
98
|
-
def test_initialize_empty
|
99
|
-
config = flags
|
100
|
-
assert_equal [], config.args
|
101
|
-
end
|
102
|
-
|
103
|
-
def test_initialize_flattens
|
104
|
-
config = flags "foo", ["bar"]
|
105
|
-
assert_equal %w(foo bar), config.args
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_initialize_nils
|
109
|
-
config = flags "foo", nil, "bar"
|
110
|
-
assert_equal %w(foo bar), config.args
|
111
|
-
end
|
112
|
-
|
113
|
-
def test_initialize_strings
|
114
|
-
config = flags :foo, [:bar]
|
115
|
-
assert_equal %w(foo bar), config.args
|
116
|
-
end
|
117
|
-
|
118
|
-
def test_logfile
|
119
|
-
assert_nil flags.logfile
|
120
|
-
assert_equal "foo", flags("--logfile", "foo").logfile
|
121
|
-
end
|
122
|
-
|
123
|
-
def test_login
|
124
|
-
assert_nil flags.login
|
125
|
-
assert_equal "jbarnette", flags("--login", "jbarnette").login
|
126
|
-
end
|
127
|
-
|
128
|
-
def test_no_fde
|
129
|
-
assert flags.fde?
|
130
|
-
refute flags("--no-fde").fde?
|
131
|
-
end
|
132
|
-
|
133
|
-
def test_no_pull_is_a_noop
|
134
|
-
flags "--no-pull"
|
135
|
-
end
|
136
|
-
|
137
|
-
def test_parse
|
138
|
-
config = flags
|
139
|
-
config.parse "--debug", "foo"
|
140
|
-
|
141
|
-
assert config.debug?
|
142
|
-
assert_equal %w(foo), config.args
|
143
|
-
end
|
144
|
-
|
145
|
-
def test_token
|
146
|
-
assert_nil flags.token
|
147
|
-
assert_equal "foo", flags("--token", "foo").token
|
148
|
-
end
|
149
|
-
|
150
|
-
def test_token_missing_value
|
151
|
-
ex = assert_raises Boxen::Error do
|
152
|
-
flags "--token"
|
153
|
-
end
|
154
|
-
|
155
|
-
assert_match "missing argument", ex.message
|
156
|
-
end
|
157
|
-
|
158
|
-
def test_pretend
|
159
|
-
refute flags.pretend?
|
160
|
-
assert flags("--noop").pretend?
|
161
|
-
assert flags("--pretend").pretend?
|
162
|
-
end
|
163
|
-
|
164
|
-
def test_profile
|
165
|
-
refute flags.profile?
|
166
|
-
assert flags("--profile").profile?
|
167
|
-
end
|
168
|
-
|
169
|
-
def test_future_parser
|
170
|
-
refute flags.future_parser?
|
171
|
-
assert flags("--future-parser").future_parser?
|
172
|
-
end
|
173
|
-
|
174
|
-
def test_report
|
175
|
-
refute flags.report?
|
176
|
-
assert flags("--report").report?
|
177
|
-
end
|
178
|
-
|
179
|
-
def test_graph
|
180
|
-
refute flags.graph?
|
181
|
-
assert flags("--graph").graph?
|
182
|
-
end
|
183
|
-
|
184
|
-
def test_projects
|
185
|
-
refute flags.projects?
|
186
|
-
assert flags("--projects").projects?
|
187
|
-
end
|
188
|
-
|
189
|
-
def test_srcdir
|
190
|
-
assert_nil flags.srcdir
|
191
|
-
assert_equal "foo", flags("--srcdir", "foo").srcdir
|
192
|
-
end
|
193
|
-
|
194
|
-
def test_stealth
|
195
|
-
refute flags.stealth?
|
196
|
-
assert flags("--no-issue").stealth?
|
197
|
-
assert flags("--stealth").stealth?
|
198
|
-
end
|
199
|
-
|
200
|
-
def test_user
|
201
|
-
assert_equal "jbarnette", flags("--user", "jbarnette").user
|
202
|
-
end
|
203
|
-
|
204
|
-
def test_user_missing_value
|
205
|
-
ex = assert_raises Boxen::Error do
|
206
|
-
flags "--user"
|
207
|
-
end
|
208
|
-
|
209
|
-
assert_match "missing argument", ex.message
|
210
|
-
end
|
211
|
-
|
212
|
-
# Create an instance of Boxen::Flags with optional `args`.
|
213
|
-
|
214
|
-
def flags(*args)
|
215
|
-
Boxen::Flags.new *args
|
216
|
-
end
|
217
|
-
end
|