beaker 5.5.0 → 5.7.0
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.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +14 -14
- data/.github/workflows/release.yml +1 -1
- data/.github/workflows/test.yml +2 -2
- data/.rubocop_todo.yml +51 -5
- data/CHANGELOG.md +17 -0
- data/acceptance/tests/base/dsl/helpers/host_helpers/on_test.rb +1 -1
- data/acceptance/tests/base/dsl/platform_tag_confiner_test.rb +2 -2
- data/beaker.gemspec +1 -1
- data/lib/beaker/cli.rb +3 -3
- data/lib/beaker/host/unix/pkg.rb +4 -4
- data/lib/beaker/host.rb +1 -5
- data/lib/beaker/options/hosts_file_parser.rb +1 -0
- data/lib/beaker/platform.rb +3 -4
- data/lib/beaker/shared/host_manager.rb +4 -4
- data/lib/beaker/ssh_connection.rb +2 -2
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/cli_spec.rb +11 -11
- data/spec/beaker/command_spec.rb +10 -10
- data/spec/beaker/dsl/helpers/host_helpers_spec.rb +11 -11
- data/spec/beaker/dsl/roles_spec.rb +15 -15
- data/spec/beaker/dsl/structure_spec.rb +3 -3
- data/spec/beaker/host/pswindows/exec_spec.rb +3 -3
- data/spec/beaker/host/unix/exec_spec.rb +3 -3
- data/spec/beaker/host/unix/pkg_spec.rb +20 -44
- data/spec/beaker/host_spec.rb +6 -6
- data/spec/beaker/logger_spec.rb +7 -7
- data/spec/beaker/options/hosts_file_parser_spec.rb +1 -1
- data/spec/beaker/options/parser_spec.rb +40 -40
- data/spec/beaker/platform_spec.rb +5 -0
- data/spec/beaker/shared/host_manager_spec.rb +1 -1
- data/spec/beaker/shared/semvar_spec.rb +1 -1
- data/spec/beaker/subcommand/subcommand_util_spec.rb +5 -5
- data/spec/beaker/test_suite_spec.rb +12 -12
- metadata +4 -4
@@ -21,13 +21,13 @@ describe ClassMixedWithDSLRoles do
|
|
21
21
|
it 'returns an array of hosts that are agents' do
|
22
22
|
@hosts = [agent1, agent2, master]
|
23
23
|
expect(subject).to receive(:hosts).and_return(hosts)
|
24
|
-
expect(subject.agents).to
|
24
|
+
expect(subject.agents).to eq [agent1, agent2, master]
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'and an empty array when none match' do
|
28
28
|
@hosts = [db, custom]
|
29
29
|
expect(subject).to receive(:hosts).and_return(hosts)
|
30
|
-
expect(subject.agents).to
|
30
|
+
expect(subject.agents).to eq []
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -35,7 +35,7 @@ describe ClassMixedWithDSLRoles do
|
|
35
35
|
it 'returns the master if there is one' do
|
36
36
|
@hosts = [master, agent1]
|
37
37
|
expect(subject).to receive(:hosts).and_return(hosts)
|
38
|
-
expect(subject.master).to
|
38
|
+
expect(subject.master).to eq master
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'raises an error if there is more than one master' do
|
@@ -56,7 +56,7 @@ describe ClassMixedWithDSLRoles do
|
|
56
56
|
it 'returns the dashboard if there is one' do
|
57
57
|
@hosts = [a_and_dash, agent1]
|
58
58
|
expect(subject).to receive(:hosts).and_return(hosts)
|
59
|
-
expect(subject.dashboard).to
|
59
|
+
expect(subject.dashboard).to eq a_and_dash
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'raises an error if there is more than one dashboard' do
|
@@ -83,7 +83,7 @@ describe ClassMixedWithDSLRoles do
|
|
83
83
|
it 'returns the database if there is one' do
|
84
84
|
@hosts = [db, agent1]
|
85
85
|
expect(subject).to receive(:hosts).and_return(hosts)
|
86
|
-
expect(subject.database).to
|
86
|
+
expect(subject.database).to eq db
|
87
87
|
end
|
88
88
|
|
89
89
|
it 'raises an error if there is more than one database' do
|
@@ -108,25 +108,25 @@ describe ClassMixedWithDSLRoles do
|
|
108
108
|
|
109
109
|
describe '#not_controller' do
|
110
110
|
it 'returns true when a host does not have the roles master/database/dashboard' do
|
111
|
-
expect(subject.not_controller(agent1)).to
|
111
|
+
expect(subject.not_controller(agent1)).to eq true
|
112
112
|
end
|
113
113
|
|
114
114
|
it 'returns false when a host has one of the roles master/database/dashboard' do
|
115
|
-
expect(subject.not_controller(a_and_dash)).to
|
115
|
+
expect(subject.not_controller(a_and_dash)).to eq false
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
119
119
|
describe '#agent_only' do
|
120
120
|
it 'returns true when a host has the single role agent' do
|
121
|
-
expect(subject.agent_only(agent1)).to
|
121
|
+
expect(subject.agent_only(agent1)).to eq true
|
122
122
|
end
|
123
123
|
|
124
124
|
it 'returns false when a host has more than a single role' do
|
125
|
-
expect(subject.agent_only(a_and_dash)).to
|
125
|
+
expect(subject.agent_only(a_and_dash)).to eq false
|
126
126
|
end
|
127
127
|
|
128
128
|
it 'returns false when a host has the role master' do
|
129
|
-
expect(subject.agent_only(master)).to
|
129
|
+
expect(subject.agent_only(master)).to eq false
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
@@ -328,7 +328,7 @@ describe ClassMixedWithDSLRoles do
|
|
328
328
|
it 'returns the default host when one is specified' do
|
329
329
|
@hosts = [db, agent1, agent2, default, master]
|
330
330
|
expect(subject).to receive(:hosts).once.and_return(hosts)
|
331
|
-
expect(subject.default).to
|
331
|
+
expect(subject.default).to eq default
|
332
332
|
end
|
333
333
|
|
334
334
|
it 'raises an error if there is more than one default' do
|
@@ -377,7 +377,7 @@ describe ClassMixedWithDSLRoles do
|
|
377
377
|
test_role = "custom_role"
|
378
378
|
subject.add_role_def(test_role)
|
379
379
|
expect(subject).to respond_to test_role
|
380
|
-
expect(subject.send(test_role)).to
|
380
|
+
expect(subject.send(test_role)).to eq @hosts[2]
|
381
381
|
subject.class.send(:undef_method, test_role)
|
382
382
|
end
|
383
383
|
|
@@ -387,7 +387,7 @@ describe ClassMixedWithDSLRoles do
|
|
387
387
|
test_role = "custom_role"
|
388
388
|
subject.add_role_def(test_role)
|
389
389
|
expect(subject).to respond_to test_role
|
390
|
-
expect(subject.send(test_role)).to
|
390
|
+
expect(subject.send(test_role)).to eq [@hosts[2], @hosts[3]]
|
391
391
|
subject.class.send(:undef_method, test_role)
|
392
392
|
end
|
393
393
|
end
|
@@ -397,8 +397,8 @@ describe ClassMixedWithDSLRoles do
|
|
397
397
|
@hosts = [agent1, agent2]
|
398
398
|
# expect( subject ).to receive( :hosts ).and_return( hosts )
|
399
399
|
expect(subject).to receive(:hosts).twice.and_return(hosts)
|
400
|
-
expect(subject.any_hosts_as?("agent")).to
|
401
|
-
expect(subject.any_hosts_as?("custom_role")).to
|
400
|
+
expect(subject.any_hosts_as?("agent")).to eq true
|
401
|
+
expect(subject.any_hosts_as?("custom_role")).to eq false
|
402
402
|
end
|
403
403
|
end
|
404
404
|
end
|
@@ -370,13 +370,13 @@ describe ClassMixedWithDSLStructure do
|
|
370
370
|
it 'returns an empty array if there are no applicable hosts' do
|
371
371
|
hosts = [{ 'thing' => 'foo' }, { 'thing' => 'bar' }]
|
372
372
|
|
373
|
-
expect(subject.select_hosts({ 'thing' => 'nope' }, hosts)).to
|
373
|
+
expect(subject.select_hosts({ 'thing' => 'nope' }, hosts)).to eq []
|
374
374
|
end
|
375
375
|
|
376
376
|
it 'selects hosts that match a list of criteria' do
|
377
377
|
hosts = [{ 'thing' => 'foo' }, { 'thing' => 'bar' }, { 'thing' => 'baz' }]
|
378
378
|
|
379
|
-
expect(subject.select_hosts({ :thing => %w[foo baz] }, hosts)).to
|
379
|
+
expect(subject.select_hosts({ :thing => %w[foo baz] }, hosts)).to eq [{ 'thing' => 'foo' }, { 'thing' => 'baz' }]
|
380
380
|
end
|
381
381
|
|
382
382
|
it 'selects hosts when a passed block returns true' do
|
@@ -396,7 +396,7 @@ describe ClassMixedWithDSLStructure do
|
|
396
396
|
selected_hosts = subject.select_hosts 'platform' => 'solaris' do |host|
|
397
397
|
subject.on(host, '/sbin/zonename').stdout.include?(':global')
|
398
398
|
end
|
399
|
-
expect(selected_hosts).to
|
399
|
+
expect(selected_hosts).to eq [host1]
|
400
400
|
end
|
401
401
|
end
|
402
402
|
end
|
@@ -85,17 +85,17 @@ module Beaker
|
|
85
85
|
let(:host) { { 'pathseparator' => ':' } }
|
86
86
|
|
87
87
|
it 'returns a blank string if theres no env' do
|
88
|
-
expect(instance.environment_string({})).to
|
88
|
+
expect(instance.environment_string({})).to eq ''
|
89
89
|
end
|
90
90
|
|
91
91
|
it 'takes an env hash with var_name/value pairs' do
|
92
92
|
expect(instance.environment_string({ :HOME => '/', :http_proxy => 'http://foo' }))
|
93
|
-
.to
|
93
|
+
.to eq 'set "HOME=/" && set "http_proxy=http://foo" && set "HTTP_PROXY=http://foo" && '
|
94
94
|
end
|
95
95
|
|
96
96
|
it 'takes an env hash with var_name/value[Array] pairs' do
|
97
97
|
expect(instance.environment_string({ :LD_PATH => ['/', '/tmp'] }))
|
98
|
-
.to
|
98
|
+
.to eq "set \"LD_PATH=/:/tmp\" && "
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
@@ -62,17 +62,17 @@ module Beaker
|
|
62
62
|
|
63
63
|
it 'returns a blank string if theres no env' do
|
64
64
|
expect(instance).not_to receive(:is_powershell?)
|
65
|
-
expect(instance.environment_string({})).to
|
65
|
+
expect(instance.environment_string({})).to eq ''
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'takes an env hash with var_name/value pairs' do
|
69
69
|
expect(instance.environment_string({ :HOME => '/', :http_proxy => 'http://foo' }))
|
70
|
-
.to
|
70
|
+
.to eq 'env HOME="/" http_proxy="http://foo" HTTP_PROXY="http://foo"'
|
71
71
|
end
|
72
72
|
|
73
73
|
it 'takes an env hash with var_name/value[Array] pairs' do
|
74
74
|
expect(instance.environment_string({ :LD_PATH => ['/', '/tmp'] }))
|
75
|
-
.to
|
75
|
+
.to eq "env LD_PATH=\"/:/tmp\""
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
@@ -171,28 +171,16 @@ module Beaker
|
|
171
171
|
pkg = 'pkg'
|
172
172
|
expect(Beaker::Command).to receive(:new).with("apt-get install --force-yes -y #{pkg}", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
|
173
173
|
expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
|
174
|
-
expect(instance.install_package(pkg)).to
|
174
|
+
expect(instance.install_package(pkg)).to eq "hello"
|
175
175
|
end
|
176
176
|
end
|
177
177
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
expect(instance.install_package(pkg)).to be == "hello"
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
(22..39).to_a.each do |fedora_release|
|
189
|
-
it "uses dnf on fedora-#{fedora_release}" do
|
190
|
-
@opts = { 'platform' => "fedora-#{fedora_release}-is-me" }
|
191
|
-
pkg = 'fedora_package'
|
192
|
-
expect(Beaker::Command).to receive(:new).with("dnf -y install #{pkg}", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
|
193
|
-
expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
|
194
|
-
expect(instance.install_package(pkg)).to be == "hello"
|
195
|
-
end
|
178
|
+
it "uses dnf on fedora" do
|
179
|
+
@opts = { 'platform' => "fedora-is-me" }
|
180
|
+
pkg = 'fedora_package'
|
181
|
+
expect(Beaker::Command).to receive(:new).with("dnf -y install #{pkg}", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
|
182
|
+
expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
|
183
|
+
expect(instance.install_package(pkg)).to eq "hello"
|
196
184
|
end
|
197
185
|
|
198
186
|
it "uses dnf on amazon-2023" do
|
@@ -200,7 +188,7 @@ module Beaker
|
|
200
188
|
pkg = 'amazon_package'
|
201
189
|
expect(Beaker::Command).to receive(:new).with("dnf -y install #{pkg}", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
|
202
190
|
expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
|
203
|
-
expect(instance.install_package(pkg)).to
|
191
|
+
expect(instance.install_package(pkg)).to eq "hello"
|
204
192
|
end
|
205
193
|
|
206
194
|
it "uses pacman on archlinux" do
|
@@ -208,7 +196,7 @@ module Beaker
|
|
208
196
|
pkg = 'archlinux_package'
|
209
197
|
expect(Beaker::Command).to receive(:new).with("pacman -S --noconfirm #{pkg}", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
|
210
198
|
expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
|
211
|
-
expect(instance.install_package(pkg)).to
|
199
|
+
expect(instance.install_package(pkg)).to eq "hello"
|
212
200
|
end
|
213
201
|
end
|
214
202
|
|
@@ -218,27 +206,15 @@ module Beaker
|
|
218
206
|
@opts = { 'platform' => platform }
|
219
207
|
expect(Beaker::Command).to receive(:new).with("apt-get purge -y pkg", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
|
220
208
|
expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
|
221
|
-
expect(instance.uninstall_package('pkg')).to
|
209
|
+
expect(instance.uninstall_package('pkg')).to eq "hello"
|
222
210
|
end
|
223
211
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
expect(instance.uninstall_package(pkg)).to be == "hello"
|
231
|
-
end
|
232
|
-
end
|
233
|
-
|
234
|
-
(22..39).to_a.each do |fedora_release|
|
235
|
-
it "uses dnf on fedora-#{fedora_release}" do
|
236
|
-
@opts = { 'platform' => "fedora-#{fedora_release}-is-me" }
|
237
|
-
pkg = 'fedora_package'
|
238
|
-
expect(Beaker::Command).to receive(:new).with("dnf -y remove #{pkg}", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
|
239
|
-
expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
|
240
|
-
expect(instance.uninstall_package(pkg)).to be == "hello"
|
241
|
-
end
|
212
|
+
it "uses dnf on fedora" do
|
213
|
+
@opts = { 'platform' => "fedora-is-me" }
|
214
|
+
pkg = 'fedora_package'
|
215
|
+
expect(Beaker::Command).to receive(:new).with("dnf -y remove #{pkg}", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
|
216
|
+
expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
|
217
|
+
expect(instance.uninstall_package(pkg)).to eq "hello"
|
242
218
|
end
|
243
219
|
end
|
244
220
|
end
|
@@ -249,7 +225,7 @@ module Beaker
|
|
249
225
|
@opts = { 'platform' => platform }
|
250
226
|
expect(Beaker::Command).to receive(:new).with("apt-get install -o Dpkg::Options::='--force-confold' -y --force-yes pkg", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
|
251
227
|
expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
|
252
|
-
expect(instance.upgrade_package('pkg')).to
|
228
|
+
expect(instance.upgrade_package('pkg')).to eq "hello"
|
253
229
|
end
|
254
230
|
end
|
255
231
|
end
|
@@ -260,7 +236,7 @@ module Beaker
|
|
260
236
|
pkg = 'redhat_package'
|
261
237
|
expect(Beaker::Command).to receive(:new).with("rpm -Uvh #{pkg} ", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
|
262
238
|
expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
|
263
|
-
expect(instance.install_package_with_rpm(pkg)).to
|
239
|
+
expect(instance.install_package_with_rpm(pkg)).to eq "hello"
|
264
240
|
end
|
265
241
|
|
266
242
|
it "accepts a package and additional options" do
|
@@ -269,7 +245,7 @@ module Beaker
|
|
269
245
|
cmdline_args = '--foo'
|
270
246
|
expect(Beaker::Command).to receive(:new).with("rpm #{cmdline_args} -Uvh #{pkg} ", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
|
271
247
|
expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
|
272
|
-
expect(instance.install_package_with_rpm(pkg, cmdline_args)).to
|
248
|
+
expect(instance.install_package_with_rpm(pkg, cmdline_args)).to eq "hello"
|
273
249
|
end
|
274
250
|
end
|
275
251
|
|
@@ -279,7 +255,7 @@ module Beaker
|
|
279
255
|
'https://myproxy.com:3128',
|
280
256
|
'http://myproxy.com:3128',].each do |url|
|
281
257
|
it "correctly extracts rpm proxy options for #{url}" do
|
282
|
-
expect(instance.extract_rpm_proxy_options(url)).to
|
258
|
+
expect(instance.extract_rpm_proxy_options(url)).to eq '--httpproxy myproxy.com --httpport 3128'
|
283
259
|
end
|
284
260
|
end
|
285
261
|
|
data/spec/beaker/host_spec.rb
CHANGED
@@ -256,7 +256,7 @@ module Beaker
|
|
256
256
|
allow(host).to receive(:exec).and_return(result)
|
257
257
|
|
258
258
|
expect(Beaker::Command).to receive(:new).with("mkdir -p \"test/test/test\"")
|
259
|
-
expect(host.mkdir_p('test/test/test')).to
|
259
|
+
expect(host.mkdir_p('test/test/test')).to eq true
|
260
260
|
end
|
261
261
|
|
262
262
|
it "does the right thing on a bash host, identified as is_cygwin=nil" do
|
@@ -267,7 +267,7 @@ module Beaker
|
|
267
267
|
allow(host).to receive(:exec).and_return(result)
|
268
268
|
|
269
269
|
expect(Beaker::Command).to receive(:new).with("mkdir -p \"test/test/test\"")
|
270
|
-
expect(host.mkdir_p('test/test/test')).to
|
270
|
+
expect(host.mkdir_p('test/test/test')).to eq true
|
271
271
|
end
|
272
272
|
|
273
273
|
it "does the right thing on a non-bash host, identified as is_cygwin=false (powershell)" do
|
@@ -284,26 +284,26 @@ module Beaker
|
|
284
284
|
"-NoProfile",
|
285
285
|
"-NonInteractive",
|
286
286
|
"-Command New-Item -Path 'test\\test\\test' -ItemType 'directory'",])
|
287
|
-
expect(host.mkdir_p('test/test/test')).to
|
287
|
+
expect(host.mkdir_p('test/test/test')).to eq true
|
288
288
|
end
|
289
289
|
end
|
290
290
|
|
291
291
|
describe "#touch" do
|
292
292
|
it "generates the right absolute command for a windows host" do
|
293
293
|
@platform = 'windows'
|
294
|
-
expect(host.touch('touched_file')).to
|
294
|
+
expect(host.touch('touched_file')).to eq "c:\\\\windows\\\\system32\\\\cmd.exe /c echo. 2> touched_file"
|
295
295
|
end
|
296
296
|
|
297
297
|
%w[centos redhat].each do |platform|
|
298
298
|
it "generates the right absolute command for a #{platform} host" do
|
299
299
|
@platform = platform
|
300
|
-
expect(host.touch('touched_file')).to
|
300
|
+
expect(host.touch('touched_file')).to eq "/bin/touch touched_file"
|
301
301
|
end
|
302
302
|
end
|
303
303
|
|
304
304
|
it "generates the right absolute command for an osx host" do
|
305
305
|
@platform = 'osx'
|
306
|
-
expect(host.touch('touched_file')).to
|
306
|
+
expect(host.touch('touched_file')).to eq "/usr/bin/touch touched_file"
|
307
307
|
end
|
308
308
|
end
|
309
309
|
|
data/spec/beaker/logger_spec.rb
CHANGED
@@ -205,11 +205,11 @@ module Beaker
|
|
205
205
|
let(:logger) { described_class.new(my_io, :quiet => true, :log_colors => log_colors) }
|
206
206
|
|
207
207
|
it 'overrides the specified log colors' do
|
208
|
-
expect(logger.log_colors[:error]).to
|
208
|
+
expect(logger.log_colors[:error]).to eq Beaker::Logger::BLACK
|
209
209
|
end
|
210
210
|
|
211
211
|
it 'leaves other colors as the default' do
|
212
|
-
expect(logger.log_colors[:warn]).to
|
212
|
+
expect(logger.log_colors[:warn]).to eq Beaker::Logger::BRIGHT_RED
|
213
213
|
end
|
214
214
|
end
|
215
215
|
|
@@ -220,11 +220,11 @@ module Beaker
|
|
220
220
|
|
221
221
|
context 'when using the default log colors' do
|
222
222
|
it 'overrides notify with NORMAL' do
|
223
|
-
expect(logger.log_colors[:notify]).to
|
223
|
+
expect(logger.log_colors[:notify]).to eq Beaker::Logger::NORMAL
|
224
224
|
end
|
225
225
|
|
226
226
|
it 'overrides info with NORMAL' do
|
227
|
-
expect(logger.log_colors[:info]).to
|
227
|
+
expect(logger.log_colors[:info]).to eq Beaker::Logger::NORMAL
|
228
228
|
end
|
229
229
|
end
|
230
230
|
|
@@ -238,15 +238,15 @@ module Beaker
|
|
238
238
|
let(:logger) { described_class.new(my_io, :quiet => true, :log_colors => log_colors) }
|
239
239
|
|
240
240
|
it 'overrides the specified log colors' do
|
241
|
-
expect(logger.log_colors[:error]).to
|
241
|
+
expect(logger.log_colors[:error]).to eq Beaker::Logger::BLACK
|
242
242
|
end
|
243
243
|
|
244
244
|
it 'does not override notify with NORMAL' do
|
245
|
-
expect(logger.log_colors[:notify]).not_to
|
245
|
+
expect(logger.log_colors[:notify]).not_to eq Beaker::Logger::NORMAL
|
246
246
|
end
|
247
247
|
|
248
248
|
it 'does not override info with NORMAL' do
|
249
|
-
expect(logger.log_colors[:notify]).not_to
|
249
|
+
expect(logger.log_colors[:notify]).not_to eq Beaker::Logger::NORMAL
|
250
250
|
end
|
251
251
|
end
|
252
252
|
end
|
@@ -66,7 +66,7 @@ module Beaker
|
|
66
66
|
end
|
67
67
|
|
68
68
|
describe '#parse_hosts_string' do
|
69
|
-
it '
|
69
|
+
it 'returns a #new_host_options hash if given no arguments' do
|
70
70
|
host_options = parser.parse_hosts_string
|
71
71
|
expect(host_options).to be === parser.new_host_options
|
72
72
|
end
|
@@ -127,10 +127,10 @@ module Beaker
|
|
127
127
|
my_args = ['--log-level', 'debug', '-h', hosts_path]
|
128
128
|
|
129
129
|
expect(parser.parse_args(my_args)[:command_line]).to include(my_args.join(' '))
|
130
|
-
expect(parser.attribution[:command_line]).to
|
131
|
-
expect(parser.attribution[:hosts_file]).to
|
132
|
-
expect(parser.attribution[:log_level]).to
|
133
|
-
expect(parser.attribution[:pe_dir]).to
|
130
|
+
expect(parser.attribution[:command_line]).to eq 'cmd'
|
131
|
+
expect(parser.attribution[:hosts_file]).to eq 'cmd'
|
132
|
+
expect(parser.attribution[:log_level]).to eq 'cmd'
|
133
|
+
expect(parser.attribution[:pe_dir]).to eq 'preset'
|
134
134
|
end
|
135
135
|
|
136
136
|
describe 'does prioritization correctly' do
|
@@ -205,8 +205,8 @@ module Beaker
|
|
205
205
|
|
206
206
|
opts = parser.parse_args([])
|
207
207
|
attribution = parser.attribution
|
208
|
-
expect(opts[:level]).to
|
209
|
-
expect(attribution[:level]).to
|
208
|
+
expect(opts[:level]).to eq 'lowest'
|
209
|
+
expect(attribution[:level]).to eq 'preset'
|
210
210
|
end
|
211
211
|
|
212
212
|
it 'project options should have seventh priority' do
|
@@ -215,10 +215,10 @@ module Beaker
|
|
215
215
|
|
216
216
|
opts = parser.parse_args([])
|
217
217
|
attribution = parser.attribution
|
218
|
-
expect(opts[:ssh][:auth_methods]).to
|
219
|
-
expect(attribution[:ssh][:auth_methods]).to
|
220
|
-
expect(opts[:level]).to
|
221
|
-
expect(attribution[:level]).to
|
218
|
+
expect(opts[:ssh][:auth_methods]).to eq 'auth_project_123'
|
219
|
+
expect(attribution[:ssh][:auth_methods]).to eq 'project'
|
220
|
+
expect(opts[:level]).to eq 'seventh'
|
221
|
+
expect(attribution[:level]).to eq 'project'
|
222
222
|
end
|
223
223
|
|
224
224
|
it 'home directory options should have sixth priority' do
|
@@ -227,10 +227,10 @@ module Beaker
|
|
227
227
|
|
228
228
|
opts = parser.parse_args([])
|
229
229
|
attribution = parser.attribution
|
230
|
-
expect(opts[:ssh][:auth_methods]).to
|
231
|
-
expect(attribution[:ssh][:auth_methods]).to
|
232
|
-
expect(opts[:level]).to
|
233
|
-
expect(attribution[:level]).to
|
230
|
+
expect(opts[:ssh][:auth_methods]).to eq 'auth_home_123'
|
231
|
+
expect(attribution[:ssh][:auth_methods]).to eq 'homedir'
|
232
|
+
expect(opts[:level]).to eq 'sixth'
|
233
|
+
expect(attribution[:level]).to eq 'homedir'
|
234
234
|
end
|
235
235
|
|
236
236
|
it 'subcommand_options should have fifth priority' do
|
@@ -239,8 +239,8 @@ module Beaker
|
|
239
239
|
|
240
240
|
opts = parser.parse_args([])
|
241
241
|
attribution = parser.attribution
|
242
|
-
expect(opts[:level]).to
|
243
|
-
expect(attribution[:level]).to
|
242
|
+
expect(opts[:level]).to eq 'fifth'
|
243
|
+
expect(attribution[:level]).to eq 'subcommand'
|
244
244
|
end
|
245
245
|
|
246
246
|
it 'options file has fourth priority' do
|
@@ -250,16 +250,16 @@ module Beaker
|
|
250
250
|
opts = parser.parse_args([])
|
251
251
|
attribution = parser.attribution
|
252
252
|
expect(attribution[:ssh]).to be_a(Hash)
|
253
|
-
expect(attribution[:ssh][:auth_methods]).to
|
254
|
-
expect(attribution[:ssh][:user_known_hosts_file]).to
|
255
|
-
expect(attribution[:ssh][:config]).to
|
256
|
-
expect(attribution[:ssh][:verify_host_key]).to
|
257
|
-
expect(attribution[:ssh][:port]).to
|
258
|
-
expect(attribution[:ssh][:forward_agent]).to
|
259
|
-
expect(attribution[:ssh][:keys]).to
|
260
|
-
expect(attribution[:ssh][:keepalive]).to
|
261
|
-
expect(opts[:level]).to
|
262
|
-
expect(attribution[:level]).to
|
253
|
+
expect(attribution[:ssh][:auth_methods]).to eq 'options_file'
|
254
|
+
expect(attribution[:ssh][:user_known_hosts_file]).to eq 'options_file'
|
255
|
+
expect(attribution[:ssh][:config]).to eq 'preset'
|
256
|
+
expect(attribution[:ssh][:verify_host_key]).to eq 'preset'
|
257
|
+
expect(attribution[:ssh][:port]).to eq 'preset'
|
258
|
+
expect(attribution[:ssh][:forward_agent]).to eq 'preset'
|
259
|
+
expect(attribution[:ssh][:keys]).to eq 'preset'
|
260
|
+
expect(attribution[:ssh][:keepalive]).to eq 'preset'
|
261
|
+
expect(opts[:level]).to eq 'fourth'
|
262
|
+
expect(attribution[:level]).to eq 'options_file'
|
263
263
|
end
|
264
264
|
|
265
265
|
it 'host file CONFIG section has third priority' do
|
@@ -268,8 +268,8 @@ module Beaker
|
|
268
268
|
|
269
269
|
opts = parser.parse_args([])
|
270
270
|
attribution = parser.attribution
|
271
|
-
expect(opts[:level]).to
|
272
|
-
expect(attribution[:level]).to
|
271
|
+
expect(opts[:level]).to eq 'third'
|
272
|
+
expect(attribution[:level]).to eq 'host_file'
|
273
273
|
end
|
274
274
|
|
275
275
|
it 'command line arguments have second priority' do
|
@@ -278,8 +278,8 @@ module Beaker
|
|
278
278
|
|
279
279
|
opts = parser.parse_args([])
|
280
280
|
attribution = parser.attribution
|
281
|
-
expect(opts[:level]).to
|
282
|
-
expect(attribution[:level]).to
|
281
|
+
expect(opts[:level]).to eq 'second'
|
282
|
+
expect(attribution[:level]).to eq 'cmd'
|
283
283
|
end
|
284
284
|
|
285
285
|
it 'env vars have highest priority' do
|
@@ -287,8 +287,8 @@ module Beaker
|
|
287
287
|
|
288
288
|
opts = parser.parse_args([])
|
289
289
|
attribution = parser.attribution
|
290
|
-
expect(opts[:level]).to
|
291
|
-
expect(attribution[:level]).to
|
290
|
+
expect(opts[:level]).to eq 'highest'
|
291
|
+
expect(attribution[:level]).to eq 'env'
|
292
292
|
end
|
293
293
|
|
294
294
|
it "loads the options file from a project file" do
|
@@ -325,12 +325,12 @@ module Beaker
|
|
325
325
|
args = ["-h", hosts_path, "--log-level", log_level, "--type", type, "--install", "PUPPET/1.0,HIERA/hello"]
|
326
326
|
output = parser.parse_args(args)
|
327
327
|
attribution = parser.attribution
|
328
|
-
expect(output[:hosts_file]).to
|
329
|
-
expect(attribution[:hosts_file]).to
|
330
|
-
expect(output[:jenkins_build_url]).to
|
331
|
-
expect(attribution[:jenkins_build_url]).to
|
328
|
+
expect(output[:hosts_file]).to eq hosts_path
|
329
|
+
expect(attribution[:hosts_file]).to eq 'cmd'
|
330
|
+
expect(output[:jenkins_build_url]).to eq build_url
|
331
|
+
expect(attribution[:jenkins_build_url]).to eq 'env'
|
332
332
|
expect(output[:install]).to include('git://github.com/puppetlabs/hiera.git#hello')
|
333
|
-
expect(attribution[:install]).to
|
333
|
+
expect(attribution[:install]).to eq 'runtime'
|
334
334
|
|
335
335
|
ENV["BUILD_URL"] = old_build_url
|
336
336
|
end
|
@@ -567,20 +567,20 @@ module Beaker
|
|
567
567
|
hosts['HOSTS'][:master][:ssh] = { :user => 'hello' }
|
568
568
|
parser.instance_variable_set(:@options, hosts)
|
569
569
|
parser.normalize_args
|
570
|
-
expect(hosts['HOSTS'][:master][:user]).to
|
570
|
+
expect(hosts['HOSTS'][:master][:user]).to eq 'hello'
|
571
571
|
end
|
572
572
|
|
573
573
|
it 'uses default user if there is an ssh hash, but no ssh[:user]' do
|
574
574
|
hosts['HOSTS'][:master][:ssh] = { :hello => 'hello' }
|
575
575
|
parser.instance_variable_set(:@options, hosts)
|
576
576
|
parser.normalize_args
|
577
|
-
expect(hosts['HOSTS'][:master][:user]).to
|
577
|
+
expect(hosts['HOSTS'][:master][:user]).to eq 'root'
|
578
578
|
end
|
579
579
|
|
580
580
|
it 'uses default user if no ssh hash' do
|
581
581
|
parser.instance_variable_set(:@options, hosts)
|
582
582
|
parser.normalize_args
|
583
|
-
expect(hosts['HOSTS'][:master][:user]).to
|
583
|
+
expect(hosts['HOSTS'][:master][:user]).to eq 'root'
|
584
584
|
end
|
585
585
|
end
|
586
586
|
end
|
@@ -88,6 +88,11 @@ module Beaker
|
|
88
88
|
expect(platform.with_version_codename).to be === 'debian-squeeze-xxx'
|
89
89
|
end
|
90
90
|
|
91
|
+
it "can convert ubuntu-2404-xxx to ubuntu-noble-xxx" do
|
92
|
+
@name = 'ubuntu-2404-xxx'
|
93
|
+
expect(platform.with_version_codename).to be === 'ubuntu-noble-xxx'
|
94
|
+
end
|
95
|
+
|
91
96
|
it "can convert ubuntu-2204-xxx to ubuntu-jammy-xxx" do
|
92
97
|
@name = 'ubuntu-2204-xxx'
|
93
98
|
expect(platform.with_version_codename).to be === 'ubuntu-jammy-xxx'
|
@@ -57,23 +57,23 @@ module Beaker
|
|
57
57
|
|
58
58
|
describe 'execute_subcommand' do
|
59
59
|
it "determines if we should execute the init subcommand" do
|
60
|
-
expect(subject.execute_subcommand?("init")).to
|
60
|
+
expect(subject.execute_subcommand?("init")).to eq true
|
61
61
|
end
|
62
62
|
|
63
63
|
it "does not attempt to execute intialize as a subcommand" do
|
64
|
-
expect(subject.execute_subcommand?("initialize")).to
|
64
|
+
expect(subject.execute_subcommand?("initialize")).to eq false
|
65
65
|
end
|
66
66
|
|
67
67
|
it "determines if we should execute the help subcommand" do
|
68
|
-
expect(subject.execute_subcommand?("help")).to
|
68
|
+
expect(subject.execute_subcommand?("help")).to eq true
|
69
69
|
end
|
70
70
|
|
71
71
|
it "determines if we should execute the provision subcommand" do
|
72
|
-
expect(subject.execute_subcommand?("provision")).to
|
72
|
+
expect(subject.execute_subcommand?("provision")).to eq true
|
73
73
|
end
|
74
74
|
|
75
75
|
it "determines that a subcommand should not be executed" do
|
76
|
-
expect(subject.execute_subcommand?("notasubcommand")).to
|
76
|
+
expect(subject.execute_subcommand?("notasubcommand")).to eq false
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|