fuel-library/deployment/puppet/concat/spec/acceptance/deprecation_warnings_spec.rb
Bartłomiej Piotrowski bcc88b940a Merge puppetlabs/concat 1.2.3
While 2.x has been already released, it will most likely break our
manifests in subtle ways[1]. The fix is scheduled for Puppet 5.0[2].

[1] https://tickets.puppetlabs.com/browse/MODULES-2104
[2] https://tickets.puppetlabs.com/browse/PUP-1963

Commit: 5997e65f18eb78cd7dbce818eb29354e49d5a038
Source: https://github.com/puppetlabs/puppetlabs-concat/

Implements: blueprint upgrade-openstack-puppet-modules
Change-Id: Idc9bb8647d311f797ef7d3ae5a95d0b90ad00ad1
2015-06-15 10:29:06 +00:00

239 lines
7.1 KiB
Ruby

require 'spec_helper_acceptance'
describe 'deprecation warnings' do
basedir = default.tmpdir('concat')
shared_examples 'has_warning' do |pp, w|
it 'applies the manifest twice with a stderr regex' do
expect(apply_manifest(pp, :catch_failures => true).stderr).to match(/#{Regexp.escape(w)}/m)
expect(apply_manifest(pp, :catch_changes => true).stderr).to match(/#{Regexp.escape(w)}/m)
end
end
context 'concat gnu parameter' do
pp = <<-EOS
concat { '#{basedir}/file':
gnu => 'foo',
}
concat::fragment { 'foo':
target => '#{basedir}/file',
content => 'bar',
}
EOS
w = 'The $gnu parameter to concat is deprecated and has no effect'
it_behaves_like 'has_warning', pp, w
end
context 'concat warn parameter =>' do
['true', 'yes', 'on'].each do |warn|
context warn do
pp = <<-EOS
concat { '#{basedir}/file':
warn => '#{warn}',
}
concat::fragment { 'foo':
target => '#{basedir}/file',
content => 'bar',
}
EOS
w = 'Using stringified boolean values (\'true\', \'yes\', \'on\', \'false\', \'no\', \'off\') to represent boolean true/false as the $warn parameter to concat is deprecated and will be treated as the warning message in a future release'
it_behaves_like 'has_warning', pp, w
describe file("#{basedir}/file") do
it { should be_file }
its(:content) {
should match '# This file is managed by Puppet. DO NOT EDIT.'
should match 'bar'
}
end
end
end
['false', 'no', 'off'].each do |warn|
context warn do
pp = <<-EOS
concat { '#{basedir}/file':
warn => '#{warn}',
}
concat::fragment { 'foo':
target => '#{basedir}/file',
content => 'bar',
}
EOS
w = 'Using stringified boolean values (\'true\', \'yes\', \'on\', \'false\', \'no\', \'off\') to represent boolean true/false as the $warn parameter to concat is deprecated and will be treated as the warning message in a future release'
it_behaves_like 'has_warning', pp, w
describe file("#{basedir}/file") do
it { should be_file }
its(:content) {
should_not match '# This file is managed by Puppet. DO NOT EDIT.'
should match 'bar'
}
end
end
end
end
context 'concat::fragment ensure parameter', :unless => fact('osfamily') == 'windows' do
context 'target file exists' do
before(:all) do
pp = <<-EOS
file { '#{basedir}':
ensure => directory,
}
file { '#{basedir}/file1':
content => "file1 contents\n",
}
EOS
apply_manifest(pp)
end
pp = <<-EOS
concat { '#{basedir}/file': }
concat::fragment { 'foo':
target => '#{basedir}/file',
ensure => '#{basedir}/file1',
}
EOS
w = 'Passing a value other than \'present\' or \'absent\' as the $ensure parameter to concat::fragment is deprecated. If you want to use the content of a file as a fragment please use the $source parameter.'
it_behaves_like 'has_warning', pp, w
describe file("#{basedir}/file") do
it { should be_file }
its(:content) { should match 'file1 contents' }
end
describe 'the fragment can be changed from a symlink to a plain file', :unless => (fact("osfamily") == "windows") do
pp = <<-EOS
concat { '#{basedir}/file': }
concat::fragment { 'foo':
target => '#{basedir}/file',
content => 'new content',
}
EOS
it 'applies the manifest twice with no stderr' do
apply_manifest(pp, :catch_failures => true)
apply_manifest(pp, :catch_changes => true)
end
describe file("#{basedir}/file") do
it { should be_file }
its(:content) {
should match 'new content'
should_not match 'file1 contents'
}
end
end
end # target file exists
context 'target does not exist', :unless => fact('osfamily') == 'windows' do
pp = <<-EOS
concat { '#{basedir}/file': }
concat::fragment { 'foo':
target => '#{basedir}/file',
ensure => '#{basedir}/file1',
}
EOS
w = 'Passing a value other than \'present\' or \'absent\' as the $ensure parameter to concat::fragment is deprecated. If you want to use the content of a file as a fragment please use the $source parameter.'
it_behaves_like 'has_warning', pp, w
describe file("#{basedir}/file") do
it { should be_file }
end
describe 'the fragment can be changed from a symlink to a plain file', :unless => (fact('osfamily') == 'windows') do
pp = <<-EOS
concat { '#{basedir}/file': }
concat::fragment { 'foo':
target => '#{basedir}/file',
content => 'new content',
}
EOS
it 'applies the manifest twice with no stderr' do
apply_manifest(pp, :catch_failures => true)
apply_manifest(pp, :catch_changes => true)
end
describe file("#{basedir}/file") do
it { should be_file }
its(:content) { should match 'new content' }
end
end
end # target file exists
end # concat::fragment ensure parameter
context 'concat::fragment mode parameter' do
pp = <<-EOS
concat { '#{basedir}/file': }
concat::fragment { 'foo':
target => '#{basedir}/file',
content => 'bar',
mode => 'bar',
}
EOS
w = 'The $mode parameter to concat::fragment is deprecated and has no effect'
it_behaves_like 'has_warning', pp, w
end
context 'concat::fragment owner parameter' do
pp = <<-EOS
concat { '#{basedir}/file': }
concat::fragment { 'foo':
target => '#{basedir}/file',
content => 'bar',
owner => 'bar',
}
EOS
w = 'The $owner parameter to concat::fragment is deprecated and has no effect'
it_behaves_like 'has_warning', pp, w
end
context 'concat::fragment group parameter' do
pp = <<-EOS
concat { '#{basedir}/file': }
concat::fragment { 'foo':
target => '#{basedir}/file',
content => 'bar',
group => 'bar',
}
EOS
w = 'The $group parameter to concat::fragment is deprecated and has no effect'
it_behaves_like 'has_warning', pp, w
end
context 'concat::fragment backup parameter' do
pp = <<-EOS
concat { '#{basedir}/file': }
concat::fragment { 'foo':
target => '#{basedir}/file',
content => 'bar',
backup => 'bar',
}
EOS
w = 'The $backup parameter to concat::fragment is deprecated and has no effect'
it_behaves_like 'has_warning', pp, w
end
context 'include concat::setup' do
pp = <<-EOS
include concat::setup
EOS
w = 'concat::setup is deprecated as a public API of the concat module and should no longer be directly included in the manifest.'
it_behaves_like 'has_warning', pp, w
end
end