9f59f1b33a
In APT preferences files the only allowed comments are lines that start with `Explanation:`, commented lines that start with a # trigger a myriad of interesting bugs. This is considered a feature of APT. Because we're only ever writing a single file at a time with only a # comment at the top we were getting away with this but it shouldn't be there in the first place.
120 lines
3.4 KiB
Ruby
120 lines
3.4 KiB
Ruby
require 'spec_helper'
|
|
describe 'apt::pin', :type => :define do
|
|
let(:facts) { { :lsbdistid => 'Debian' } }
|
|
let(:title) { 'my_pin' }
|
|
|
|
let :default_params do
|
|
{
|
|
:ensure => 'present',
|
|
:order => '',
|
|
:packages => '*',
|
|
:priority => '0',
|
|
:release => nil
|
|
}
|
|
end
|
|
|
|
[
|
|
{ :params => {},
|
|
:content => "Explanation: : my_pin\nPackage: *\nPin: release a=my_pin\nPin-Priority: 0\n"
|
|
},
|
|
{
|
|
:params => {
|
|
:packages => 'apache',
|
|
:priority => '1'
|
|
},
|
|
:content => "Explanation: : my_pin\nPackage: apache\nPin: release a=my_pin\nPin-Priority: 1\n"
|
|
},
|
|
{
|
|
:params => {
|
|
:order => 50,
|
|
:packages => 'apache',
|
|
:priority => '1'
|
|
},
|
|
:content => "Explanation: : my_pin\nPackage: apache\nPin: release a=my_pin\nPin-Priority: 1\n"
|
|
},
|
|
{
|
|
:params => {
|
|
:ensure => 'absent',
|
|
:packages => 'apache',
|
|
:priority => '1'
|
|
},
|
|
:content => "Explanation: : my_pin\nPackage: apache\nPin: release a=my_pin\nPin-Priority: 1\n"
|
|
},
|
|
{
|
|
:params => {
|
|
:packages => 'apache',
|
|
:priority => '1',
|
|
:release => 'my_newpin'
|
|
},
|
|
:content => "Explanation: : my_pin\nPackage: apache\nPin: release a=my_newpin\nPin-Priority: 1\n"
|
|
},
|
|
{
|
|
:params => {
|
|
:packages => 'apache',
|
|
:priority => '1',
|
|
:version => '2.2.16*'
|
|
},
|
|
:content => "Explanation: : my_pin\nPackage: apache\nPin: version 2.2.16*\nPin-Priority: 1\n"
|
|
},
|
|
{
|
|
:params => {
|
|
:priority => '1',
|
|
:origin => 'ftp.de.debian.org'
|
|
},
|
|
:content => "Explanation: : my_pin\nPackage: *\nPin: origin ftp.de.debian.org\nPin-Priority: 1\n"
|
|
},
|
|
{
|
|
:params => {
|
|
:packages => 'apache',
|
|
:priority => '1',
|
|
:release => 'stable',
|
|
:codename => 'wheezy',
|
|
:release_version => '3.0',
|
|
:component => 'main',
|
|
:originator => 'Debian',
|
|
:label => 'Debian'
|
|
},
|
|
:content => "Explanation: : my_pin\nPackage: apache\nPin: release a=stable, n=wheezy, v=3.0, c=main, o=Debian, l=Debian\nPin-Priority: 1\n"
|
|
},
|
|
{
|
|
:params => {
|
|
:packages => ['apache', 'ntop'],
|
|
},
|
|
:content => "Explanation: : my_pin\nPackage: apache ntop\nPin: release a=my_pin\nPin-Priority: 0\n"
|
|
},
|
|
].each do |param_set|
|
|
describe "when #{param_set == {} ? "using default" : "specifying"} define parameters" do
|
|
let :param_hash do
|
|
default_params.merge(param_set[:params])
|
|
end
|
|
|
|
let :params do
|
|
param_set[:params]
|
|
end
|
|
|
|
it { should contain_class("apt::params") }
|
|
|
|
it { should contain_file("#{title}.pref").with({
|
|
'ensure' => param_hash[:ensure],
|
|
'path' => "/etc/apt/preferences.d/#{param_hash[:order] == '' ? "" : "#{param_hash[:order]}-"}#{title}.pref",
|
|
'owner' => 'root',
|
|
'group' => 'root',
|
|
'mode' => '0644',
|
|
'content' => param_set[:content],
|
|
})
|
|
}
|
|
end
|
|
end
|
|
|
|
describe 'resource title with invalid chars' do
|
|
context 'spaces' do
|
|
let(:title) { 'oh my god this is not valid' }
|
|
it { should contain_file('oh_my_god_this_is_not_valid.pref') }
|
|
end
|
|
|
|
context '#$&*$' do
|
|
let(:title) { 'so && many $* invalid @! things' }
|
|
it { should contain_file('so____many____invalid____things.pref') }
|
|
end
|
|
end
|
|
end
|