538a9f9aab
fix for default debian installations all files in /etc/apt/preferences without _ will be silently ignore according to debian manpage. Addionally its not a good idea to write versionnumber in filename cause there is no way to delete this files if you increase versionumber Update source_spec.rb add a way to include debsrc only (useful for debian/ubuntu build server ... jenkins ect) Update source_spec.rb var rename Update source.list.erb add include_deb "switch" Update source.pp "include_deb" defaultvalue = true Update hold_spec.rb change the name of the preferences file (hold) Update source_spec.rb Update README.md Doku: 'include_deb' included next to 'include_src' in examples Update README.md typo
179 lines
5.4 KiB
Ruby
179 lines
5.4 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'apt::source', :type => :define do
|
|
let(:facts) { { :lsbdistid => 'Debian' } }
|
|
GPG_KEY_ID = '4BD6EC30'
|
|
|
|
let :title do
|
|
'my_source'
|
|
end
|
|
|
|
let :default_params do
|
|
{
|
|
:ensure => 'present',
|
|
:location => '',
|
|
:release => 'karmic',
|
|
:repos => 'main',
|
|
:include_src => true,
|
|
:include_deb => true,
|
|
:required_packages => false,
|
|
:key => false,
|
|
:key_server => false,
|
|
:key_content => false,
|
|
:key_source => false,
|
|
:pin => false
|
|
}
|
|
end
|
|
|
|
[{},
|
|
{
|
|
:location => 'http://example.com',
|
|
:release => 'precise',
|
|
:repos => 'security',
|
|
:include_src => false,
|
|
:required_packages => 'apache',
|
|
:key => GPG_KEY_ID,
|
|
:key_server => 'keyserver.debian.com',
|
|
:pin => '600',
|
|
:key_content => 'ABCD1234'
|
|
},
|
|
{
|
|
:key => GPG_KEY_ID,
|
|
:key_server => 'keyserver.debian.com',
|
|
},
|
|
{
|
|
:ensure => 'absent',
|
|
:location => 'http://example.com',
|
|
:release => 'precise',
|
|
:repos => 'security',
|
|
},
|
|
{
|
|
:release => '',
|
|
},
|
|
{
|
|
:release => 'custom',
|
|
},
|
|
{
|
|
:architecture => 'amd64',
|
|
}
|
|
].each do |param_set|
|
|
describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do
|
|
let :param_hash do
|
|
default_params.merge(param_set)
|
|
end
|
|
|
|
let :facts do
|
|
{:lsbdistcodename => 'karmic', :lsbdistid => 'Ubuntu'}
|
|
end
|
|
|
|
let :params do
|
|
param_set
|
|
end
|
|
|
|
let :filename do
|
|
"/etc/apt/sources.list.d/#{title}.list"
|
|
end
|
|
|
|
let :content do
|
|
content = "#file generated by puppet\n"
|
|
if param_hash[:comment]
|
|
content << "# #{comment}"
|
|
else
|
|
content << "# #{title}"
|
|
end
|
|
if param_hash[:architecture]
|
|
arch = "[arch=#{param_hash[:architecture]}] "
|
|
end
|
|
if param_hash[:include_deb]
|
|
content << "\ndeb #{arch}#{param_hash[:location]} #{param_hash[:release]} #{param_hash[:repos]}\n"
|
|
end
|
|
if param_hash[:include_src]
|
|
content << "deb-src #{arch}#{param_hash[:location]} #{param_hash[:release]} #{param_hash[:repos]}\n"
|
|
end
|
|
content
|
|
end
|
|
|
|
it { should contain_apt__params }
|
|
|
|
it { should contain_file("#{title}.list").with({
|
|
'ensure' => param_hash[:ensure],
|
|
'path' => filename,
|
|
'owner' => 'root',
|
|
'group' => 'root',
|
|
'mode' => '0644',
|
|
'content' => content,
|
|
})
|
|
}
|
|
|
|
it {
|
|
if param_hash[:pin]
|
|
should contain_apt__pin(title).with({
|
|
"priority" => param_hash[:pin],
|
|
"before" => "File[#{title}.list]"
|
|
})
|
|
else
|
|
should_not contain_apt__pin(title).with({
|
|
"priority" => param_hash[:pin],
|
|
"before" => "File[#{title}.list]"
|
|
})
|
|
end
|
|
}
|
|
|
|
it {
|
|
should contain_exec("apt_update").with({
|
|
"command" => "/usr/bin/apt-get update",
|
|
"refreshonly" => true
|
|
})
|
|
}
|
|
|
|
it {
|
|
if param_hash[:required_packages]
|
|
should contain_exec("Required packages: '#{param_hash[:required_packages]}' for #{title}").with({
|
|
"command" => "/usr/bin/apt-get -y install #{param_hash[:required_packages]}",
|
|
"subscribe" => "File[#{title}.list]",
|
|
"refreshonly" => true,
|
|
"before" => 'Exec[apt_update]',
|
|
})
|
|
else
|
|
should_not contain_exec("Required packages: '#{param_hash[:required_packages]}' for #{title}").with({
|
|
"command" => "/usr/bin/apt-get -y install #{param_hash[:required_packages]}",
|
|
"subscribe" => "File[#{title}.list]",
|
|
"refreshonly" => true
|
|
})
|
|
end
|
|
}
|
|
|
|
it {
|
|
key_server = param_hash[:key_server] || nil
|
|
key_content = param_hash[:key_content] || nil
|
|
key_source = param_hash[:key_source] || nil
|
|
if param_hash[:key]
|
|
should contain_apt__key("Add key: #{param_hash[:key]} from Apt::Source #{title}").with({
|
|
"key" => param_hash[:key],
|
|
"ensure" => :present,
|
|
"key_server" => key_server,
|
|
"key_content" => key_content,
|
|
"key_source" => key_source,
|
|
"before" => "File[#{title}.list]"
|
|
})
|
|
else
|
|
should_not contain_apt__key("Add key: #{param_hash[:key]} from Apt::Source #{title}").with({
|
|
"key" => param_hash[:key],
|
|
"ensure" => :present,
|
|
"key_server" => param_hash[:key_server],
|
|
"key_content" => param_hash[:key_content],
|
|
"key_source" => param_hash[:key_source],
|
|
"before" => "File[#{title}.list]"
|
|
})
|
|
end
|
|
}
|
|
end
|
|
end
|
|
describe "without release should raise a Puppet::Error" do
|
|
let(:default_params) { Hash.new }
|
|
let(:facts) { Hash.new }
|
|
it { expect { should raise_error(Puppet::Error) } }
|
|
let(:facts) { { :lsbdistcodename => 'lucid', :lsbdistid => 'Ubuntu' } }
|
|
it { should contain_apt__source(title) }
|
|
end
|
|
end
|