boxen 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/boxen.gemspec +1 -1
- data/lib/boxen/cli.rb +9 -95
- data/lib/boxen/puppeteer.rb +9 -1
- data/lib/boxen/runner.rb +117 -0
- data/lib/boxen/service.rb +48 -0
- data/lib/facter/dot_boxen.rb +8 -0
- data/test/boxen_cli_test.rb +13 -157
- data/test/boxen_puppeteer_test.rb +11 -0
- data/test/boxen_runner_test.rb +149 -0
- data/test/boxen_service_test.rb +33 -0
- metadata +11 -4
data/boxen.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
4
|
gem.name = "boxen"
|
5
|
-
gem.version = "0.4.
|
5
|
+
gem.version = "0.4.2"
|
6
6
|
gem.authors = ["John Barnette", "Will Farrington"]
|
7
7
|
gem.email = ["jbarnette@github.com", "wfarr@github.com"]
|
8
8
|
gem.description = "Manage Mac development boxes with love (and Puppet)."
|
data/lib/boxen/cli.rb
CHANGED
@@ -1,103 +1,29 @@
|
|
1
|
-
require "boxen/checkout"
|
2
1
|
require "boxen/config"
|
3
2
|
require "boxen/flags"
|
4
3
|
require "boxen/postflight"
|
5
4
|
require "boxen/preflight"
|
6
|
-
require "boxen/
|
7
|
-
require "boxen/reporter"
|
5
|
+
require "boxen/runner"
|
8
6
|
require "boxen/util"
|
9
7
|
|
10
8
|
module Boxen
|
11
9
|
class CLI
|
12
10
|
attr_reader :config
|
13
11
|
attr_reader :flags
|
14
|
-
attr_reader :
|
15
|
-
attr_reader :checkout
|
16
|
-
attr_reader :reporter
|
12
|
+
attr_reader :runner
|
17
13
|
|
18
14
|
def initialize(config, flags)
|
19
15
|
@config = config
|
20
16
|
@flags = flags
|
21
|
-
@
|
22
|
-
@checkout = Boxen::Checkout.new(@config)
|
23
|
-
@reporter = Boxen::Reporter.new(@config, @checkout, @puppet)
|
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
|
-
# --help prints some CLI help and exits.
|
32
|
-
|
33
|
-
abort "#{flags}\n" if flags.help?
|
34
|
-
|
35
|
-
# --projects prints a list of available projects and exits.
|
36
|
-
|
37
|
-
if flags.projects?
|
38
|
-
config.projects.each do |project|
|
39
|
-
prefix = project.installed? ? "*" : " "
|
40
|
-
puts "#{prefix} #{project.name}"
|
41
|
-
end
|
42
|
-
|
43
|
-
exit
|
44
|
-
end
|
45
|
-
|
46
|
-
# --disable-services stops all services
|
47
|
-
|
48
|
-
if flags.disable_services?
|
49
|
-
Dir["/Library/LaunchDaemons/com.boxen.*.plist"]. each do |service|
|
50
|
-
service_human_name = service.match(/com\.boxen\.(.+)\.plist$/)[1]
|
51
|
-
puts "Disabling #{service_human_name}..."
|
52
|
-
Boxen::Util.sudo("/bin/launchctl", "unload", "-w", service)
|
53
|
-
end
|
54
|
-
|
55
|
-
exit
|
56
|
-
end
|
57
|
-
|
58
|
-
# --enable-services starts all services
|
59
|
-
|
60
|
-
if flags.enable_services?
|
61
|
-
Dir["/Library/LaunchDaemons/com.boxen.*.plist"]. each do |service|
|
62
|
-
service_human_name = service.match(/com\.boxen\.(.+)\.plist$/)[1]
|
63
|
-
puts "Enabling #{service_human_name}..."
|
64
|
-
Boxen::Util.sudo("/bin/launchctl", "load", "-w", service)
|
65
|
-
end
|
66
|
-
|
67
|
-
exit
|
68
|
-
end
|
69
|
-
|
70
|
-
# --list-services lists all services
|
71
|
-
|
72
|
-
if flags.list_services?
|
73
|
-
Dir["/Library/LaunchDaemons/com.boxen.*.plist"]. each do |service|
|
74
|
-
service_human_name = service.match(/com\.boxen\.(.+)\.plist$/)[1]
|
75
|
-
puts service_human_name
|
76
|
-
end
|
77
|
-
|
78
|
-
exit
|
79
|
-
end
|
80
|
-
|
81
|
-
# Actually run Puppet and return its exit code.
|
82
|
-
|
83
|
-
puppet.run
|
17
|
+
@runner = Boxen::Runner.new(@config, @flags)
|
84
18
|
end
|
85
19
|
|
86
20
|
def run
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
def report(result)
|
91
|
-
return result unless issues?
|
92
|
-
|
93
|
-
if self.class.successful_exit_code? result
|
94
|
-
reporter.close_failures
|
95
|
-
else
|
96
|
-
warn "Sorry! Creating an issue on #{config.reponame}."
|
97
|
-
reporter.record_failure
|
21
|
+
if flags.help?
|
22
|
+
puts flags
|
23
|
+
exit
|
98
24
|
end
|
99
25
|
|
100
|
-
|
26
|
+
runner.run
|
101
27
|
end
|
102
28
|
|
103
29
|
# Run Boxen by wiring together the command-line flags, config,
|
@@ -132,23 +58,11 @@ module Boxen
|
|
132
58
|
|
133
59
|
# Run the postflight checks.
|
134
60
|
|
135
|
-
Boxen::Postflight.run config if
|
61
|
+
Boxen::Postflight.run config if status.success?
|
136
62
|
|
137
63
|
# Return Puppet's exit status.
|
138
64
|
|
139
|
-
return status
|
140
|
-
end
|
141
|
-
|
142
|
-
# Puppet's detailed exit codes reserves 2 for a successful run with changes
|
143
|
-
|
144
|
-
def self.successful_exit_code?(code)
|
145
|
-
[0, 2].member? code
|
146
|
-
end
|
147
|
-
|
148
|
-
# Should the result of this run have any effect on GitHub issues?
|
149
|
-
|
150
|
-
def issues?
|
151
|
-
!config.stealth? && !config.pretend? && checkout.master?
|
65
|
+
return status.code
|
152
66
|
end
|
153
67
|
end
|
154
68
|
end
|
data/lib/boxen/puppeteer.rb
CHANGED
@@ -6,6 +6,14 @@ module Boxen
|
|
6
6
|
# Manages an invocation of puppet.
|
7
7
|
|
8
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
|
+
|
9
17
|
attr_reader :config
|
10
18
|
|
11
19
|
def initialize(config)
|
@@ -77,7 +85,7 @@ module Boxen
|
|
77
85
|
warn command.join " " if config.debug?
|
78
86
|
Boxen::Util.sudo *command
|
79
87
|
|
80
|
-
$?.exitstatus
|
88
|
+
Status.new($?.exitstatus)
|
81
89
|
end
|
82
90
|
end
|
83
91
|
end
|
data/lib/boxen/runner.rb
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
require "boxen/checkout"
|
2
|
+
require "boxen/config"
|
3
|
+
require "boxen/flags"
|
4
|
+
require "boxen/puppeteer"
|
5
|
+
require "boxen/reporter"
|
6
|
+
require "boxen/util"
|
7
|
+
|
8
|
+
module Boxen
|
9
|
+
class Runner
|
10
|
+
attr_reader :config
|
11
|
+
attr_reader :flags
|
12
|
+
attr_reader :puppet
|
13
|
+
attr_reader :checkout
|
14
|
+
attr_reader :reporter
|
15
|
+
|
16
|
+
def initialize(config, flags)
|
17
|
+
@config = config
|
18
|
+
@flags = flags
|
19
|
+
@puppet = Boxen::Puppeteer.new(@config)
|
20
|
+
@checkout = Boxen::Checkout.new(@config)
|
21
|
+
@reporter = Boxen::Reporter.new(@config, @checkout, @puppet)
|
22
|
+
end
|
23
|
+
|
24
|
+
def process
|
25
|
+
# --env prints out the current BOXEN_ env vars.
|
26
|
+
|
27
|
+
exec "env | grep ^BOXEN_ | sort" if flags.env?
|
28
|
+
|
29
|
+
process_flags
|
30
|
+
|
31
|
+
# Actually run Puppet and return its result
|
32
|
+
|
33
|
+
puppet.run
|
34
|
+
end
|
35
|
+
|
36
|
+
def run
|
37
|
+
report(process)
|
38
|
+
end
|
39
|
+
|
40
|
+
def report(result)
|
41
|
+
return result unless issues?
|
42
|
+
|
43
|
+
if result.success?
|
44
|
+
reporter.close_failures
|
45
|
+
else
|
46
|
+
warn "Sorry! Creating an issue on #{config.reponame}."
|
47
|
+
reporter.record_failure
|
48
|
+
end
|
49
|
+
|
50
|
+
result
|
51
|
+
end
|
52
|
+
|
53
|
+
def process_flags
|
54
|
+
|
55
|
+
# --projects prints a list of available projects and exits.
|
56
|
+
|
57
|
+
if flags.projects?
|
58
|
+
config.projects.each do |project|
|
59
|
+
prefix = project.installed? ? "*" : " "
|
60
|
+
puts "#{prefix} #{project.name}"
|
61
|
+
end
|
62
|
+
|
63
|
+
exit
|
64
|
+
end
|
65
|
+
|
66
|
+
# --disable-services stops all services
|
67
|
+
|
68
|
+
if flags.disable_services?
|
69
|
+
Boxen::Service.list.each do |service|
|
70
|
+
puts "Disabling #{service}..."
|
71
|
+
service.disable
|
72
|
+
end
|
73
|
+
|
74
|
+
exit
|
75
|
+
end
|
76
|
+
|
77
|
+
# --enable-services starts all services
|
78
|
+
|
79
|
+
if flags.enable_services?
|
80
|
+
Boxen::Service.list.each do |service|
|
81
|
+
puts "Enabling #{service}..."
|
82
|
+
service.enable
|
83
|
+
end
|
84
|
+
|
85
|
+
exit
|
86
|
+
end
|
87
|
+
|
88
|
+
# --list-services lists all services
|
89
|
+
|
90
|
+
if flags.list_services?
|
91
|
+
Boxen::Service.list.each do |service|
|
92
|
+
puts service
|
93
|
+
end
|
94
|
+
|
95
|
+
exit
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
# Should the result of this run have any effect on GitHub issues?
|
101
|
+
|
102
|
+
def issues?
|
103
|
+
!config.stealth? && !config.pretend? && checkout.master?
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def services
|
110
|
+
Dir["/Library/LaunchDaemons/com.boxen.*.plist"]
|
111
|
+
end
|
112
|
+
|
113
|
+
def service_human_name(service)
|
114
|
+
service.match(/com\.boxen\.(.+)\.plist$/)[1]
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require "boxen/util"
|
2
|
+
|
3
|
+
module Boxen
|
4
|
+
class Service
|
5
|
+
attr_reader :name
|
6
|
+
|
7
|
+
def self.list
|
8
|
+
files.collect do |service|
|
9
|
+
new(human_name(service))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(name)
|
14
|
+
@name = name
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_s
|
18
|
+
name
|
19
|
+
end
|
20
|
+
|
21
|
+
def enable
|
22
|
+
Boxen::Util.sudo('/bin/launchctl', 'load', '-w', location)
|
23
|
+
end
|
24
|
+
|
25
|
+
def disable
|
26
|
+
Boxen::Util.sudo('/bin/launchctl', 'unload', '-w', location)
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def location
|
33
|
+
"#{self.class.location}/com.boxen.#{name}.plist"
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.location
|
37
|
+
"/Library/LaunchDaemons"
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.files
|
41
|
+
Dir["#{location}/com.boxen.*.plist"]
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.human_name(service)
|
45
|
+
service.match(/com\.boxen\.(.+)\.plist$/)[1]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/test/boxen_cli_test.rb
CHANGED
@@ -5,10 +5,7 @@ class BoxenCLITest < Boxen::Test
|
|
5
5
|
def setup
|
6
6
|
@config = Boxen::Config.new
|
7
7
|
@flags = Boxen::Flags.new
|
8
|
-
@cli
|
9
|
-
|
10
|
-
$stdout.stubs(:puts).returns(true)
|
11
|
-
$stdout.stubs(:write).returns(true)
|
8
|
+
@cli = Boxen::CLI.new(@config, @flags)
|
12
9
|
end
|
13
10
|
|
14
11
|
def test_initialize
|
@@ -18,166 +15,25 @@ class BoxenCLITest < Boxen::Test
|
|
18
15
|
cli = Boxen::CLI.new config, flags
|
19
16
|
|
20
17
|
assert_equal config, cli.config
|
21
|
-
assert_equal flags,
|
22
|
-
assert_equal config, cli.puppet.config
|
23
|
-
|
24
|
-
assert_equal config, cli.reporter.config
|
25
|
-
assert_equal config, cli.reporter.checkout.config
|
26
|
-
assert_equal cli.checkout, cli.reporter.checkout
|
27
|
-
assert_equal cli.puppet, cli.reporter.puppet
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_issues?
|
31
|
-
@config.stealth = true
|
32
|
-
@config.pretend = true
|
33
|
-
@cli.checkout.stubs(:master?).returns(false)
|
34
|
-
assert !@cli.issues?
|
35
|
-
|
36
|
-
@config.stealth = false
|
37
|
-
@config.pretend = true
|
38
|
-
@cli.checkout.stubs(:master?).returns(false)
|
39
|
-
assert !@cli.issues?
|
40
|
-
|
41
|
-
@config.stealth = true
|
42
|
-
@config.pretend = false
|
43
|
-
@cli.checkout.stubs(:master?).returns(false)
|
44
|
-
assert !@cli.issues?
|
45
|
-
|
46
|
-
@config.stealth = true
|
47
|
-
@config.pretend = true
|
48
|
-
@cli.checkout.stubs(:master?).returns(true)
|
49
|
-
assert !@cli.issues?
|
50
|
-
|
51
|
-
@config.stealth = false
|
52
|
-
@config.pretend = true
|
53
|
-
@cli.checkout.stubs(:master?).returns(true)
|
54
|
-
assert !@cli.issues?
|
55
|
-
|
56
|
-
@config.stealth = true
|
57
|
-
@config.pretend = false
|
58
|
-
@cli.checkout.stubs(:master?).returns(true)
|
59
|
-
assert !@cli.issues?
|
60
|
-
|
61
|
-
@config.stealth = false
|
62
|
-
@config.pretend = false
|
63
|
-
@cli.checkout.stubs(:master?).returns(true)
|
64
|
-
assert @cli.issues?
|
65
|
-
end
|
66
|
-
|
67
|
-
def test_report_failure
|
68
|
-
@cli.stubs(:issues?).returns(true)
|
69
|
-
@cli.stubs(:process).returns(1)
|
70
|
-
@cli.stubs(:warn)
|
71
|
-
|
72
|
-
@cli.reporter.expects(:record_failure)
|
73
|
-
@cli.reporter.expects(:close_failures).never
|
74
|
-
|
75
|
-
@cli.run
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_run_success
|
79
|
-
@cli.stubs(:issues?).returns(true)
|
80
|
-
@cli.stubs(:process).returns(0)
|
81
|
-
|
82
|
-
@cli.reporter.expects(:record_failure).never
|
83
|
-
@cli.reporter.expects(:close_failures)
|
84
|
-
|
85
|
-
@cli.run
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_run_success_exit_code_2
|
89
|
-
@cli.stubs(:issues?).returns(true)
|
90
|
-
@cli.stubs(:process).returns(2)
|
91
|
-
|
92
|
-
@cli.reporter.expects(:record_failure).never
|
93
|
-
@cli.reporter.expects(:close_failures)
|
94
|
-
|
95
|
-
@cli.run
|
96
|
-
end
|
18
|
+
assert_equal flags, cli.flags
|
97
19
|
|
98
|
-
|
99
|
-
|
100
|
-
@cli.stubs(:process).returns(1)
|
101
|
-
|
102
|
-
@cli.reporter.expects(:record_failure).never
|
103
|
-
@cli.reporter.expects(:close_failures).never
|
104
|
-
|
105
|
-
@cli.run
|
20
|
+
assert_equal config, cli.runner.config
|
21
|
+
assert_equal flags, cli.runner.flags
|
106
22
|
end
|
107
23
|
|
108
|
-
def
|
109
|
-
@cli.
|
110
|
-
@cli.stubs(:process).returns(0)
|
111
|
-
|
112
|
-
@cli.reporter.expects(:record_failure).never
|
113
|
-
@cli.reporter.expects(:close_failures).never
|
114
|
-
|
24
|
+
def test_run
|
25
|
+
@cli.runner.expects(:run)
|
115
26
|
@cli.run
|
116
27
|
end
|
117
28
|
|
118
|
-
def
|
119
|
-
|
120
|
-
@cli.stubs(:process).returns(2)
|
121
|
-
|
122
|
-
@cli.reporter.expects(:record_failure).never
|
123
|
-
@cli.reporter.expects(:close_failures).never
|
124
|
-
|
125
|
-
@cli.run
|
126
|
-
end
|
127
|
-
|
128
|
-
def test_disable_services
|
129
|
-
config = Boxen::Config.new
|
130
|
-
flags = Boxen::Flags.new('--disable-services')
|
131
|
-
cli = Boxen::CLI.new config, flags
|
132
|
-
|
133
|
-
Dir.expects(:[]).with("/Library/LaunchDaemons/com.boxen.*.plist").returns([
|
134
|
-
"/Library/LaunchDaemons/com.boxen.test.plist"
|
135
|
-
])
|
136
|
-
|
137
|
-
Boxen::Util.expects(:sudo).with(
|
138
|
-
"/bin/launchctl",
|
139
|
-
"unload",
|
140
|
-
"-w",
|
141
|
-
"/Library/LaunchDaemons/com.boxen.test.plist"
|
142
|
-
).returns(true)
|
143
|
-
|
144
|
-
assert_raises(SystemExit) do
|
145
|
-
cli.process
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
def test_enable_services
|
150
|
-
config = Boxen::Config.new
|
151
|
-
flags = Boxen::Flags.new('--enable-services')
|
152
|
-
cli = Boxen::CLI.new config, flags
|
153
|
-
|
154
|
-
Dir.expects(:[]).with("/Library/LaunchDaemons/com.boxen.*.plist").returns([
|
155
|
-
"/Library/LaunchDaemons/com.boxen.test.plist"
|
156
|
-
])
|
157
|
-
|
158
|
-
Boxen::Util.expects(:sudo).with(
|
159
|
-
"/bin/launchctl",
|
160
|
-
"load",
|
161
|
-
"-w",
|
162
|
-
"/Library/LaunchDaemons/com.boxen.test.plist"
|
163
|
-
).returns(true)
|
164
|
-
|
165
|
-
assert_raises(SystemExit) do
|
166
|
-
cli.process
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
def test_list_services
|
171
|
-
config = Boxen::Config.new
|
172
|
-
flags = Boxen::Flags.new('--list-services')
|
173
|
-
cli = Boxen::CLI.new config, flags
|
174
|
-
|
175
|
-
Dir.expects(:[]).with("/Library/LaunchDaemons/com.boxen.*.plist").returns([
|
176
|
-
"/Library/LaunchDaemons/com.boxen.test.plist"
|
177
|
-
])
|
29
|
+
def test_help
|
30
|
+
$stdout.stubs(:write)
|
178
31
|
|
179
|
-
|
180
|
-
|
32
|
+
flags = Boxen::Flags.new('--help')
|
33
|
+
cli = Boxen::CLI.new(@config, flags)
|
34
|
+
cli.runner.expects(:run).never
|
35
|
+
assert_raises SystemExit do
|
36
|
+
cli.run
|
181
37
|
end
|
182
38
|
end
|
183
39
|
end
|
@@ -75,4 +75,15 @@ class BoxenPuppeteerTest < Boxen::Test
|
|
75
75
|
|
76
76
|
assert found, "Flags must include #{flag} #{value}."
|
77
77
|
end
|
78
|
+
|
79
|
+
def test_status
|
80
|
+
status = Boxen::Puppeteer::Status.new(0)
|
81
|
+
assert status.success?
|
82
|
+
|
83
|
+
status = Boxen::Puppeteer::Status.new(2)
|
84
|
+
assert status.success?
|
85
|
+
|
86
|
+
status = Boxen::Puppeteer::Status.new(1)
|
87
|
+
refute status.success?
|
88
|
+
end
|
78
89
|
end
|
@@ -0,0 +1,149 @@
|
|
1
|
+
require "boxen/test"
|
2
|
+
require "boxen/runner"
|
3
|
+
|
4
|
+
class BoxenRunnerTest < Boxen::Test
|
5
|
+
def setup
|
6
|
+
@config = Boxen::Config.new
|
7
|
+
@flags = Boxen::Flags.new
|
8
|
+
@runner = Boxen::Runner.new(@config, @flags)
|
9
|
+
|
10
|
+
$stdout.stubs(:puts).returns(true)
|
11
|
+
$stdout.stubs(:write).returns(true)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_initialize
|
15
|
+
config = Boxen::Config.new
|
16
|
+
flags = Boxen::Flags.new
|
17
|
+
|
18
|
+
runner = Boxen::Runner.new(config, flags)
|
19
|
+
|
20
|
+
assert_equal config, runner.config
|
21
|
+
assert_equal flags, runner.flags
|
22
|
+
assert_equal config, runner.puppet.config
|
23
|
+
|
24
|
+
assert_equal config, runner.reporter.config
|
25
|
+
assert_equal config, runner.reporter.checkout.config
|
26
|
+
assert_equal runner.checkout, runner.reporter.checkout
|
27
|
+
assert_equal runner.puppet, runner.reporter.puppet
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_issues?
|
31
|
+
@config.stealth = true
|
32
|
+
@config.pretend = true
|
33
|
+
@runner.checkout.stubs(:master?).returns(false)
|
34
|
+
assert !@runner.issues?
|
35
|
+
|
36
|
+
@config.stealth = false
|
37
|
+
@config.pretend = true
|
38
|
+
@runner.checkout.stubs(:master?).returns(false)
|
39
|
+
assert !@runner.issues?
|
40
|
+
|
41
|
+
@config.stealth = true
|
42
|
+
@config.pretend = false
|
43
|
+
@runner.checkout.stubs(:master?).returns(false)
|
44
|
+
assert !@runner.issues?
|
45
|
+
|
46
|
+
@config.stealth = true
|
47
|
+
@config.pretend = true
|
48
|
+
@runner.checkout.stubs(:master?).returns(true)
|
49
|
+
assert !@runner.issues?
|
50
|
+
|
51
|
+
@config.stealth = false
|
52
|
+
@config.pretend = true
|
53
|
+
@runner.checkout.stubs(:master?).returns(true)
|
54
|
+
assert !@runner.issues?
|
55
|
+
|
56
|
+
@config.stealth = true
|
57
|
+
@config.pretend = false
|
58
|
+
@runner.checkout.stubs(:master?).returns(true)
|
59
|
+
assert !@runner.issues?
|
60
|
+
|
61
|
+
@config.stealth = false
|
62
|
+
@config.pretend = false
|
63
|
+
@runner.checkout.stubs(:master?).returns(true)
|
64
|
+
assert @runner.issues?
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_report_failure
|
68
|
+
@runner.stubs(:issues?).returns(true)
|
69
|
+
status = stub('status', :success? => false)
|
70
|
+
@runner.stubs(:process).returns(status)
|
71
|
+
@runner.stubs(:warn)
|
72
|
+
|
73
|
+
@runner.reporter.expects(:record_failure)
|
74
|
+
@runner.reporter.expects(:close_failures).never
|
75
|
+
|
76
|
+
@runner.run
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_run_success
|
80
|
+
@runner.stubs(:issues?).returns(true)
|
81
|
+
status = stub('status', :success? => true)
|
82
|
+
@runner.stubs(:process).returns(status)
|
83
|
+
|
84
|
+
@runner.reporter.expects(:record_failure).never
|
85
|
+
@runner.reporter.expects(:close_failures)
|
86
|
+
|
87
|
+
@runner.run
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_run_failure_no_issues
|
91
|
+
@runner.stubs(:issues?).returns(false)
|
92
|
+
status = stub('status', :success? => false)
|
93
|
+
@runner.stubs(:process).returns(status)
|
94
|
+
|
95
|
+
@runner.reporter.expects(:record_failure).never
|
96
|
+
@runner.reporter.expects(:close_failures).never
|
97
|
+
|
98
|
+
@runner.run
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_run_success_no_issues
|
102
|
+
@runner.stubs(:issues?).returns(false)
|
103
|
+
status = stub('status', :success? => true)
|
104
|
+
@runner.stubs(:process).returns(status)
|
105
|
+
|
106
|
+
@runner.reporter.expects(:record_failure).never
|
107
|
+
@runner.reporter.expects(:close_failures).never
|
108
|
+
|
109
|
+
@runner.run
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_disable_services
|
113
|
+
config = Boxen::Config.new
|
114
|
+
flags = Boxen::Flags.new('--disable-services')
|
115
|
+
runner = Boxen::Runner.new config, flags
|
116
|
+
|
117
|
+
services = Array.new(3) { mock('service', :disable => true) }
|
118
|
+
Boxen::Service.stubs(:list).returns(services)
|
119
|
+
|
120
|
+
assert_raises(SystemExit) do
|
121
|
+
runner.process
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_enable_services
|
126
|
+
config = Boxen::Config.new
|
127
|
+
flags = Boxen::Flags.new('--enable-services')
|
128
|
+
runner = Boxen::Runner.new config, flags
|
129
|
+
|
130
|
+
services = Array.new(3) { mock('service', :enable => true) }
|
131
|
+
Boxen::Service.stubs(:list).returns(services)
|
132
|
+
|
133
|
+
assert_raises(SystemExit) do
|
134
|
+
runner.process
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_list_services
|
139
|
+
config = Boxen::Config.new
|
140
|
+
flags = Boxen::Flags.new('--list-services')
|
141
|
+
runner = Boxen::Runner.new config, flags
|
142
|
+
|
143
|
+
Boxen::Service.expects(:list).returns(%w[a list of services])
|
144
|
+
|
145
|
+
assert_raises(SystemExit) do
|
146
|
+
runner.process
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "boxen/test"
|
2
|
+
require "boxen/service"
|
3
|
+
|
4
|
+
class BoxenServiceTest < Boxen::Test
|
5
|
+
def test_list
|
6
|
+
Dir.expects(:[]).with("/Library/LaunchDaemons/com.boxen.*.plist").returns([
|
7
|
+
"/Library/LaunchDaemons/com.boxen.test.plist",
|
8
|
+
"/Library/LaunchDaemons/com.boxen.other.plist"
|
9
|
+
])
|
10
|
+
|
11
|
+
services = Boxen::Service.list
|
12
|
+
assert_equal ['other', 'test'], services.collect(&:name).sort
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_enable
|
16
|
+
service = Boxen::Service.new('blip')
|
17
|
+
Boxen::Util.expects(:sudo).with('/bin/launchctl', 'load', '-w',
|
18
|
+
'/Library/LaunchDaemons/com.boxen.blip.plist')
|
19
|
+
service.enable
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_disable
|
23
|
+
service = Boxen::Service.new('thing')
|
24
|
+
Boxen::Util.expects(:sudo).with('/bin/launchctl', 'unload', '-w',
|
25
|
+
'/Library/LaunchDaemons/com.boxen.thing.plist')
|
26
|
+
service.disable
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_to_s
|
30
|
+
service = Boxen::Service.new('blam')
|
31
|
+
assert_equal service.name, service.to_s
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boxen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 2
|
10
|
+
version: 0.4.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- John Barnette
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2012-10-
|
19
|
+
date: 2012-10-23 00:00:00 -04:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -193,8 +193,11 @@ files:
|
|
193
193
|
- lib/boxen/project.rb
|
194
194
|
- lib/boxen/puppeteer.rb
|
195
195
|
- lib/boxen/reporter.rb
|
196
|
+
- lib/boxen/runner.rb
|
197
|
+
- lib/boxen/service.rb
|
196
198
|
- lib/boxen/util.rb
|
197
199
|
- lib/facter/boxen.rb
|
200
|
+
- lib/facter/dot_boxen.rb
|
198
201
|
- lib/system_timer.rb
|
199
202
|
- script/bootstrap
|
200
203
|
- script/release
|
@@ -214,6 +217,8 @@ files:
|
|
214
217
|
- test/boxen_project_test.rb
|
215
218
|
- test/boxen_puppeteer_test.rb
|
216
219
|
- test/boxen_reporter_test.rb
|
220
|
+
- test/boxen_runner_test.rb
|
221
|
+
- test/boxen_service_test.rb
|
217
222
|
- test/boxen_util_test.rb
|
218
223
|
- test/fixtures/repo/modules/projects/manifests/first-project.pp
|
219
224
|
- test/fixtures/repo/modules/projects/manifests/second-project.pp
|
@@ -267,6 +272,8 @@ test_files:
|
|
267
272
|
- test/boxen_project_test.rb
|
268
273
|
- test/boxen_puppeteer_test.rb
|
269
274
|
- test/boxen_reporter_test.rb
|
275
|
+
- test/boxen_runner_test.rb
|
276
|
+
- test/boxen_service_test.rb
|
270
277
|
- test/boxen_util_test.rb
|
271
278
|
- test/fixtures/repo/modules/projects/manifests/first-project.pp
|
272
279
|
- test/fixtures/repo/modules/projects/manifests/second-project.pp
|