beaker 1.12.2 → 1.13.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 +5 -5
- data/beaker.gemspec +1 -1
- data/lib/beaker/cli.rb +2 -1
- data/lib/beaker/dsl/helpers.rb +74 -18
- data/lib/beaker/dsl/install_utils.rb +172 -39
- data/lib/beaker/host.rb +6 -3
- data/lib/beaker/host/unix/pkg.rb +22 -1
- data/lib/beaker/host/windows.rb +1 -0
- data/lib/beaker/host/windows/pkg.rb +7 -2
- data/lib/beaker/host_prebuilt_steps.rb +22 -21
- data/lib/beaker/hypervisor/docker.rb +1 -1
- data/lib/beaker/hypervisor/vagrant.rb +13 -0
- data/lib/beaker/junit.xsl +268 -0
- data/lib/beaker/logger.rb +25 -5
- data/lib/beaker/options/command_line_parser.rb +8 -8
- data/lib/beaker/options/presets.rb +5 -1
- data/lib/beaker/platform.rb +1 -0
- data/lib/beaker/ssh_connection.rb +15 -11
- data/lib/beaker/tasks/rake_task.rb +114 -0
- data/lib/beaker/tasks/test.rb +18 -0
- data/lib/beaker/test_case.rb +6 -0
- data/lib/beaker/test_suite.rb +316 -191
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/dsl/helpers_spec.rb +98 -25
- data/spec/beaker/dsl/install_utils_spec.rb +26 -12
- data/spec/beaker/host/unix/pkg_spec.rb +109 -0
- data/spec/beaker/host_prebuilt_steps_spec.rb +2 -18
- data/spec/beaker/host_spec.rb +3 -2
- data/spec/beaker/hypervisor/docker_spec.rb +1 -1
- data/spec/beaker/options/command_line_parser_spec.rb +2 -2
- data/spec/beaker/puppet_command_spec.rb +2 -2
- data/spec/beaker/ssh_connection_spec.rb +9 -8
- data/spec/beaker/test_suite_spec.rb +108 -0
- metadata +9 -4
data/lib/beaker/version.rb
CHANGED
@@ -210,6 +210,74 @@ describe ClassMixedWithDSLHelpers do
|
|
210
210
|
end
|
211
211
|
end
|
212
212
|
|
213
|
+
describe '#create_tmpdir_for_user' do
|
214
|
+
let(:host) { double.as_null_object }
|
215
|
+
let(:result) { double.as_null_object }
|
216
|
+
|
217
|
+
before :each do
|
218
|
+
allow(host).to receive(:result).and_return(result)
|
219
|
+
allow(result).to receive(:exit_code).and_return(0)
|
220
|
+
allow(result).to receive(:stdout).and_return('puppet')
|
221
|
+
end
|
222
|
+
|
223
|
+
context 'with no user argument' do
|
224
|
+
|
225
|
+
context 'with no path name argument' do
|
226
|
+
context 'without puppet installed on host' do
|
227
|
+
it 'raises an error' do
|
228
|
+
allow(host).to receive(:tmpdir).and_return("tmpdirname")
|
229
|
+
allow(result).to receive(:exit_code).and_return(1)
|
230
|
+
expect(subject).to receive(:on).with(host, /^puppet.*/).and_return(result)
|
231
|
+
expect{
|
232
|
+
subject.create_tmpdir_for_user host
|
233
|
+
}.to raise_error(RuntimeError, /`puppet master --configprint` failed,/)
|
234
|
+
end
|
235
|
+
end
|
236
|
+
context 'with puppet installed on host' do
|
237
|
+
it 'executes chown once' do
|
238
|
+
expect(subject).to receive(:on).with(host, /^puppet.*/).and_return(result)
|
239
|
+
expect(subject).to receive(:on).with(host, /^getent passwd puppet/).and_return(result)
|
240
|
+
expect(host).to receive(:tmpdir).with(/\/tmp\/beaker.*/)
|
241
|
+
expect(subject).to receive(:on).with(host, /chown puppet.puppet.*/)
|
242
|
+
subject.create_tmpdir_for_user(host)
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
context 'with path name argument' do
|
248
|
+
it 'executes chown once' do
|
249
|
+
expect(subject).to receive(:on).with(host, /^puppet.*/).and_return(result)
|
250
|
+
expect(subject).to receive(:on).with(host, /^getent passwd puppet/).and_return(result)
|
251
|
+
expect(host).to receive(:tmpdir).with(/\/tmp\/bogus.*/).and_return("/tmp/bogus")
|
252
|
+
expect(subject).to receive(:on).with(host, /chown puppet.puppet \/tmp\/bogus.*/)
|
253
|
+
subject.create_tmpdir_for_user(host, "/tmp/bogus")
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
end
|
258
|
+
|
259
|
+
context 'with an invalid user argument' do
|
260
|
+
it 'executes chown once' do
|
261
|
+
allow(result).to receive(:stdout).and_return('curiousgeorge')
|
262
|
+
expect(subject).to receive(:on).with(host, /^getent passwd curiousgeorge/).and_return(result)
|
263
|
+
expect(host).to receive(:tmpdir).with(/\/tmp\/bogus.*/).and_return("/tmp/bogus")
|
264
|
+
expect(subject).to receive(:on).with(host, /chown curiousgeorge.curiousgeorge \/tmp\/bogus.*/)
|
265
|
+
subject.create_tmpdir_for_user(host, "/tmp/bogus", "curiousgeorge")
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
context 'with a valid user argument' do
|
270
|
+
it 'executes chown once' do
|
271
|
+
allow(result).to receive(:exit_code).and_return(1)
|
272
|
+
expect(subject).to receive(:on).with(host, /^getent passwd curiousgeorge/).and_return(result)
|
273
|
+
expect{
|
274
|
+
subject.create_tmpdir_for_user(host, "/tmp/bogus", "curiousgeorge")
|
275
|
+
}.to raise_error(RuntimeError, /User curiousgeorge does not exist on/)
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
279
|
+
end
|
280
|
+
|
213
281
|
describe '#run_script_on' do
|
214
282
|
it 'scps the script to a tmpdir and executes it on host(s)' do
|
215
283
|
subject.should_receive( :scp_to )
|
@@ -320,7 +388,7 @@ describe ClassMixedWithDSLHelpers do
|
|
320
388
|
it 'calls puppet' do
|
321
389
|
subject.should_receive( :create_remote_file ).and_return( true )
|
322
390
|
subject.should_receive( :puppet ).
|
323
|
-
|
391
|
+
# with( 'apply', '--verbose', 'agent' ).
|
324
392
|
and_return( 'puppet_command' )
|
325
393
|
|
326
394
|
subject.should_receive( :on ).
|
@@ -336,22 +404,19 @@ describe ClassMixedWithDSLHelpers do
|
|
336
404
|
subject.should_receive( :create_remote_file ).twice.and_return( true )
|
337
405
|
the_hosts.each do |host|
|
338
406
|
subject.should_receive( :puppet ).
|
339
|
-
with( 'apply', '--verbose', host.to_s ).
|
340
407
|
and_return( 'puppet_command' )
|
341
408
|
|
342
409
|
subject.should_receive( :on ).
|
343
|
-
with( host, 'puppet_command',
|
344
|
-
:acceptable_exit_codes => [0, 1] ).ordered
|
410
|
+
with( host, 'puppet_command', :acceptable_exit_codes => [0] )
|
345
411
|
end
|
346
412
|
|
347
|
-
result = subject.apply_manifest_on( the_hosts, 'include foobar'
|
413
|
+
result = subject.apply_manifest_on( the_hosts, 'include foobar' )
|
348
414
|
result.should(be_an(Array))
|
349
415
|
end
|
350
416
|
|
351
417
|
it 'adds acceptable exit codes with :catch_failures' do
|
352
418
|
subject.should_receive( :create_remote_file ).and_return( true )
|
353
419
|
subject.should_receive( :puppet ).
|
354
|
-
with( 'apply', '--verbose', '--trace', '--detailed-exitcodes', 'agent' ).
|
355
420
|
and_return( 'puppet_command' )
|
356
421
|
|
357
422
|
subject.should_receive( :on ).
|
@@ -360,13 +425,11 @@ describe ClassMixedWithDSLHelpers do
|
|
360
425
|
|
361
426
|
subject.apply_manifest_on( agent,
|
362
427
|
'class { "boo": }',
|
363
|
-
:trace => true,
|
364
428
|
:catch_failures => true )
|
365
429
|
end
|
366
430
|
it 'allows acceptable exit codes through :catch_failures' do
|
367
431
|
subject.should_receive( :create_remote_file ).and_return( true )
|
368
432
|
subject.should_receive( :puppet ).
|
369
|
-
with( 'apply', '--verbose', '--trace', '--detailed-exitcodes', 'agent' ).
|
370
433
|
and_return( 'puppet_command' )
|
371
434
|
|
372
435
|
subject.should_receive( :on ).
|
@@ -376,13 +439,11 @@ describe ClassMixedWithDSLHelpers do
|
|
376
439
|
subject.apply_manifest_on( agent,
|
377
440
|
'class { "boo": }',
|
378
441
|
:acceptable_exit_codes => [4],
|
379
|
-
:trace => true,
|
380
442
|
:catch_failures => true )
|
381
443
|
end
|
382
444
|
it 'enforces a 0 exit code through :catch_changes' do
|
383
445
|
subject.should_receive( :create_remote_file ).and_return( true )
|
384
446
|
subject.should_receive( :puppet ).
|
385
|
-
with( 'apply', '--verbose', '--trace', '--detailed-exitcodes', 'agent' ).
|
386
447
|
and_return( 'puppet_command' )
|
387
448
|
|
388
449
|
subject.should_receive( :on ).with(
|
@@ -394,14 +455,12 @@ describe ClassMixedWithDSLHelpers do
|
|
394
455
|
subject.apply_manifest_on(
|
395
456
|
agent,
|
396
457
|
'class { "boo": }',
|
397
|
-
:trace => true,
|
398
458
|
:catch_changes => true
|
399
459
|
)
|
400
460
|
end
|
401
461
|
it 'enforces a 2 exit code through :expect_changes' do
|
402
462
|
subject.should_receive( :create_remote_file ).and_return( true )
|
403
463
|
subject.should_receive( :puppet ).
|
404
|
-
with( 'apply', '--verbose', '--trace', '--detailed-exitcodes', 'agent' ).
|
405
464
|
and_return( 'puppet_command' )
|
406
465
|
|
407
466
|
subject.should_receive( :on ).with(
|
@@ -413,14 +472,12 @@ describe ClassMixedWithDSLHelpers do
|
|
413
472
|
subject.apply_manifest_on(
|
414
473
|
agent,
|
415
474
|
'class { "boo": }',
|
416
|
-
:trace => true,
|
417
475
|
:expect_changes => true
|
418
476
|
)
|
419
477
|
end
|
420
478
|
it 'enforces exit codes through :expect_failures' do
|
421
479
|
subject.should_receive( :create_remote_file ).and_return( true )
|
422
480
|
subject.should_receive( :puppet ).
|
423
|
-
with( 'apply', '--verbose', '--trace', '--detailed-exitcodes', 'agent' ).
|
424
481
|
and_return( 'puppet_command' )
|
425
482
|
|
426
483
|
subject.should_receive( :on ).with(
|
@@ -432,7 +489,6 @@ describe ClassMixedWithDSLHelpers do
|
|
432
489
|
subject.apply_manifest_on(
|
433
490
|
agent,
|
434
491
|
'class { "boo": }',
|
435
|
-
:trace => true,
|
436
492
|
:expect_failures => true
|
437
493
|
)
|
438
494
|
end
|
@@ -441,7 +497,6 @@ describe ClassMixedWithDSLHelpers do
|
|
441
497
|
subject.apply_manifest_on(
|
442
498
|
agent,
|
443
499
|
'class { "boo": }',
|
444
|
-
:trace => true,
|
445
500
|
:expect_failures => true,
|
446
501
|
:catch_failures => true
|
447
502
|
)
|
@@ -450,7 +505,6 @@ describe ClassMixedWithDSLHelpers do
|
|
450
505
|
it 'enforces added exit codes through :expect_failures' do
|
451
506
|
subject.should_receive( :create_remote_file ).and_return( true )
|
452
507
|
subject.should_receive( :puppet ).
|
453
|
-
with( 'apply', '--verbose', '--trace', '--detailed-exitcodes', 'agent' ).
|
454
508
|
and_return( 'puppet_command' )
|
455
509
|
|
456
510
|
subject.should_receive( :on ).with(
|
@@ -463,27 +517,46 @@ describe ClassMixedWithDSLHelpers do
|
|
463
517
|
agent,
|
464
518
|
'class { "boo": }',
|
465
519
|
:acceptable_exit_codes => (1..5),
|
466
|
-
:trace => true,
|
467
520
|
:expect_failures => true
|
468
521
|
)
|
469
522
|
end
|
470
523
|
|
471
524
|
it 'can set the --parser future flag' do
|
472
525
|
subject.should_receive( :create_remote_file ).and_return( true )
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
526
|
+
|
527
|
+
expect( subject ).to receive( :on ).with {|h, command, opts|
|
528
|
+
cmdline = command.cmd_line( h )
|
529
|
+
expect( h ).to be == agent
|
530
|
+
expect( cmdline ).to include('puppet apply')
|
531
|
+
expect( cmdline ).to include('--parser=future')
|
532
|
+
expect( cmdline ).to include('--detailed-exitcodes')
|
533
|
+
expect( cmdline ).to include('--verbose')
|
534
|
+
}
|
535
|
+
|
536
|
+
subject.apply_manifest_on(
|
477
537
|
agent,
|
478
|
-
'
|
479
|
-
:acceptable_exit_codes =>
|
538
|
+
'class { "boo": }',
|
539
|
+
:acceptable_exit_codes => (1..5),
|
540
|
+
:future_parser => true,
|
541
|
+
:expect_failures => true
|
480
542
|
)
|
543
|
+
end
|
481
544
|
|
545
|
+
it 'can set the --noops flag' do
|
546
|
+
subject.should_receive( :create_remote_file ).and_return( true )
|
547
|
+
expect( subject ).to receive( :on ).with {|h, command, opts|
|
548
|
+
cmdline = command.cmd_line( h )
|
549
|
+
expect( h ).to be == agent
|
550
|
+
expect( cmdline ).to include('puppet apply')
|
551
|
+
expect( cmdline ).to include('--detailed-exitcodes')
|
552
|
+
expect( cmdline ).to include('--verbose')
|
553
|
+
expect( cmdline ).to include('--noop')
|
554
|
+
}
|
482
555
|
subject.apply_manifest_on(
|
483
556
|
agent,
|
484
557
|
'class { "boo": }',
|
485
558
|
:acceptable_exit_codes => (1..5),
|
486
|
-
:
|
559
|
+
:noop => true,
|
487
560
|
:expect_failures => true
|
488
561
|
)
|
489
562
|
end
|
@@ -297,6 +297,16 @@ describe ClassMixedWithDSLInstallUtils do
|
|
297
297
|
expect(subject).to receive(:on).with(hosts[0], 'yum install -y puppet')
|
298
298
|
subject.install_puppet
|
299
299
|
end
|
300
|
+
it 'installs specific version of puppet when passed :version' do
|
301
|
+
expect(subject).to receive(:on).with(hosts[0], 'yum install -y puppet-3000')
|
302
|
+
subject.install_puppet( :version => '3000' )
|
303
|
+
end
|
304
|
+
it 'can install specific versions of puppets dependencies' do
|
305
|
+
expect(subject).to receive(:on).with(hosts[0], 'yum install -y puppet-3000')
|
306
|
+
expect(subject).to receive(:on).with(hosts[0], 'yum install -y hiera-2001')
|
307
|
+
expect(subject).to receive(:on).with(hosts[0], 'yum install -y facter-1999')
|
308
|
+
subject.install_puppet( :version => '3000', :facter_version => '1999', :hiera_version => '2001' )
|
309
|
+
end
|
300
310
|
end
|
301
311
|
context 'on el-5' do
|
302
312
|
let(:platform) { "el-5-i386" }
|
@@ -316,30 +326,34 @@ describe ClassMixedWithDSLInstallUtils do
|
|
316
326
|
end
|
317
327
|
context 'on debian' do
|
318
328
|
let(:platform) { "debian-7-amd64" }
|
319
|
-
it 'installs' do
|
329
|
+
it 'installs latest if given no version info' do
|
320
330
|
expect(subject).to receive(:on).with(hosts[0], /puppetlabs-release-\$\(lsb_release -c -s\)\.deb/)
|
321
331
|
expect(subject).to receive(:on).with(hosts[0], 'dpkg -i puppetlabs-release-$(lsb_release -c -s).deb')
|
322
332
|
expect(subject).to receive(:on).with(hosts[0], 'apt-get update')
|
323
333
|
expect(subject).to receive(:on).with(hosts[0], 'apt-get install -y puppet')
|
324
334
|
subject.install_puppet
|
325
335
|
end
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
expect(subject).to receive(:on).with(hosts[0], '
|
332
|
-
expect(subject).to receive(:on).with(hosts[0], 'apt-get
|
333
|
-
expect(subject).to receive(:on).with(hosts[0], 'apt-get install -y
|
334
|
-
subject.install_puppet
|
336
|
+
it 'installs specific version of puppet when passed :version' do
|
337
|
+
expect(subject).to receive(:on).with(hosts[0], 'apt-get install -y puppet=3000-1puppetlabs1')
|
338
|
+
subject.install_puppet( :version => '3000' )
|
339
|
+
end
|
340
|
+
it 'can install specific versions of puppets dependencies' do
|
341
|
+
expect(subject).to receive(:on).with(hosts[0], 'apt-get install -y puppet=3000-1puppetlabs1')
|
342
|
+
expect(subject).to receive(:on).with(hosts[0], 'apt-get install -y hiera=2001-1puppetlabs1')
|
343
|
+
expect(subject).to receive(:on).with(hosts[0], 'apt-get install -y facter=1999-1puppetlabs1')
|
344
|
+
subject.install_puppet( :version => '3000', :facter_version => '1999', :hiera_version => '2001' )
|
335
345
|
end
|
336
346
|
end
|
337
|
-
|
347
|
+
describe 'on unsupported platforms' do
|
338
348
|
let(:platform) { 'solaris-11-x86_64' }
|
339
|
-
it 'raises an error' do
|
349
|
+
it 'by default raises an error' do
|
340
350
|
expect(subject).to_not receive(:on)
|
341
351
|
expect { subject.install_puppet }.to raise_error(/unsupported platform/)
|
342
352
|
end
|
353
|
+
it 'falls back to installing from gem when given :default_action => "gem_install"' do
|
354
|
+
expect(subject).to receive(:on).with(hosts[0], /gem install/)
|
355
|
+
subject.install_puppet :default_action => 'gem_install'
|
356
|
+
end
|
343
357
|
end
|
344
358
|
end
|
345
359
|
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Beaker
|
4
|
+
describe Unix::Pkg do
|
5
|
+
class UnixPkgTest
|
6
|
+
include Unix::Pkg
|
7
|
+
|
8
|
+
def initialize(hash, logger)
|
9
|
+
@hash = hash
|
10
|
+
@logger = logger
|
11
|
+
end
|
12
|
+
|
13
|
+
def [](k)
|
14
|
+
@hash[k]
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_s
|
18
|
+
"me"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
let (:opts) { @opts || {} }
|
23
|
+
let (:logger) { double( 'logger' ).as_null_object }
|
24
|
+
let (:instance) { UnixPkgTest.new(opts, logger) }
|
25
|
+
|
26
|
+
context "check_for_package" do
|
27
|
+
|
28
|
+
it "runs the correctly on sles" do
|
29
|
+
@opts = {'platform' => 'sles-is-me'}
|
30
|
+
pkg = 'sles_package'
|
31
|
+
Beaker::Command.should_receive(:new).with("zypper se -i --match-exact #{pkg}").and_return('')
|
32
|
+
instance.should_receive(:exec).with('', :acceptable_exit_codes => (0...127)).and_return(generate_result("hello", {:exit_code => 0}))
|
33
|
+
expect( instance.check_for_package(pkg) ).to be === true
|
34
|
+
end
|
35
|
+
|
36
|
+
it "runs the correctly on fedora" do
|
37
|
+
@opts = {'platform' => 'fedora-is-me'}
|
38
|
+
pkg = 'fedora_package'
|
39
|
+
Beaker::Command.should_receive(:new).with("rpm -q #{pkg}").and_return('')
|
40
|
+
instance.should_receive(:exec).with('', :acceptable_exit_codes => (0...127)).and_return(generate_result("hello", {:exit_code => 0}))
|
41
|
+
expect( instance.check_for_package(pkg) ).to be === true
|
42
|
+
end
|
43
|
+
|
44
|
+
it "runs the correctly on centos" do
|
45
|
+
@opts = {'platform' => 'centos-is-me'}
|
46
|
+
pkg = 'centos_package'
|
47
|
+
Beaker::Command.should_receive(:new).with("rpm -q #{pkg}").and_return('')
|
48
|
+
instance.should_receive(:exec).with('', :acceptable_exit_codes => (0...127)).and_return(generate_result("hello", {:exit_code => 0}))
|
49
|
+
expect( instance.check_for_package(pkg) ).to be === true
|
50
|
+
end
|
51
|
+
|
52
|
+
it "runs the correctly on el-" do
|
53
|
+
@opts = {'platform' => 'el-is-me'}
|
54
|
+
pkg = 'el_package'
|
55
|
+
Beaker::Command.should_receive(:new).with("rpm -q #{pkg}").and_return('')
|
56
|
+
instance.should_receive(:exec).with('', :acceptable_exit_codes => (0...127)).and_return(generate_result("hello", {:exit_code => 0}))
|
57
|
+
expect( instance.check_for_package(pkg) ).to be === true
|
58
|
+
end
|
59
|
+
|
60
|
+
it "runs the correctly on debian" do
|
61
|
+
@opts = {'platform' => 'debian-is-me'}
|
62
|
+
pkg = 'debian_package'
|
63
|
+
Beaker::Command.should_receive(:new).with("dpkg -s #{pkg}").and_return('')
|
64
|
+
instance.should_receive(:exec).with('', :acceptable_exit_codes => (0...127)).and_return(generate_result("hello", {:exit_code => 0}))
|
65
|
+
expect( instance.check_for_package(pkg) ).to be === true
|
66
|
+
end
|
67
|
+
|
68
|
+
it "runs the correctly on ubuntu" do
|
69
|
+
@opts = {'platform' => 'ubuntu-is-me'}
|
70
|
+
pkg = 'ubuntu_package'
|
71
|
+
Beaker::Command.should_receive(:new).with("dpkg -s #{pkg}").and_return('')
|
72
|
+
instance.should_receive(:exec).with('', :acceptable_exit_codes => (0...127)).and_return(generate_result("hello", {:exit_code => 0}))
|
73
|
+
expect( instance.check_for_package(pkg) ).to be === true
|
74
|
+
end
|
75
|
+
|
76
|
+
it "runs the correctly on solaris-11" do
|
77
|
+
@opts = {'platform' => 'solaris-11-is-me'}
|
78
|
+
pkg = 'solaris-11_package'
|
79
|
+
Beaker::Command.should_receive(:new).with("pkg info #{pkg}").and_return('')
|
80
|
+
instance.should_receive(:exec).with('', :acceptable_exit_codes => (0...127)).and_return(generate_result("hello", {:exit_code => 0}))
|
81
|
+
expect( instance.check_for_package(pkg) ).to be === true
|
82
|
+
end
|
83
|
+
|
84
|
+
it "runs the correctly on solaris-10" do
|
85
|
+
@opts = {'platform' => 'solaris-10-is-me'}
|
86
|
+
pkg = 'solaris-10_package'
|
87
|
+
Beaker::Command.should_receive(:new).with("pkginfo #{pkg}").and_return('')
|
88
|
+
instance.should_receive(:exec).with('', :acceptable_exit_codes => (0...127)).and_return(generate_result("hello", {:exit_code => 0}))
|
89
|
+
expect( instance.check_for_package(pkg) ).to be === true
|
90
|
+
end
|
91
|
+
|
92
|
+
it "returns false for el-4" do
|
93
|
+
@opts = {'platform' => 'el-4-is-me'}
|
94
|
+
pkg = 'el-4_package'
|
95
|
+
expect( instance.check_for_package(pkg) ).to be === false
|
96
|
+
end
|
97
|
+
|
98
|
+
it "raises on unknown platform" do
|
99
|
+
@opts = {'platform' => 'nope-is-me'}
|
100
|
+
pkg = 'nope_package'
|
101
|
+
expect{ instance.check_for_package(pkg) }.to raise_error
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
@@ -6,7 +6,7 @@ describe Beaker do
|
|
6
6
|
let( :apt_cfg ) { Beaker::HostPrebuiltSteps::APT_CFG }
|
7
7
|
let( :ips_pkg_repo ) { Beaker::HostPrebuiltSteps::IPS_PKG_REPO }
|
8
8
|
let( :sync_cmd ) { Beaker::HostPrebuiltSteps::ROOT_KEYS_SYNC_CMD }
|
9
|
-
let( :
|
9
|
+
let( :windows_pkgs ) { Beaker::HostPrebuiltSteps::WINDOWS_PACKAGES }
|
10
10
|
let( :unix_only_pkgs ) { Beaker::HostPrebuiltSteps::UNIX_PACKAGES }
|
11
11
|
let( :sles_only_pkgs ) { Beaker::HostPrebuiltSteps::SLES_PACKAGES }
|
12
12
|
let( :platform ) { @platform || 'unix' }
|
@@ -310,10 +310,6 @@ describe Beaker do
|
|
310
310
|
it "can validate unix hosts" do
|
311
311
|
|
312
312
|
hosts.each do |host|
|
313
|
-
pkgs.each do |pkg|
|
314
|
-
host.should_receive( :check_for_package ).with( pkg ).once.and_return( false )
|
315
|
-
host.should_receive( :install_package ).with( pkg ).once
|
316
|
-
end
|
317
313
|
unix_only_pkgs.each do |pkg|
|
318
314
|
host.should_receive( :check_for_package ).with( pkg ).once.and_return( false )
|
319
315
|
host.should_receive( :install_package ).with( pkg ).once
|
@@ -329,14 +325,10 @@ describe Beaker do
|
|
329
325
|
@platform = 'windows'
|
330
326
|
|
331
327
|
hosts.each do |host|
|
332
|
-
|
328
|
+
windows_pkgs.each do |pkg|
|
333
329
|
host.should_receive( :check_for_package ).with( pkg ).once.and_return( false )
|
334
330
|
host.should_receive( :install_package ).with( pkg ).once
|
335
331
|
end
|
336
|
-
unix_only_pkgs.each do |pkg|
|
337
|
-
host.should_receive( :check_for_package).with( pkg ).never
|
338
|
-
host.should_receive( :install_package ).with( pkg ).never
|
339
|
-
end
|
340
332
|
end
|
341
333
|
|
342
334
|
subject.validate_host(hosts, logger)
|
@@ -347,14 +339,6 @@ describe Beaker do
|
|
347
339
|
@platform = 'sles-13.1-x64'
|
348
340
|
|
349
341
|
hosts.each do |host|
|
350
|
-
pkgs.each do |pkg|
|
351
|
-
host.should_receive( :check_for_package ).with( pkg ).once.and_return( false )
|
352
|
-
host.should_receive( :install_package ).with( pkg ).once
|
353
|
-
end
|
354
|
-
unix_only_pkgs.each do |pkg|
|
355
|
-
host.should_receive( :check_for_package).with( pkg ).never
|
356
|
-
host.should_receive( :install_package ).with( pkg ).never
|
357
|
-
end
|
358
342
|
sles_only_pkgs.each do |pkg|
|
359
343
|
host.should_receive( :check_for_package).with( pkg ).once.and_return( false )
|
360
344
|
host.should_receive( :install_package ).with( pkg ).once
|