diff --git a/spec/acceptance/concat_spec.rb b/spec/acceptance/concat_spec.rb index 8a45e97..3668217 100644 --- a/spec/acceptance/concat_spec.rb +++ b/spec/acceptance/concat_spec.rb @@ -1,6 +1,22 @@ require 'spec_helper_acceptance' -describe 'basic concat test' do +case fact('osfamily') +when 'AIX' + username = 'root' + groupname = 'system' +when 'Darwin' + username = 'root' + groupname = 'wheel' +when 'windows' + username = 'Administrator' + groupname = 'Administrators' +else + username = 'root' + groupname = 'root' +end + +describe 'basic concat test', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do + basedir = default.tmpdir('concat') shared_examples 'successfully_applied' do |pp| it 'applies the manifest twice with no stderr' do @@ -10,64 +26,64 @@ describe 'basic concat test' do describe file("#{default['puppetvardir']}/concat") do it { should be_directory } - it { should be_owned_by 'root' } - it { should be_grouped_into 'root' } + it { should be_owned_by username } + it { should be_grouped_into groupname } it { should be_mode 755 } end describe file("#{default['puppetvardir']}/concat/bin") do it { should be_directory } - it { should be_owned_by 'root' } - it { should be_grouped_into 'root' } + it { should be_owned_by username } + it { should be_grouped_into groupname } it { should be_mode 755 } end describe file("#{default['puppetvardir']}/concat/bin/concatfragments.sh") do it { should be_file } - it { should be_owned_by 'root' } - #it { should be_grouped_into 'root' } + it { should be_owned_by username } + #it { should be_grouped_into groupname } it { should be_mode 755 } end describe file("#{default['puppetvardir']}/concat/_tmp_concat_file") do it { should be_directory } - it { should be_owned_by 'root' } - it { should be_grouped_into 'root' } + it { should be_owned_by username } + it { should be_grouped_into groupname } it { should be_mode 750 } end describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments") do it { should be_directory } - it { should be_owned_by 'root' } - it { should be_grouped_into 'root' } + it { should be_owned_by username } + it { should be_grouped_into groupname } it { should be_mode 750 } end describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments.concat") do it { should be_file } - it { should be_owned_by 'root' } - it { should be_grouped_into 'root' } + it { should be_owned_by username } + it { should be_grouped_into groupname } it { should be_mode 640 } end describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments.concat.out") do it { should be_file } - it { should be_owned_by 'root' } - it { should be_grouped_into 'root' } + it { should be_owned_by username } + it { should be_grouped_into groupname } it { should be_mode 640 } end end context 'owner/group root' do pp = <<-EOS - concat { '/tmp/concat/file': - owner => 'root', - group => 'root', + concat { '#{basedir}/file': + owner => '#{username}', + group => '#{groupname}', mode => '0644', } concat::fragment { '1': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '1', order => '01', } concat::fragment { '2': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '2', order => '02', } @@ -75,89 +91,34 @@ describe 'basic concat test' do it_behaves_like 'successfully_applied', pp - describe file('/tmp/concat/file') do + describe file('#{basedir}/file') do it { should be_file } - it { should be_owned_by 'root' } - it { should be_grouped_into 'root' } + it { should be_owned_by username } + it { should be_grouped_into groupname } it { should be_mode 644 } it { should contain '1' } it { should contain '2' } end describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments/01_1") do it { should be_file } - it { should be_owned_by 'root' } - it { should be_grouped_into 'root' } + it { should be_owned_by username } + it { should be_grouped_into groupname } it { should be_mode 640 } end describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments/02_2") do it { should be_file } - it { should be_owned_by 'root' } - it { should be_grouped_into 'root' } + it { should be_owned_by username } + it { should be_grouped_into groupname } it { should be_mode 640 } end end - context 'owner/group non-root' do - before(:all) do - shell "groupadd -g 64444 bob" - shell "useradd -u 42 -g 64444 bob" - end - after(:all) do - shell "userdel bob" - end - - pp=" - concat { '/tmp/concat/file': - owner => 'bob', - group => 'bob', - mode => '0644', - } - - concat::fragment { '1': - target => '/tmp/concat/file', - content => '1', - order => '01', - } - - concat::fragment { '2': - target => '/tmp/concat/file', - content => '2', - order => '02', - } - " - - it_behaves_like 'successfully_applied', pp - - describe file('/tmp/concat/file') do - it { should be_file } - it { should be_owned_by 'bob' } - it { should be_grouped_into 'bob' } - it { should be_mode 644 } - it { should contain '1' } - it { should contain '2' } - end - describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments/01_1") do - it { should be_file } - it { should be_owned_by 'root' } - it { should be_grouped_into 'root' } - it { should be_mode 640 } - it { should contain '1' } - end - describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments/02_2") do - it { should be_file } - it { should be_owned_by 'root' } - it { should be_grouped_into 'root' } - it { should be_mode 640 } - it { should contain '2' } - end - end - context 'ensure' do context 'works when set to present with path set' do pp=" concat { 'file': ensure => present, - path => '/tmp/concat/file', + path => '#{basedir}/file', mode => '0644', } concat::fragment { '1': @@ -169,7 +130,7 @@ describe 'basic concat test' do it_behaves_like 'successfully_applied', pp - describe file('/tmp/concat/file') do + describe file('#{basedir}/file') do it { should be_file } it { should be_mode 644 } it { should contain '1' } @@ -179,7 +140,7 @@ describe 'basic concat test' do pp=" concat { 'file': ensure => absent, - path => '/tmp/concat/file', + path => '#{basedir}/file', mode => '0644', } concat::fragment { '1': @@ -193,10 +154,10 @@ describe 'basic concat test' do # absent is set. it 'applies the manifest twice with no stderr' do apply_manifest(pp, :catch_failures => true) - apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) end - describe file('/tmp/concat/file') do + describe file('#{basedir}/file') do it { should_not be_file } end end diff --git a/spec/acceptance/fragment_source_spec.rb b/spec/acceptance/fragment_source_spec.rb index 7edd380..9c5427a 100644 --- a/spec/acceptance/fragment_source_spec.rb +++ b/spec/acceptance/fragment_source_spec.rb @@ -1,26 +1,45 @@ require 'spec_helper_acceptance' -describe 'concat::fragment source' do - context 'should read file fragments from local system' do - before(:all) do - shell("/bin/echo 'file1 contents' > /tmp/concat/file1") - shell("/bin/echo 'file2 contents' > /tmp/concat/file2") - end +case fact('osfamily') +when 'AIX' + username = 'root' + groupname = 'system' +when 'Darwin' + username = 'root' + groupname = 'wheel' +when 'windows' + username = 'Administrator' + groupname = 'Administrators' +else + username = 'root' + groupname = 'root' +end +describe 'concat::fragment source', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do + basedir = default.tmpdir('concat') + context 'should read file fragments from local system' do pp = <<-EOS - concat { '/tmp/concat/foo': } + file { '#{basedir}/file1': + content => "file1 contents\n" + } + file { '#{basedir}/file2': + content => "file2 contents\n" + } + concat { '#{basedir}/foo': } concat::fragment { '1': - target => '/tmp/concat/foo', - source => '/tmp/concat/file1', + target => '#{basedir}/foo', + source => '#{basedir}/file1', + require => File['#{basedir}/file1'], } concat::fragment { '2': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string1 contents', } concat::fragment { '3': - target => '/tmp/concat/foo', - source => '/tmp/concat/file2', + target => '#{basedir}/foo', + source => '#{basedir}/file2', + require => File['#{basedir}/file2'], } EOS @@ -29,7 +48,7 @@ describe 'concat::fragment source' do apply_manifest(pp, :catch_changes => true) end - describe file('/tmp/concat/foo') do + describe file('#{basedir}/foo') do it { should be_file } it { should contain 'file1 contents' } it { should contain 'string1 contents' } @@ -38,43 +57,45 @@ describe 'concat::fragment source' do end # should read file fragments from local system context 'should create files containing first match only.' do - before(:all) do - shell('rm -rf /tmp/concat /var/lib/puppet/concat') - shell('mkdir -p /tmp/concat') - shell("/bin/echo 'file1 contents' > /tmp/concat/file1") - shell("/bin/echo 'file2 contents' > /tmp/concat/file2") - end - pp = <<-EOS - concat { '/tmp/concat/result_file1': - owner => root, - group => root, + file { '#{basedir}/file1': + content => "file1 contents\n" + } + file { '#{basedir}/file2': + content => "file2 contents\n" + } + concat { '#{basedir}/result_file1': + owner => '#{username}', + group => '#{groupname}', mode => '0644', } - concat { '/tmp/concat/result_file2': - owner => root, - group => root, + concat { '#{basedir}/result_file2': + owner => '#{username}', + group => '#{groupname}', mode => '0644', } - concat { '/tmp/concat/result_file3': - owner => root, - group => root, + concat { '#{basedir}/result_file3': + owner => '#{username}', + group => '#{groupname}', mode => '0644', } concat::fragment { '1': - target => '/tmp/concat/result_file1', - source => [ '/tmp/concat/file1', '/tmp/concat/file2' ], + target => '#{basedir}/result_file1', + source => [ '#{basedir}/file1', '#{basedir}/file2' ], + require => [ File['#{basedir}/file1'], File['#{basedir}/file2'] ], order => '01', } concat::fragment { '2': - target => '/tmp/concat/result_file2', - source => [ '/tmp/concat/file2', '/tmp/concat/file1' ], + target => '#{basedir}/result_file2', + source => [ '#{basedir}/file2', '#{basedir}/file1' ], + require => [ File['#{basedir}/file1'], File['#{basedir}/file2'] ], order => '01', } concat::fragment { '3': - target => '/tmp/concat/result_file3', - source => [ '/tmp/concat/file1', '/tmp/concat/file2' ], + target => '#{basedir}/result_file3', + source => [ '#{basedir}/file1', '#{basedir}/file2' ], + require => [ File['#{basedir}/file1'], File['#{basedir}/file2'] ], order => '01', } EOS @@ -83,17 +104,17 @@ describe 'concat::fragment source' do apply_manifest(pp, :catch_failures => true) apply_manifest(pp, :catch_changes => true) end - describe file('/tmp/concat/result_file1') do + describe file('#{basedir}/result_file1') do it { should be_file } it { should contain 'file1 contents' } it { should_not contain 'file2 contents' } end - describe file('/tmp/concat/result_file2') do + describe file('#{basedir}/result_file2') do it { should be_file } it { should contain 'file2 contents' } it { should_not contain 'file1 contents' } end - describe file('/tmp/concat/result_file3') do + describe file('#{basedir}/result_file3') do it { should be_file } it { should contain 'file1 contents' } it { should_not contain 'file2 contents' } @@ -101,22 +122,16 @@ describe 'concat::fragment source' do end context 'should fail if no match on source.' do - before(:all) do - shell('rm -rf /tmp/concat /var/lib/puppet/concat') - shell('mkdir -p /tmp/concat') - shell('/bin/rm -rf /tmp/concat/fail_no_source /tmp/concat/nofilehere /tmp/concat/nothereeither') - end - pp = <<-EOS - concat { '/tmp/concat/fail_no_source': - owner => root, - group => root, + concat { '#{basedir}/fail_no_source': + owner => '#{username}', + group => '#{groupname}', mode => '0644', } concat::fragment { '1': - target => '/tmp/concat/fail_no_source', - source => [ '/tmp/concat/nofilehere', '/tmp/concat/nothereeither' ], + target => '#{basedir}/fail_no_source', + source => [ '#{basedir}/nofilehere', '#{basedir}/nothereeither' ], order => '01', } EOS @@ -124,7 +139,7 @@ describe 'concat::fragment source' do it 'applies the manifest with resource failures' do apply_manifest(pp, :expect_failures => true) end - describe file('/tmp/concat/fail_no_source') do + describe file('#{basedir}/fail_no_source') do #FIXME: Serverspec::Type::File doesn't support exists? for some reason. so... hack. it { should_not be_file } it { should_not be_directory }