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
         
     |