require 'spec_helper'
describe 'apt::ppa', :type => :define do
- ['ppa:dans_ppa', 'dans_ppa'].each do |t|
+ ['ppa:dans_ppa', 'dans_ppa','ppa:dans-daily/ubuntu'].each do |t|
describe "with title #{t}" do
let :pre_condition do
'class { "apt": }'
end
+ let :facts do
+ {:lsbdistcodename => 'natty'}
+ end
let :title do
t
end
- let :unless_statement do
- if t =~ /ppa:(.*)/
- /^[^#].*ppa.*#{$1}.*$/
- else
- /^[^#].*#{t}.*$/
- end
+ let :release do
+ "natty"
+ end
+ let :filename do
+ t.sub(/^ppa:/,'').gsub('/','-') << "-" << "#{release}.list"
end
+
+ it { should contain_package("python-software-properties") }
+
+ it { should contain_exec("apt_update").with(
+ 'command' => '/usr/bin/apt-get update',
+ 'refreshonly' => true
+ )
+ }
+
it { should contain_exec("add-apt-repository-#{t}").with(
'command' => "/usr/bin/add-apt-repository #{t}",
- 'notify' => "Exec[apt-update-#{t}]"
+ 'creates' => "/etc/apt/sources.list.d/#{filename}",
+ 'require' => "Package[python-software-properties]",
+ 'notify' => "Exec[apt_update]"
)
}
- it { should contain_exec("add-apt-repository-#{t}").with({"unless" => unless_statement}) }
- it { should contain_exec("apt-update-#{t}").with(
- 'command' => '/usr/bin/aptitude update',
- 'refreshonly' => true
+
+ it { should create_file("/etc/apt/sources.list.d/#{filename}").with(
+ 'ensure' => 'file',
+ 'require' => "Exec[add-apt-repository-#{t}]"
)
}
- it { should contain_exec("apt-update-#{t}").without_unless }
end
end
+ describe "it should not error if package['python-software-properties'] is already defined" do
+ let :pre_condition do
+ 'class {"apt": }' +
+ 'package { "python-software-properties": }->Apt::Ppa["ppa"]'
+ end
+ let :facts do
+ {:lsbdistcodename => 'natty'}
+ end
+ let(:title) { "ppa" }
+ let(:release) { "natty" }
+ it { should contain_package("python-software-properties") }
+ end
+
describe "without Class[apt] should raise a Puppet::Error" do
+ let(:release) { "natty" }
let(:title) { "ppa" }
it { expect { should contain_apt__ppa(title) }.to raise_error(Puppet::Error) }
end
+
+ describe "without release should raise a Puppet::Error" do
+ let(:title) { "ppa:" }
+ it { expect { should contain_apt__ppa(:release) }.to raise_error(Puppet::Error) }
+ end
end