X-Git-Url: https://git.adam-barratt.org.uk/?p=mirror%2Fdsa-puppet.git;a=blobdiff_plain;f=3rdparty%2Fmodules%2Fconcat%2Fspec%2Facceptance%2Ffragment_source_spec.rb;h=614bd96a1c62993af6da853aa294692fab415dc6;hp=b208979ac75c40c2caf5560ace709f7c92c4dbfd;hb=30caaa85aed7015ca0d77216bff175eebd917eb7;hpb=6f656bd4265e3dab13b9af2bf96e9044322e9d8f diff --git a/3rdparty/modules/concat/spec/acceptance/fragment_source_spec.rb b/3rdparty/modules/concat/spec/acceptance/fragment_source_spec.rb index b208979ac..614bd96a1 100644 --- a/3rdparty/modules/concat/spec/acceptance/fragment_source_spec.rb +++ b/3rdparty/modules/concat/spec/acceptance/fragment_source_spec.rb @@ -1,156 +1,143 @@ require 'spec_helper_acceptance' -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' +case os[:family] +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' do - basedir = default.tmpdir('concat') - context 'should read file fragments from local system' do - pp = <<-EOS - file { '#{basedir}/file1': - content => "file1 contents\n" - } - file { '#{basedir}/file2': - content => "file2 contents\n" - } - concat { '#{basedir}/foo': } + before(:all) do + @basedir = setup_test_directory + end - concat::fragment { '1': - target => '#{basedir}/foo', - source => '#{basedir}/file1', - require => File['#{basedir}/file1'], - } - concat::fragment { '2': - target => '#{basedir}/foo', - content => 'string1 contents', - } - concat::fragment { '3': - target => '#{basedir}/foo', - source => '#{basedir}/file2', - require => File['#{basedir}/file2'], - } - EOS + describe 'when run should read file fragments from local system' do + let(:pp) do + <<-MANIFEST + file { '#{@basedir}/file1': + content => "file1 contents\n" + } + file { '#{@basedir}/file2': + content => "file2 contents\n" + } + concat { '#{@basedir}/foo': } - it 'applies the manifest twice with no stderr' do - apply_manifest(pp, :catch_failures => true) - apply_manifest(pp, :catch_changes => true) + concat::fragment { '1': + target => '#{@basedir}/foo', + source => '#{@basedir}/file1', + require => File['#{@basedir}/file1'], + } + concat::fragment { '2': + target => '#{@basedir}/foo', + content => 'string1 contents', + } + concat::fragment { '3': + target => '#{@basedir}/foo', + source => '#{@basedir}/file2', + require => File['#{@basedir}/file2'], + } + MANIFEST end - describe file("#{basedir}/foo") do - it { should be_file } - its(:content) { - should match 'file1 contents' - should match 'string1 contents' - should match 'file2 contents' - } + it 'idempotent, file matches' do + idempotent_apply(pp) + expect(file("#{@basedir}/foo")).to be_file + expect(file("#{@basedir}/foo").content).to match 'file1 contents' + expect(file("#{@basedir}/foo").content).to match 'file2 contents' end - end # should read file fragments from local system - - context 'should create files containing first match only.' do - pp = <<-EOS - 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 { '#{basedir}/result_file2': - owner => '#{username}', - group => '#{groupname}', - mode => '0644', - } - concat { '#{basedir}/result_file3': - owner => '#{username}', - group => '#{groupname}', - mode => '0644', - } + end - concat::fragment { '1': - target => '#{basedir}/result_file1', - source => [ '#{basedir}/file1', '#{basedir}/file2' ], - require => [ File['#{basedir}/file1'], File['#{basedir}/file2'] ], - order => '01', - } - concat::fragment { '2': - target => '#{basedir}/result_file2', - source => [ '#{basedir}/file2', '#{basedir}/file1' ], - require => [ File['#{basedir}/file1'], File['#{basedir}/file2'] ], - order => '01', - } - concat::fragment { '3': - target => '#{basedir}/result_file3', - source => [ '#{basedir}/file1', '#{basedir}/file2' ], - require => [ File['#{basedir}/file1'], File['#{basedir}/file2'] ], - order => '01', - } - EOS + describe 'when run should create files containing first match only.' do + let(:pp) do + <<-MANIFEST + 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 { '#{@basedir}/result_file2': + owner => '#{username}', + group => '#{groupname}', + mode => '0644', + } + concat { '#{@basedir}/result_file3': + owner => '#{username}', + group => '#{groupname}', + mode => '0644', + } - it 'applies the manifest twice with no stderr' do - apply_manifest(pp, :catch_failures => true) - apply_manifest(pp, :catch_changes => true) + concat::fragment { '1': + target => '#{@basedir}/result_file1', + source => [ '#{@basedir}/file1', '#{@basedir}/file2' ], + require => [ File['#{@basedir}/file1'], File['#{@basedir}/file2'] ], + order => '01', + } + concat::fragment { '2': + target => '#{@basedir}/result_file2', + source => [ '#{@basedir}/file2', '#{@basedir}/file1' ], + require => [ File['#{@basedir}/file1'], File['#{@basedir}/file2'] ], + order => '01', + } + concat::fragment { '3': + target => '#{@basedir}/result_file3', + source => [ '#{@basedir}/file1', '#{@basedir}/file2' ], + require => [ File['#{@basedir}/file1'], File['#{@basedir}/file2'] ], + order => '01', + } + MANIFEST end - describe file("#{basedir}/result_file1") do - it { should be_file } - its(:content) { - should match 'file1 contents' - should_not match 'file2 contents' - } - end - describe file("#{basedir}/result_file2") do - it { should be_file } - its(:content) { - should match 'file2 contents' - should_not match 'file1 contents' - } - end - describe file("#{basedir}/result_file3") do - it { should be_file } - its(:content) { - should match 'file1 contents' - should_not match 'file2 contents' - } + + it 'idempotent, files match' do + idempotent_apply(pp) + expect(file("#{@basedir}/result_file1")).to be_file + expect(file("#{@basedir}/result_file1").content).to match 'file1 contents' + expect(file("#{@basedir}/result_file1").content).not_to match 'file2 contents' + + expect(file("#{@basedir}/result_file2")).to be_file + expect(file("#{@basedir}/result_file2").content).to match 'file2 contents' + expect(file("#{@basedir}/result_file2").content).not_to match 'file1 contents' + + expect(file("#{@basedir}/result_file3")).to be_file + expect(file("#{@basedir}/result_file3").content).to match 'file1 contents' + expect(file("#{@basedir}/result_file3").content).not_to match 'file2 contents' end end - context 'should fail if no match on source.' do - pp = <<-EOS - concat { '#{basedir}/fail_no_source': - owner => '#{username}', - group => '#{groupname}', - mode => '0644', - } + describe 'when run should fail if no match on source.' do + let(:pp) do + <<-MANIFEST + concat { '#{@basedir}/fail_no_source': + owner => '#{username}', + group => '#{groupname}', + mode => '0644', + } - concat::fragment { '1': - target => '#{basedir}/fail_no_source', - source => [ '#{basedir}/nofilehere', '#{basedir}/nothereeither' ], - order => '01', - } - EOS + concat::fragment { '1': + target => '#{@basedir}/fail_no_source', + source => [ '#{@basedir}/nofilehere', '#{@basedir}/nothereeither' ], + order => '01', + } + MANIFEST + end it 'applies the manifest with resource failures' do - expect(apply_manifest(pp, :catch_failures => true).stderr).to match(/Failed to generate additional resources using 'eval_generate'/) - end - describe file("#{basedir}/fail_no_source") do - #FIXME: Serverspec::Type::File doesn't support exists? for some reason. so... hack. - it { should_not be_directory } + expect(apply_manifest(pp, expect_failures: true).stderr).to match(%r{Failed to generate additional resources using 'eval_generate'}) + expect(file("#{@basedir}/fail_no_source")).not_to be_directory end end end -