2 describe 'apt::ppa', :type => :define do
5 :lsbdistrelease => '11.04',
6 :lsbdistcodename => 'natty',
7 :operatingsystem => 'Ubuntu',
8 :lsbdistid => 'Ubuntu',
9 :package => 'python-software-properties'
12 :lsbdistrelease => '12.10',
13 :lsbdistcodename => 'quantal',
14 :operatingsystem => 'Ubuntu',
15 :lsbdistid => 'Ubuntu',
16 :package => 'software-properties-common'
19 context "on #{platform[:lsbdistcodename]}" do
22 :lsbdistrelease => platform[:lsbdistrelease],
23 :lsbdistcodename => platform[:lsbdistcodename],
24 :operatingsystem => platform[:operatingsystem],
25 :lsbdistid => platform[:lsbdistid],
26 :osfamily => 'Debian',
30 "#{platform[:lsbdistcodename]}"
33 "#{platform[:package]}"
38 ['ppa:dans_ppa', 'dans_ppa','ppa:dans-daily/ubuntu'].each do |t|
39 describe "with title #{t}" do
47 t.sub(/^ppa:/,'').gsub('/','-') << "-" << "#{release}.list"
50 it { should contain_package("#{package}") }
52 it { should contain_exec("apt_update").with(
53 'command' => '/usr/bin/apt-get update',
58 it { should contain_exec("add-apt-repository-#{t}").with(
59 'command' => "/usr/bin/add-apt-repository #{options} #{t}",
60 'unless' => "/usr/bin/test -s /etc/apt/sources.list.d/#{filename}",
61 'require' => ["File[sources.list.d]", "Package[#{package}]"],
62 'notify' => "Exec[apt_update]"
66 it { should create_file("/etc/apt/sources.list.d/#{filename}").with(
68 'require' => "Exec[add-apt-repository-#{t}]"
73 describe 'without a proxy defined' do
83 "#{title}-#{release}.list"
86 it { should contain_exec("add-apt-repository-#{title}").with(
88 'command' => "/usr/bin/add-apt-repository #{options} #{title}",
89 'unless' => "/usr/bin/test -s /etc/apt/sources.list.d/#{filename}",
90 'require' => ["File[sources.list.d]", "Package[#{package}]"],
91 'notify' => "Exec[apt_update]"
96 describe 'behind a proxy' do
100 let :pre_condition do
102 proxy_host => "user:pass@proxy",
106 "#{title}-#{release}.list"
109 it { should contain_exec("add-apt-repository-#{title}").with(
111 "http_proxy=http://user:pass@proxy:8080",
112 "https_proxy=http://user:pass@proxy:8080",
114 'command' => "/usr/bin/add-apt-repository #{options} #{title}",
115 'unless' => "/usr/bin/test -s /etc/apt/sources.list.d/#{filename}",
116 'require' => ["File[sources.list.d]", "Package[#{package}]"],
117 'notify' => "Exec[apt_update]"
124 [ { :lsbdistcodename => 'natty',
125 :package => 'python-software-properties' },
126 { :lsbdistcodename => 'quantal',
127 :package => 'software-properties-common'},
129 context "on #{platform[:lsbdistcodename]}" do
130 describe "it should not error if package['#{platform[:package]}'] is already defined" do
131 let :pre_condition do
133 'package { "#{platform[:package]}": }->Apt::Ppa["ppa"]'
136 {:lsbdistcodename => '#{platform[:lsbdistcodename]}',
137 :operatingsystem => 'Ubuntu',
138 :lsbdistid => 'Ubuntu',
139 :osfamily => 'Debian'}
141 let(:title) { "ppa" }
142 let(:release) { "#{platform[:lsbdistcodename]}" }
143 it { should contain_package('#{platform[:package]}') }
148 describe "without Class[apt] should raise a Puppet::Error" do
149 let(:release) { "natty" }
150 let(:title) { "ppa" }
151 it { expect { should contain_apt__ppa(title) }.to raise_error(Puppet::Error) }
154 describe "without release should raise a Puppet::Error" do
155 let(:title) { "ppa:" }
156 it { expect { should contain_apt__ppa(:release) }.to raise_error(Puppet::Error) }