diff --git a/spec/acceptance/backup_spec.rb b/spec/acceptance/backup_spec.rb index e6bbd17..f021a55 100644 --- a/spec/acceptance/backup_spec.rb +++ b/spec/acceptance/backup_spec.rb @@ -1,104 +1,107 @@ require 'spec_helper_acceptance' describe 'concat backup parameter' do + let :basedir do + default.tmpdir('concat') + end context '=> puppet' do before :all do - shell('rm -rf /tmp/concat') - shell('mkdir -p /tmp/concat') - shell("/bin/echo 'old contents' > /tmp/concat/file") + shell("rm -rf #{basedir}") + shell("mkdir -p #{basedir}") + shell("echo 'old contents' > #{basedir}/file") end pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': backup => 'puppet', } concat::fragment { 'new file': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => 'new contents', } EOS it 'applies the manifest twice with "Filebucketed" stdout and no stderr' do apply_manifest(pp, :catch_failures => true) do |r| expect(r.stderr).to eq("") - expect(r.stdout).to match(/Filebucketed \/tmp\/concat\/file to puppet with sum 0140c31db86293a1a1e080ce9b91305f/) # sum is for file contents of 'old contents' + expect(r.stdout).to match(/Filebucketed #{basedir}\/file to puppet with sum 0140c31db86293a1a1e080ce9b91305f/) # sum is for file contents of 'old contents' end expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should contain 'new contents' } end end context '=> .backup' do before :all do - shell('rm -rf /tmp/concat') - shell('mkdir -p /tmp/concat') - shell("/bin/echo 'old contents' > /tmp/concat/file") + shell("rm -rf #{basedir}") + shell("mkdir -p #{basedir}") + shell("echo 'old contents' > #{basedir}/file") end pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': backup => '.backup', } concat::fragment { 'new file': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => 'new contents', } EOS # XXX Puppet doesn't mention anything about filebucketing with a given # extension like .backup it 'applies the manifest twice no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should contain 'new contents' } end - describe file('/tmp/concat/file.backup') do + describe file("#{basedir}/file.backup") do it { should be_file } it { should contain 'old contents' } end end # XXX The backup parameter uses validate_string() and thus can't be the # boolean false value, but the string 'false' has the same effect in Puppet 3 context "=> 'false'" do before :all do - shell('rm -rf /tmp/concat') - shell('mkdir -p /tmp/concat') - shell("/bin/echo 'old contents' > /tmp/concat/file") + shell("rm -rf #{basedir}") + shell("mkdir -p #{basedir}") + shell("echo 'old contents' > #{basedir}/file") end pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': backup => '.backup', } concat::fragment { 'new file': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => 'new contents', } EOS it 'applies the manifest twice with no "Filebucketed" stdout and no stderr' do apply_manifest(pp, :catch_failures => true) do |r| expect(r.stderr).to eq("") expect(r.stdout).to_not match(/Filebucketed/) end expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should contain 'new contents' } end end end diff --git a/spec/acceptance/concat_spec.rb b/spec/acceptance/concat_spec.rb index 673d793..4480cb5 100644 --- a/spec/acceptance/concat_spec.rb +++ b/spec/acceptance/concat_spec.rb @@ -1,78 +1,81 @@ require 'spec_helper_acceptance' case fact('osfamily') when 'AIX' username = 'root' groupname = 'system' when 'windows' username = 'Administrator' groupname = 'Administrators' else username = 'root' groupname = 'root' end describe 'basic concat test' do + let :basedir do + default.tmpdir('concat') + end shared_examples 'successfully_applied' do |pp| it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end end context 'owner/group' do pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + 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', } EOS 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 username } it { should be_grouped_into groupname } # XXX file be_mode isn't supported on AIX it("should be mode 644", :unless => fact('osfamily') == "AIX") { should be_mode 644 } it { should contain '1' } it { should contain '2' } end - describe file("#{default.puppet['vardir']}/concat/_tmp_concat_file/fragments/01_1") do + describe file("#{default.puppet['vardir']}/concat/#{basedir.gsub('/','_')}_file/fragments/01_1") do it { should be_file } it { should be_owned_by username } it { should be_grouped_into groupname } # XXX file be_mode isn't supported on AIX it("should be mode 644", :unless => fact('osfamily') == "AIX") { should be_mode 644 } end - describe file("#{default.puppet['vardir']}/concat/_tmp_concat_file/fragments/02_2") do + describe file("#{default.puppet['vardir']}/concat/#{basedir.gsub('/','_')}_file/fragments/02_2") do it { should be_file } it { should be_owned_by username } it { should be_grouped_into groupname } # XXX file be_mode isn't supported on AIX it("should be mode 644", :unless => fact('osfamily') == "AIX") { should be_mode 644 } end end end diff --git a/spec/acceptance/empty_spec.rb b/spec/acceptance/empty_spec.rb index f59916d..57970dd 100644 --- a/spec/acceptance/empty_spec.rb +++ b/spec/acceptance/empty_spec.rb @@ -1,23 +1,26 @@ require 'spec_helper_acceptance' describe 'concat force empty parameter' do + let :basedir do + default.tmpdir('concat') + end context 'should run successfully' do pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': mode => '0644', force => true, } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should_not contain '1\n2' } end end end diff --git a/spec/acceptance/fragment_source_spec.rb b/spec/acceptance/fragment_source_spec.rb index 6d3493b..0ec6d49 100644 --- a/spec/acceptance/fragment_source_spec.rb +++ b/spec/acceptance/fragment_source_spec.rb @@ -1,149 +1,152 @@ require 'spec_helper_acceptance' case fact('osfamily') when 'AIX' username = 'root' groupname = 'system' when 'windows' username = 'Administrator' groupname = 'Administrators' else username = 'root' groupname = 'root' end describe 'concat::fragment source' do + let :basedir do + default.tmpdir('concat') + end 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") + shell("/bin/echo 'file1 contents' > #{basedir}/file1") + shell("/bin/echo 'file2 contents' > #{basedir}/file2") end pp = <<-EOS include concat::setup - concat { '/tmp/concat/foo': } + concat { '#{basedir}/foo': } concat::fragment { '1': - target => '/tmp/concat/foo', - source => '/tmp/concat/file1', + target => '#{basedir}/foo', + source => '#{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', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") 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' } it { should contain 'file2 contents' } end 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") + shell("rm -rf #{basedir} #{default.puppet['vardir']}/concat") + shell("mkdir -p #{basedir}") + shell("echo 'file1 contents' > #{basedir}/file1") + shell("echo 'file2 contents' > #{basedir}/file2") end pp = <<-EOS include concat::setup - concat { '/tmp/concat/result_file1': + concat { '#{basedir}/result_file1': owner => '#{username}', group => '#{groupname}', mode => '0644', } - concat { '/tmp/concat/result_file2': + concat { '#{basedir}/result_file2': owner => '#{username}', group => '#{groupname}', mode => '0644', } - concat { '/tmp/concat/result_file3': + 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' ], 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' ], 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' ], order => '01', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") 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' } end 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') + shell("rm -rf #{basedir} #{default.puppet['vardir']}/concat") + shell("mkdir -p #{basedir}") + shell("rm -rf #{basedir}/fail_no_source #{basedir}/nofilehere #{basedir}/nothereeither") end pp = <<-EOS include concat::setup - concat { '/tmp/concat/fail_no_source': + 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 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 } end end end diff --git a/spec/acceptance/newline_spec.rb b/spec/acceptance/newline_spec.rb index 92a78ad..9ecf26b 100644 --- a/spec/acceptance/newline_spec.rb +++ b/spec/acceptance/newline_spec.rb @@ -1,59 +1,62 @@ require 'spec_helper_acceptance' describe 'concat ensure_newline parameter' do + let :basedir do + default.tmpdir('concat') + end context '=> false' do pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': ensure_newline => false, } concat::fragment { '1': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '1', } concat::fragment { '2': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '2', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should contain '12' } end end #context '=> true' do # pp = <<-EOS # include concat::setup - # concat { '/tmp/concat/file': + # concat { '#{basedir}/file': # ensure_newline => true, # } # concat::fragment { '1': - # target => '/tmp/concat/file', + # target => '#{basedir}/file', # content => '1', # } # concat::fragment { '2': - # target => '/tmp/concat/file', + # target => '#{basedir}/file', # content => '2', # } # EOS # it 'applies the manifest twice with no stderr' do # expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") # expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") # #XXX ensure_newline => true causes changes on every run because the files # #are modified in place. # end - # describe file('/tmp/concat/file') do + # describe file("#{basedir}/file") do # it { should be_file } # it { should contain "1\n2\n" } # end #end end diff --git a/spec/acceptance/order_spec.rb b/spec/acceptance/order_spec.rb index e148808..d01cae2 100644 --- a/spec/acceptance/order_spec.rb +++ b/spec/acceptance/order_spec.rb @@ -1,153 +1,159 @@ require 'spec_helper_acceptance' describe 'concat order' do + let :basedir do + default.tmpdir('concat') + end before(:all) do - shell('rm -rf /tmp/concat /var/lib/puppet/concat') - shell('mkdir -p /tmp/concat') + shell("rm -rf #{basedir} #{default.puppet['vardir']}/concat") + shell("mkdir -p #{basedir}") end context '=> alpha' do pp = <<-EOS include concat::setup - concat { '/tmp/concat/foo': + concat { '#{basedir}/foo': order => 'alpha' } concat::fragment { '1': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string1', } concat::fragment { '2': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string2', } concat::fragment { '10': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string10', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/foo') do + describe file("#{basedir}/foo") do it { should be_file } #XXX Solaris 10 doesn't support multi-line grep it("should contain string10\nstring1\nsring2", :unless => fact('osfamily') == 'Solaris') { should contain "string10\nstring1\nsring2" } end end context '=> numeric' do pp = <<-EOS include concat::setup - concat { '/tmp/concat/foo': + concat { '#{basedir}/foo': order => 'numeric' } concat::fragment { '1': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string1', } concat::fragment { '2': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string2', } concat::fragment { '10': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string10', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/foo') do + describe file("#{basedir}/foo") do it { should be_file } #XXX Solaris 10 doesn't support multi-line grep it("should contain string1\nstring2\nsring10", :unless => fact('osfamily') == 'Solaris') { should contain "string1\nstring2\nsring10" } end end end # concat order describe 'concat::fragment order' do + let :basedir do + default.tmpdir('concat') + end before(:all) do - shell('rm -rf /tmp/concat /var/lib/puppet/concat') - shell('mkdir -p /tmp/concat') + shell("rm -rf #{basedir} #{default.puppet['vardir']}/concat") + shell("mkdir -p #{basedir}") end context '=> reverse order' do pp = <<-EOS include concat::setup - concat { '/tmp/concat/foo': } + concat { '#{basedir}/foo': } concat::fragment { '1': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string1', order => '15', } concat::fragment { '2': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string2', # default order 10 } concat::fragment { '3': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string3', order => '1', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/foo') do + describe file("#{basedir}/foo") do it { should be_file } #XXX Solaris 10 doesn't support multi-line grep it("should contain string3\nstring2\nsring1", :unless => fact('osfamily') == 'Solaris') { should contain "string3\nstring2\nsring1" } end end context '=> normal order' do pp = <<-EOS include concat::setup - concat { '/tmp/concat/foo': } + concat { '#{basedir}/foo': } concat::fragment { '1': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string1', order => '01', } concat::fragment { '2': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string2', order => '02' } concat::fragment { '3': - target => '/tmp/concat/foo', + target => '#{basedir}/foo', content => 'string3', order => '03', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/foo') do + describe file("#{basedir}/foo") do it { should be_file } #XXX Solaris 10 doesn't support multi-line grep it("should contain string1\nstring2\nsring3", :unless => fact('osfamily') == 'Solaris') { should contain "string1\nstring2\nsring3" } end end end # concat::fragment order diff --git a/spec/acceptance/replace_spec.rb b/spec/acceptance/replace_spec.rb index 99e9d48..1a468b7 100644 --- a/spec/acceptance/replace_spec.rb +++ b/spec/acceptance/replace_spec.rb @@ -1,248 +1,251 @@ require 'spec_helper_acceptance' describe 'replacement of' do + let :basedir do + default.tmpdir('concat') + end context 'file' do context 'should not succeed' do before(:all) do - shell('mkdir -p /tmp/concat') - shell('echo "file exists" > /tmp/concat/file') + shell("mkdir -p #{basedir}") + shell('echo "file exists" > #{basedir}/file') end after(:all) do - shell('rm -rf /tmp/concat /var/lib/puppet/concat') + shell("rm -rf #{basedir} #{default.puppet['vardir']}/concat") end pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': replace => false, } concat::fragment { '1': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '1', } concat::fragment { '2': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '2', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should contain 'file exists' } it { should_not contain '1' } it { should_not contain '2' } end end context 'should succeed' do before(:all) do - shell('mkdir -p /tmp/concat') - shell('echo "file exists" > /tmp/concat/file') + shell("mkdir -p #{basedir}") + shell("echo "file exists" > #{basedir}/file") end after(:all) do - shell('rm -rf /tmp/concat /var/lib/puppet/concat') + shell("rm -rf #{basedir} #{default.puppet['vardir']}/concat") end pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': replace => true, } concat::fragment { '1': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '1', } concat::fragment { '2': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '2', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should_not contain 'file exists' } it { should contain '1' } it { should contain '2' } end end end # file context 'symlink' do context 'should not succeed' do # XXX the core puppet file type will replace a symlink with a plain file # when using ensure => present and source => ... but it will not when using # ensure => present and content => ...; this is somewhat confusing behavior before(:all) do - shell('mkdir -p /tmp/concat') - shell('ln -s /tmp/concat/dangling /tmp/concat/file') + shell("mkdir -p #{basedir}") + shell("ln -s #{basedir}/dangling #{basedir}/file") end after(:all) do - shell('rm -rf /tmp/concat /var/lib/puppet/concat') + shell("rm -rf #{basedir} #{default.puppet['vardir']}/concat") end pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': replace => false, } concat::fragment { '1': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '1', } concat::fragment { '2': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '2', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end # XXX specinfra doesn't support be_linked_to on AIX - describe file('/tmp/concat/file'), :unless => fact('osfamily') == "AIX" do - it { should be_linked_to '/tmp/concat/dangling' } + describe file("#{basedir}/file"), :unless => fact("osfamily") == "AIX" do + it { should be_linked_to "#{basedir}/dangling" } end - describe file('/tmp/concat/dangling') do + describe file("#{basedir}/dangling") do # XXX serverspec does not have a matcher for 'exists' it { should_not be_file } it { should_not be_directory } end end context 'should succeed' do # XXX the core puppet file type will replace a symlink with a plain file # when using ensure => present and source => ... but it will not when using # ensure => present and content => ...; this is somewhat confusing behavior before(:all) do - shell('mkdir -p /tmp/concat') - shell('ln -s /tmp/concat/dangling /tmp/concat/file') + shell("mkdir -p #{basedir}") + shell("ln -s #{basedir}/dangling #{basedir}/file") end after(:all) do - shell('rm -rf /tmp/concat /var/lib/puppet/concat') + shell("rm -rf #{basedir} #{default.puppet['vardir']}/concat") end pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': replace => true, } concat::fragment { '1': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '1', } concat::fragment { '2': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '2', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should contain '1' } it { should contain '2' } end end end # symlink context 'directory' do context 'should not succeed' do before(:all) do - shell('mkdir -p /tmp/concat/file') + shell("mkdir -p #{basedir}/file") end after(:all) do - shell('rm -rf /tmp/concat /var/lib/puppet/concat') + shell("rm -rf #{basedir} #{default.puppet['vardir']}/concat") end pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': } + concat { '#{basedir}/file': } concat::fragment { '1': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '1', } concat::fragment { '2': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '2', } EOS it 'applies the manifest twice with stderr for changing to file' do expect(apply_manifest(pp, :expect_failures => true).stderr).to match(/change from directory to file failed/) expect(apply_manifest(pp, :expect_failures => true).stderr).to match(/change from directory to file failed/) end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_directory } end end # XXX concat's force param currently enables the creation of empty files # when there are no fragments, and the replace param will only replace # files and symlinks, not directories. The semantics either need to be # changed, extended, or a new param introduced to control directory # replacement. context 'should succeed', :pending => 'not yet implemented' do before(:all) do - shell('mkdir -p /tmp/concat/file') + shell("mkdir -p #{basedir}/file") end after(:all) do - shell('rm -rf /tmp/concat /var/lib/puppet/concat') + shell("rm -rf #{basedir} #{default.puppet['vardir']}/concat") end pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': force => true, } concat::fragment { '1': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '1', } concat::fragment { '2': - target => '/tmp/concat/file', + target => '#{basedir}/file', content => '2', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should contain '1' } end end end # directory end diff --git a/spec/acceptance/symbolic_name_spec.rb b/spec/acceptance/symbolic_name_spec.rb index b1b512f..8481768 100644 --- a/spec/acceptance/symbolic_name_spec.rb +++ b/spec/acceptance/symbolic_name_spec.rb @@ -1,33 +1,36 @@ require 'spec_helper_acceptance' describe 'symbolic name' do + let :basedir do + default.tmpdir('concat') + end pp = <<-EOS include concat::setup concat { 'not_abs_path': - path => '/tmp/concat/file', + path => '#{basedir}/file', } concat::fragment { '1': target => 'not_abs_path', content => '1', order => '01', } concat::fragment { '2': target => 'not_abs_path', content => '2', order => '02', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should contain '1' } it { should contain '2' } end end diff --git a/spec/acceptance/warn_spec.rb b/spec/acceptance/warn_spec.rb index e19c6b5..16947ee 100644 --- a/spec/acceptance/warn_spec.rb +++ b/spec/acceptance/warn_spec.rb @@ -1,100 +1,103 @@ require 'spec_helper_acceptance' describe 'concat warn =>' do + let :basedir do + default.tmpdir('concat') + end context 'true should enable default warning message' do pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': warn => true, } 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', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should contain '# This file is managed by Puppet. DO NOT EDIT.' } it { should contain '1' } it { should contain '2' } end end context 'false should not enable default warning message' do pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': warn => false, } 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', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should_not contain '# This file is managed by Puppet. DO NOT EDIT.' } it { should contain '1' } it { should contain '2' } end end context '# foo should overide default warning message' do pp = <<-EOS include concat::setup - concat { '/tmp/concat/file': + concat { '#{basedir}/file': warn => '# foo', } 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', } EOS it 'applies the manifest twice with no stderr' do expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") end - describe file('/tmp/concat/file') do + describe file("#{basedir}/file") do it { should be_file } it { should contain '# foo' } it { should contain '1' } it { should contain '2' } end end end