2 describe 'apt::ppa', :type => :define do
3 [ { :lsbdistrelease => '11.04',
4 :lsbdistcodename => 'natty',
5 :package => 'python-software-properties'},
6 { :lsbdistrelease => '12.10',
7 :lsbdistcodename => 'quantal',
8 :package => 'software-properties-common'},
10 context "on #{platform[:lsbdistcodename]}" do
13 :lsbdistrelease => platform[:lsbdistrelease],
14 :lsbdistcodename => platform[:lsbdistcodename],
18 "#{platform[:lsbdistcodename]}"
21 "#{platform[:package]}"
26 ['ppa:dans_ppa', 'dans_ppa','ppa:dans-daily/ubuntu'].each do |t|
27 describe "with title #{t}" do
35 t.sub(/^ppa:/,'').gsub('/','-') << "-" << "#{release}.list"
38 it { should contain_package("#{package}") }
40 it { should contain_exec("apt_update").with(
41 'command' => '/usr/bin/apt-get update',
46 it { should contain_exec("add-apt-repository-#{t}").with(
47 'command' => "/usr/bin/add-apt-repository #{options} #{t}",
48 'unless' => "/usr/bin/test -s /etc/apt/sources.list.d/#{filename}",
49 'require' => ["File[/etc/apt/sources.list.d]", "Package[#{package}]"],
50 'notify' => "Exec[apt_update]"
54 it { should create_file("/etc/apt/sources.list.d/#{filename}").with(
56 'require' => "Exec[add-apt-repository-#{t}]"
61 describe 'without a proxy defined' do
71 "#{title}-#{release}.list"
74 it { should contain_exec("add-apt-repository-#{title}").with(
76 'command' => "/usr/bin/add-apt-repository #{options} #{title}",
77 'unless' => "/usr/bin/test -s /etc/apt/sources.list.d/#{filename}",
78 'require' => ["File[/etc/apt/sources.list.d]", "Package[#{package}]"],
79 'notify' => "Exec[apt_update]"
84 describe 'behind a proxy' do
90 proxy_host => "user:pass@proxy",
94 "#{title}-#{release}.list"
97 it { should contain_exec("add-apt-repository-#{title}").with(
99 "http_proxy=http://user:pass@proxy:8080",
100 "https_proxy=http://user:pass@proxy:8080",
102 'command' => "/usr/bin/add-apt-repository #{options} #{title}",
103 'unless' => "/usr/bin/test -s /etc/apt/sources.list.d/#{filename}",
104 'require' => ["File[/etc/apt/sources.list.d]", "Package[#{package}]"],
105 'notify' => "Exec[apt_update]"
112 [ { :lsbdistcodename => 'natty',
113 :package => 'python-software-properties' },
114 { :lsbdistcodename => 'quantal',
115 :package => 'software-properties-common'},
117 context "on #{platform[:lsbdistcodename]}" do
118 describe "it should not error if package['#{platform[:package]}'] is already defined" do
119 let :pre_condition do
121 'package { "#{platform[:package]}": }->Apt::Ppa["ppa"]'
124 {:lsbdistcodename => '#{platform[:lsbdistcodename]}'}
126 let(:title) { "ppa" }
127 let(:release) { "#{platform[:lsbdistcodename]}" }
128 it { should contain_package('#{platform[:package]}') }
133 describe "without Class[apt] should raise a Puppet::Error" do
134 let(:release) { "natty" }
135 let(:title) { "ppa" }
136 it { expect { should contain_apt__ppa(title) }.to raise_error(Puppet::Error) }
139 describe "without release should raise a Puppet::Error" do
140 let(:title) { "ppa:" }
141 it { expect { should contain_apt__ppa(:release) }.to raise_error(Puppet::Error) }