Merge branch '1.4.x'
[puppet-modules/puppetlabs-apt.git] / spec / acceptance / apt_ppa_spec.rb
1 require 'spec_helper_acceptance'
2
3 if fact('operatingsystem') == 'Ubuntu'
4   describe 'apt::ppa' do
5
6     context 'reset' do
7       it 'removes ppa' do
8         shell('rm /etc/apt/sources.list.d/canonical-kernel-team-ppa-*', :acceptable_exit_codes => [0,1,2])
9         shell('rm /etc/apt/sources.list.d/raravena80-collectd5-*', :acceptable_exit_codes => [0,1,2])
10       end
11     end
12
13     context 'adding a ppa that doesnt exist' do
14       it 'should work with no errors' do
15         pp = <<-EOS
16         include '::apt'
17         apt::ppa { 'ppa:canonical-kernel-team/ppa': }
18         EOS
19
20         apply_manifest(pp, :catch_failures => true)
21       end
22
23       describe 'contains the source file' do
24         it 'contains a kernel ppa source' do
25           shell('ls /etc/apt/sources.list.d/canonical-kernel-team-ppa-*', :acceptable_exit_codes => [0])
26         end
27       end
28     end
29
30     context 'reading a removed ppa.' do
31       it 'setup' do
32         # This leaves a blank file
33         shell('echo > /etc/apt/sources.list.d/raravena80-collectd5-$(lsb_release -c -s).list')
34       end
35
36       it 'should read it successfully' do
37         pp = <<-EOS
38         include '::apt'
39         apt::ppa { 'ppa:raravena80/collectd5': }
40         EOS
41
42         apply_manifest(pp, :catch_failures => true)
43       end
44     end
45
46     context 'reset' do
47       it 'removes added ppas' do
48         shell('rm /etc/apt/sources.list.d/canonical-kernel-team-ppa-*')
49         shell('rm /etc/apt/sources.list.d/raravena80-collectd5-*')
50       end
51     end
52
53     context 'ensure' do
54       context 'present' do
55         it 'works without failure' do
56           pp = <<-EOS
57           include '::apt'
58           apt::ppa { 'ppa:canonical-kernel-team/ppa': ensure => present }
59           EOS
60
61           apply_manifest(pp, :catch_failures => true)
62         end
63
64         describe 'contains the source file' do
65           it 'contains a kernel ppa source' do
66             shell('ls /etc/apt/sources.list.d/canonical-kernel-team-ppa-*', :acceptable_exit_codes => [0])
67           end
68         end
69       end
70     end
71
72     context 'ensure' do
73       context 'absent' do
74         it 'works without failure' do
75           pp = <<-EOS
76           include '::apt'
77           apt::ppa { 'ppa:canonical-kernel-team/ppa': ensure => absent }
78           EOS
79
80           apply_manifest(pp, :catch_failures => true)
81         end
82
83         describe 'doesnt contain the source file' do
84           it 'fails' do
85             shell('ls /etc/apt/sources.list.d/canonical-kernel-team-ppa-*', :acceptable_exit_codes => [2])
86           end
87         end
88       end
89     end
90
91     context 'release' do
92       context 'precise' do
93         it 'works without failure' do
94           pp = <<-EOS
95           include '::apt'
96           apt::ppa { 'ppa:canonical-kernel-team/ppa':
97             ensure  => present,
98             release => precise,
99           }
100           EOS
101
102           shell('rm -rf /etc/apt/sources.list.d/canonical-kernel-team-ppa*', :acceptable_exit_codes => [0,1,2])
103           apply_manifest(pp, :catch_failures => true)
104         end
105
106         describe file('/etc/apt/sources.list.d/canonical-kernel-team-ppa-precise.list') do
107           it { should be_file }
108         end
109       end
110     end
111
112     context 'options' do
113       context '-y', :unless => default[:platform].match(/10\.04/) do
114         it 'works without failure' do
115           pp = <<-EOS
116           include '::apt'
117           apt::ppa { 'ppa:canonical-kernel-team/ppa':
118             ensure  => present,
119             release => precise,
120             options => '-y',
121           }
122           EOS
123
124           shell('rm -rf /etc/apt/sources.list.d/canonical-kernel-team-ppa*', :acceptable_exit_codes => [0,1,2])
125           apply_manifest(pp, :catch_failures => true)
126         end
127
128         describe file('/etc/apt/sources.list.d/canonical-kernel-team-ppa-precise.list') do
129           it { should be_file }
130         end
131       end
132     end
133
134     context 'reset' do
135       it { shell('rm -rf /etc/apt/sources.list.d/canonical-kernel-team-ppa*', :acceptable_exit_codes => [0,1,2]) }
136     end
137   end
138 end