X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=spec%2Fdefines%2Fppa_spec.rb;h=ab86b93b2e35d0b145f1e601cebd139e7e066a9c;hb=0ffe484c7c5d64295f32eb34ce47c60eb823c66c;hp=c2ce26411ce33c40786db625614ca5cdef9b97f2;hpb=0d32fee292456600f4ad976ed807879463a353c8;p=puppet-modules%2Fpuppetlabs-apt.git diff --git a/spec/defines/ppa_spec.rb b/spec/defines/ppa_spec.rb index c2ce264..ab86b93 100644 --- a/spec/defines/ppa_spec.rb +++ b/spec/defines/ppa_spec.rb @@ -1,37 +1,68 @@ 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