Make sure PPA source file is absent when apt-add-repository fails
[puppet-modules/puppetlabs-apt.git] / spec / defines / ppa_spec.rb
index b53418610831f4654b6eef3260600c4e7ddf57bd..a68dc621502e93108699703e7db34f1e2be8125c 100644 (file)
@@ -7,9 +7,9 @@ describe 'apt::ppa' do
   describe 'defaults' do
     let :facts do
       {
-        os: { family: 'Debian', name: 'Ubuntu', release: { major: '11', full: '11.04' } },
-        lsbdistrelease: '11.04',
-        lsbdistcodename: 'natty',
+        os: { family: 'Debian', name: 'Ubuntu', release: { major: '14', full: '41.04' } },
+        lsbdistrelease: '14.04',
+        lsbdistcodename: 'trusty',
         operatingsystem: 'Ubuntu',
         osfamily: 'Debian',
         lsbdistid: 'Ubuntu',
@@ -22,8 +22,8 @@ describe 'apt::ppa' do
     it { is_expected.not_to contain_package('python-software-properties') }
     it {
       is_expected.to contain_exec('add-apt-repository-ppa:needs/such.substitution/wow+type').that_notifies('Class[Apt::Update]').with(environment: [],
-                                                                                                                                      command: '/usr/bin/add-apt-repository -y ppa:needs/such.substitution/wow+type', # rubocop:disable Metrics/LineLength
-                                                                                                                                      unless: '/usr/bin/test -f /etc/apt/sources.list.d/needs-such_substitution-wow_type-natty.list', # rubocop:disable Metrics/LineLength
+                                                                                                                                      command: '/usr/bin/add-apt-repository -y ppa:needs/such.substitution/wow+type || rm /etc/apt/sources.list.d/needs-such_substitution-wow_type-trusty.list && false', # rubocop:disable Metrics/LineLength
+                                                                                                                                      unless: '/usr/bin/test -f /etc/apt/sources.list.d/needs-such_substitution-wow_type-trusty.list', # rubocop:disable Metrics/LineLength
                                                                                                                                       user: 'root',
                                                                                                                                       logoutput: 'on_failure')
     }
@@ -46,7 +46,7 @@ describe 'apt::ppa' do
 
     it {
       is_expected.to contain_exec('add-apt-repository-ppa:user/foo').that_notifies('Class[Apt::Update]').with(environment: [],
-                                                                                                              command: '/usr/bin/add-apt-repository -y ppa:user/foo',
+                                                                                                              command: '/usr/bin/add-apt-repository -y ppa:user/foo || rm /etc/apt/sources.list.d/user-ubuntu-foo-wily.list && false',
                                                                                                               unless: '/usr/bin/test -f /etc/apt/sources.list.d/user-ubuntu-foo-wily.list',
                                                                                                               user: 'root',
                                                                                                               logoutput: 'on_failure')
@@ -65,9 +65,9 @@ describe 'apt::ppa' do
     end
     let :facts do
       {
-        os: { family: 'Debian', name: 'Ubuntu', release: { major: '11', full: '11.04' } },
-        lsbdistrelease: '11.04',
-        lsbdistcodename: 'natty',
+        os: { family: 'Debian', name: 'Ubuntu', release: { major: '14', full: '14.04' } },
+        lsbdistrelease: '14.04',
+        lsbdistcodename: 'trusty',
         operatingsystem: 'Ubuntu',
         osfamily: 'Debian',
         lsbdistid: 'Ubuntu',
@@ -80,54 +80,14 @@ describe 'apt::ppa' do
     it { is_expected.to contain_package('software-properties-common') }
     it {
       is_expected.to contain_exec('add-apt-repository-ppa:needs/such.substitution/wow').that_notifies('Class[Apt::Update]').with('environment' => [],
-                                                                                                                                 'command'     => '/usr/bin/add-apt-repository -y ppa:needs/such.substitution/wow', # rubocop:disable Metrics/LineLength
-                                                                                                                                 'unless'      => '/usr/bin/test -f /etc/apt/sources.list.d/needs-such_substitution-wow-natty.list', # rubocop:disable Metrics/LineLength
+                                                                                                                                 'command'     => '/usr/bin/add-apt-repository -y ppa:needs/such.substitution/wow || rm /etc/apt/sources.list.d/needs-such_substitution-wow-trusty.list && false', # rubocop:disable Metrics/LineLength
+                                                                                                                                 'unless'      => '/usr/bin/test -f /etc/apt/sources.list.d/needs-such_substitution-wow-trusty.list', # rubocop:disable Metrics/LineLength
                                                                                                                                  'user'        => 'root',
                                                                                                                                  'logoutput'   => 'on_failure')
     }
 
     it {
-      is_expected.to contain_file('/etc/apt/sources.list.d/needs-such_substitution-wow-natty.list').that_requires('Exec[add-apt-repository-ppa:needs/such.substitution/wow]').with('ensure' => 'file')
-    }
-  end
-
-  describe 'package_manage => true, multiple ppas, MODULES-2873' do
-    let :pre_condition do
-      'class { "apt": }
-       apt::ppa {"ppa:user/foo":
-         package_manage => true
-       }'
-    end
-    let :facts do
-      {
-        os: { family: 'Debian', name: 'Ubuntu', release: { major: '11', full: '11.04' } },
-        lsbdistrelease: '11.04',
-        lsbdistcodename: 'natty',
-        operatingsystem: 'Ubuntu',
-        osfamily: 'Debian',
-        lsbdistid: 'Ubuntu',
-        puppetversion: Puppet.version,
-      }
-    end
-    let :params do
-      {
-        package_manage: true,
-      }
-    end
-
-    let(:title) { 'ppa:user/bar' }
-
-    it { is_expected.to contain_package('python-software-properties') }
-    it {
-      is_expected.to contain_exec('add-apt-repository-ppa:user/bar').that_notifies('Class[Apt::Update]').with('environment' => [],
-                                                                                                              'command'     => '/usr/bin/add-apt-repository -y ppa:user/bar',
-                                                                                                              'unless'      => '/usr/bin/test -f /etc/apt/sources.list.d/user-bar-natty.list',
-                                                                                                              'user'        => 'root',
-                                                                                                              'logoutput'   => 'on_failure')
-    }
-
-    it {
-      is_expected.to contain_file('/etc/apt/sources.list.d/user-bar-natty.list').that_requires('Exec[add-apt-repository-ppa:user/bar]').with('ensure' => 'file')
+      is_expected.to contain_file('/etc/apt/sources.list.d/needs-such_substitution-wow-trusty.list').that_requires('Exec[add-apt-repository-ppa:needs/such.substitution/wow]').with('ensure' => 'file')
     }
   end
 
@@ -137,9 +97,9 @@ describe 'apt::ppa' do
     end
     let :facts do
       {
-        os: { family: 'Debian', name: 'Ubuntu', release: { major: '11', full: '11.04' } },
-        lsbdistrelease: '11.04',
-        lsbdistcodename: 'natty',
+        os: { family: 'Debian', name: 'Ubuntu', release: { major: '14', full: '14.04' } },
+        lsbdistrelease: '14.04',
+        lsbdistcodename: 'trusty',
         operatingsystem: 'Ubuntu',
         osfamily: 'Debian',
         lsbdistid: 'Ubuntu',
@@ -157,14 +117,14 @@ describe 'apt::ppa' do
     it { is_expected.not_to contain_package('python-software-properties') }
     it {
       is_expected.to contain_exec('add-apt-repository-ppa:needs/such.substitution/wow').that_notifies('Class[Apt::Update]').with('environment' => [],
-                                                                                                                                 'command'     => '/usr/bin/add-apt-repository -y ppa:needs/such.substitution/wow', # rubocop:disable Metrics/LineLength
-                                                                                                                                 'unless'      => '/usr/bin/test -f /etc/apt/sources.list.d/needs-such_substitution-wow-natty.list', # rubocop:disable Metrics/LineLength
+                                                                                                                                 'command'     => '/usr/bin/add-apt-repository -y ppa:needs/such.substitution/wow || rm /etc/apt/sources.list.d/needs-such_substitution-wow-trusty.list && false', # rubocop:disable Metrics/LineLength
+                                                                                                                                 'unless'      => '/usr/bin/test -f /etc/apt/sources.list.d/needs-such_substitution-wow-trusty.list', # rubocop:disable Metrics/LineLength
                                                                                                                                  'user'        => 'root',
                                                                                                                                  'logoutput'   => 'on_failure')
     }
 
     it {
-      is_expected.to contain_file('/etc/apt/sources.list.d/needs-such_substitution-wow-natty.list').that_requires('Exec[add-apt-repository-ppa:needs/such.substitution/wow]').with('ensure' => 'file')
+      is_expected.to contain_file('/etc/apt/sources.list.d/needs-such_substitution-wow-trusty.list').that_requires('Exec[add-apt-repository-ppa:needs/such.substitution/wow]').with('ensure' => 'file')
     }
   end
 
@@ -198,7 +158,7 @@ describe 'apt::ppa' do
     it { is_expected.to contain_package('software-properties-common') }
     it {
       is_expected.to contain_exec('add-apt-repository-ppa:user/foo').that_notifies('Class[Apt::Update]').with(environment: [],
-                                                                                                              command: '/usr/bin/add-apt-repository  ppa:user/foo',
+                                                                                                              command: '/usr/bin/add-apt-repository  ppa:user/foo || rm /etc/apt/sources.list.d/user-foo-trusty.list && false',
                                                                                                               unless: '/usr/bin/test -f /etc/apt/sources.list.d/user-foo-trusty.list',
                                                                                                               user: 'root',
                                                                                                               logoutput: 'on_failure')
@@ -233,7 +193,7 @@ describe 'apt::ppa' do
     it { is_expected.to contain_package('software-properties-common') }
     it {
       is_expected.to contain_exec('add-apt-repository-ppa:user/foo').that_notifies('Class[Apt::Update]').with(environment: ['http_proxy=http://localhost:8080'],
-                                                                                                              command: '/usr/bin/add-apt-repository  ppa:user/foo',
+                                                                                                              command: '/usr/bin/add-apt-repository  ppa:user/foo || rm /etc/apt/sources.list.d/user-foo-trusty.list && false',
                                                                                                               unless: '/usr/bin/test -f /etc/apt/sources.list.d/user-foo-trusty.list',
                                                                                                               user: 'root',
                                                                                                               logoutput: 'on_failure')
@@ -268,7 +228,7 @@ describe 'apt::ppa' do
     it { is_expected.to contain_package('software-properties-common') }
     it {
       is_expected.to contain_exec('add-apt-repository-ppa:user/foo').that_notifies('Class[Apt::Update]').with(environment: ['http_proxy=http://localhost:8180'],
-                                                                                                              command: '/usr/bin/add-apt-repository  ppa:user/foo',
+                                                                                                              command: '/usr/bin/add-apt-repository  ppa:user/foo || rm /etc/apt/sources.list.d/user-foo-trusty.list && false',
                                                                                                               unless: '/usr/bin/test -f /etc/apt/sources.list.d/user-foo-trusty.list',
                                                                                                               user: 'root',
                                                                                                               logoutput: 'on_failure')
@@ -303,7 +263,7 @@ describe 'apt::ppa' do
     it { is_expected.to contain_package('software-properties-common') }
     it {
       is_expected.to contain_exec('add-apt-repository-ppa:user/foo').that_notifies('Class[Apt::Update]').with(environment: ['http_proxy=http://localhost:8180', 'https_proxy=https://localhost:8180'],
-                                                                                                              command: '/usr/bin/add-apt-repository  ppa:user/foo',
+                                                                                                              command: '/usr/bin/add-apt-repository  ppa:user/foo || rm /etc/apt/sources.list.d/user-foo-trusty.list && false',
                                                                                                               unless: '/usr/bin/test -f /etc/apt/sources.list.d/user-foo-trusty.list',
                                                                                                               user: 'root',
                                                                                                               logoutput: 'on_failure')