apt: Allow managing of preferences file.
group :development, :test do
gem 'rake', :require => false
+ gem 'pry', :require => false
gem 'rspec-puppet', :require => false
gem 'puppet-lint', :require => false
gem 'puppetlabs_spec_helper', :require => false
}
'ubuntu': {
case $::lsbdistcodename {
- 'hardy','lucid','maverick','natty','oneiric','precise': {
+ 'hardy','maverick','natty','oneiric','precise': {
$backports_location = 'http://us.archive.ubuntu.com/ubuntu'
+ $ppa_options = '-y'
+ }
+ 'lucid': {
+ $backports_location = 'http://us.archive.ubuntu.com/ubuntu'
+ $ppa_options = undef
}
default: {
$backports_location = 'http://old-releases.ubuntu.com/ubuntu'
+ $ppa_options = '-y'
}
}
}
+ default: {
+ fail("Unsupported osfamily (${::osfamily}) or lsbdistid (${::lsbdistid})")
+ }
}
}
define apt::ppa(
$ensure = 'present',
$release = $::lsbdistcodename,
- $options = '-y'
+ $options = $apt::params::ppa_options,
) {
include apt::params
include apt::update
$download_delta = "0",
$verbose = "0",
) {
+ include apt::params
validate_bool(
$auto_fix,
require 'spec_helper_acceptance'
-describe 'apt::builddep' do
+describe 'apt::builddep', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
context 'reset' do
it 'removes packages' do
- shell('apt-get -y remove glusterfs-server')
+ shell('apt-get -y remove znc')
shell('apt-get -y remove g++')
end
end
it 'should work with no errors' do
pp = <<-EOS
include '::apt'
- apt::builddep { 'glusterfs-server': }
+ apt::builddep { 'znc': }
EOS
apply_manifest(pp, :catch_failures => true)
context 'reset' do
it 'removes packages' do
- shell('apt-get -y remove glusterfs-server')
+ shell('apt-get -y remove znc')
shell('apt-get -y remove g++')
end
end
require 'spec_helper_acceptance'
-describe 'apt::key' do
+describe 'apt::key', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
context 'apt::key' do
it 'should work with no errors' do
pp = <<-EOS
require 'spec_helper_acceptance'
if fact('operatingsystem') == 'Ubuntu'
- describe 'apt::ppa' do
+ describe 'apt::ppa', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
context 'reset' do
it 'removes ppa' do
end
end
- context 'readding a removed ppa.' do
+ context 'reading a removed ppa.' do
it 'setup' do
- shell('add-apt-repository -y ppa:raravena80/collectd5')
# This leaves a blank file
- shell('add-apt-repository --remove ppa:raravena80/collectd5')
+ shell('echo > /etc/apt/sources.list.d/raravena80-collectd5-$(lsb_release -c -s).list')
end
- it 'should readd it successfully' do
+ it 'should read it successfully' do
pp = <<-EOS
include '::apt'
apt::ppa { 'ppa:raravena80/collectd5': }
end
context 'options' do
- context '-y' do
+ context '-y', :unless => default[:platform].match(/10\.04/) do
it 'works without failure' do
pp = <<-EOS
include '::apt'
context 'reset' do
it { shell('rm -rf /etc/apt/sources.list.d/canonical-kernel-team-ppa*', :acceptable_exit_codes => [0,1,2]) }
end
-
end
end
require 'spec_helper_acceptance'
-describe 'apt::source' do
+describe 'apt::source', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
context 'apt::source' do
context 'ensure => present' do
require 'spec_helper_acceptance'
-describe 'apt class' do
+describe 'apt class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
context 'reset' do
it 'fixes the sources.list' do
repos = 'main contrib non-free'
end
-describe 'apt::backports class' do
+describe 'apt::backports class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
context 'defaults' do
it 'should work with no errors' do
pp = <<-EOS
require 'spec_helper_acceptance'
-describe 'apt class' do
+describe 'apt class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
context 'default parameters' do
# Using puppet_apply as a helper
require 'spec_helper_acceptance'
-describe 'apt::conf define' do
+describe 'apt::conf define', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
context 'defaults' do
it 'should work with no errors' do
pp = <<-EOS
codename = fact('lsbdistcodename')
-describe 'apt::force define' do
+describe 'apt::force define', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
context 'defaults' do
it 'should work with no errors' do
pp = <<-EOS
--- /dev/null
+HOSTS:
+ ubuntu-server-10044-x64:
+ roles:
+ - master
+ platform: ubuntu-10.04-amd64
+ box : ubuntu-server-10044-x64-vbox4210-nocm
+ box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-10044-x64-vbox4210-nocm.box
+ hypervisor : vagrant
+CONFIG:
+ log_level: debug
+ type: git
require 'spec_helper_acceptance'
-describe 'apt::pin define' do
+describe 'apt::pin define', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
context 'defaults' do
it 'should work with no errors' do
pp = <<-EOS
require 'spec_helper_acceptance'
-describe 'apt::release class' do
+describe 'apt::release class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
context 'release_id' do
it 'should work with no errors' do
pp = <<-EOS
require 'spec_helper_acceptance'
-describe 'apt::unattended_upgrades class' do
+describe 'apt::unattended_upgrades class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
context 'defaults' do
it 'should work with no errors' do
pp = <<-EOS
--- /dev/null
+require 'spec_helper_acceptance'
+
+describe 'unsupported distributions and OSes', :if => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
+ it 'class apt fails' do
+ pp = <<-EOS
+ class { 'apt': }
+ EOS
+ expect(apply_manifest(pp, :expect_failures => true).stderr).to match(/unsupported/i)
+ end
+end
require 'spec_helper'
describe 'apt', :type => :class do
+ let(:facts) { { :lsbdistid => 'Debian' } }
let :default_params do
{
:disable_keys => :undef,
require 'spec_helper'
describe 'apt::debian::testing', :type => :class do
+ let(:facts) { { :lsbdistid => 'Debian' } }
it {
should contain_apt__source("debian_testing").with({
"location" => "http://debian.mirror.iweb.ca/debian/",
require 'spec_helper'
describe 'apt::debian::unstable', :type => :class do
+ let(:facts) { { :lsbdistid => 'Debian' } }
it {
should contain_apt__source("debian_unstable").with({
"location" => "http://debian.mirror.iweb.ca/debian/",
require 'spec_helper'
describe 'apt::params', :type => :class do
+ let(:facts) { { :lsbdistid => 'Debian' } }
let (:title) { 'my_package' }
it { should contain_apt__params }
require 'spec_helper'
describe 'apt::release', :type => :class do
+ let(:facts) { { :lsbdistid => 'Debian' } }
let (:title) { 'my_package' }
let :param_set do
describe 'apt::unattended_upgrades', :type => :class do
let(:file_unattended) { '/etc/apt/apt.conf.d/50unattended-upgrades' }
let(:file_periodic) { '/etc/apt/apt.conf.d/10periodic' }
+ let(:facts) { { :lsbdistid => 'Debian' } }
it { should contain_package("unattended-upgrades") }
require 'spec_helper'
describe 'apt::builddep', :type => :define do
+ let(:facts) { { :lsbdistid => 'Debian' } }
let(:title) { 'my_package' }
describe "should require apt-get update" do
require 'spec_helper'
describe 'apt::conf', :type => :define do
+ let(:facts) { { :lsbdistid => 'Debian' } }
let :title do
'norecommends'
end
require 'spec_helper'
describe 'apt::force', :type => :define do
+ let(:facts) { { :lsbdistid => 'Debian' } }
let :pre_condition do
'include apt::params'
end
require 'spec_helper'
describe 'apt::key', :type => :define do
+ let(:facts) { { :lsbdistid => 'Debian' } }
let :title do
'8347A27F'
end
require 'spec_helper'
describe 'apt::pin', :type => :define do
+ let(:facts) { { :lsbdistid => 'Debian' } }
let(:title) { 'my_pin' }
let :default_params do
}
end
- [
+ [
{ :params => {},
:content => "# my_pin\nExplanation: : my_pin\nPackage: *\nPin: release a=my_pin\nPin-Priority: 0\n"
},
{
:params => {
- :packages => 'apache',
+ :packages => 'apache',
:priority => '1'
},
:content => "# my_pin\nExplanation: : my_pin\nPackage: apache\nPin: release a=my_pin\nPin-Priority: 1\n"
},
{
:params => {
- :order => 50,
- :packages => 'apache',
+ :order => 50,
+ :packages => 'apache',
:priority => '1'
},
:content => "# my_pin\nExplanation: : my_pin\nPackage: apache\nPin: release a=my_pin\nPin-Priority: 1\n"
require 'spec_helper'
describe 'apt::ppa', :type => :define do
- [ { :lsbdistrelease => '11.04',
+ [
+ {
+ :lsbdistrelease => '11.04',
:lsbdistcodename => 'natty',
:operatingsystem => 'Ubuntu',
- :package => 'python-software-properties'},
- { :lsbdistrelease => '12.10',
+ :lsbdistid => 'Ubuntu',
+ :package => 'python-software-properties'
+ },
+ {
+ :lsbdistrelease => '12.10',
:lsbdistcodename => 'quantal',
:operatingsystem => 'Ubuntu',
- :package => 'software-properties-common'},
+ :lsbdistid => 'Ubuntu',
+ :package => 'software-properties-common'
+ },
].each do |platform|
context "on #{platform[:lsbdistcodename]}" do
let :facts do
{
- :lsbdistrelease => platform[:lsbdistrelease],
+ :lsbdistrelease => platform[:lsbdistrelease],
:lsbdistcodename => platform[:lsbdistcodename],
:operatingsystem => platform[:operatingsystem],
+ :lsbdistid => platform[:lsbdistid],
}
end
let :release do
end
let :facts do
{:lsbdistcodename => '#{platform[:lsbdistcodename]}',
- :operatingsystem => 'Ubuntu'}
+ :operatingsystem => 'Ubuntu',
+ :lsbdistid => 'Ubuntu'}
end
let(:title) { "ppa" }
let(:release) { "#{platform[:lsbdistcodename]}" }
require 'spec_helper'
describe 'apt::source', :type => :define do
+ let(:facts) { { :lsbdistid => 'Debian' } }
let :title do
'my_source'
end
end
let :facts do
- {:lsbdistcodename => 'karmic'}
+ {:lsbdistcodename => 'karmic', :lsbdistid => 'Ubuntu'}
end
let :params do
let(:default_params) { Hash.new }
let(:facts) { Hash.new }
it { expect { should raise_error(Puppet::Error) } }
- let(:facts) { { :lsbdistcodename => 'lucid' } }
+ let(:facts) { { :lsbdistcodename => 'lucid', :lsbdistid => 'Ubuntu' } }
it { should contain_apt__source(title) }
end
end
require 'beaker-rspec'
+# Install Puppet
unless ENV['RS_PROVISION'] == 'no'
hosts.each do |host|
- # Install Puppet
if host.is_pe?
install_pe
else
- install_package host, 'rubygems'
- on host, 'gem install puppet --no-ri --no-rdoc'
+ install_puppet
on host, "mkdir -p #{host['distmoduledir']}"
end
end
end
+UNSUPPORTED_PLATFORMS = ['RedHat','Suse','windows','AIX','Solaris']
+
RSpec.configure do |c|
# Project root
proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))