Compatibility for puppet < 3.5.0
authorMorgan Haskel <morgan@puppetlabs.com>
Mon, 27 Apr 2015 18:31:39 +0000 (11:31 -0700)
committerMorgan Haskel <morgan@puppetlabs.com>
Mon, 27 Apr 2015 20:48:41 +0000 (13:48 -0700)
manifests/params.pp
spec/classes/apt_backports_spec.rb
spec/classes/apt_spec.rb
spec/classes/apt_update_spec.rb
spec/classes/params_spec.rb
spec/defines/conf_spec.rb
spec/defines/key_spec.rb
spec/defines/pin_spec.rb
spec/defines/ppa_spec.rb
spec/defines/setting_spec.rb
spec/defines/source_spec.rb

index 5a0c170d9120ddc1ce14b62fe2e9167d10b4d216..32e4dbae6f6a936f109fbd73d373fd26c8733272 100644 (file)
@@ -4,32 +4,45 @@ class apt::params {
     fail('This module only works on Debian or derivatives like Ubuntu')
   }
 
-  # Strict variables facts lookup compatibility
-  $xfacts = {
-    'lsbdistcodename' => defined('$lsbdistcodename') ? {
-      true    => $::lsbdistcodename,
-      default => undef,
-    },
-    'lsbdistrelease' => defined('$lsbdistrelease') ? {
-      true    => $::lsbdistrelease,
-      default => undef,
-    },
-    'lsbmajdistrelease' => defined('$lsbmajdistrelease') ? {
-      true    => $::lsbmajdistrelease,
-      default => undef,
-    },
-    'lsbdistdescription' => defined('$lsbdistdescription') ? {
-      true    => $::lsbdistdescription,
-      default => undef,
-    },
-    'lsbminordistrelease' => defined('$lsbminordistrelease') ? {
-      true    => $::lsbminordistrelease,
-      default => undef,
-    },
-    'lsbdistid' => defined('$lsbdistid') ? {
-      true    => $::lsbdistid,
-      default => undef,
-    },
+  # prior to puppet 3.5.0, defined couldn't test if a variable was defined
+  # strict variables wasn't added until 3.5.0, so this should be fine.
+  if versioncmp($::puppetversion, '3.5.0') < 0 {
+    $xfacts = {
+      'lsbdistcodename'     => $::lsbdistcodename,
+      'lsbdistrelease'      => $::lsbdistrelease,
+      'lsbmajdistrelease'   => $::lsbmajdistrelease,
+      'lsbdistdescription'  => $::lsbdistdescription,
+      'lsbminordistrelease' => $::lsbminordistrelease,
+      'lsbdistid'           => $::lsbdistid,
+    }
+  } else {
+    # Strict variables facts lookup compatibility
+    $xfacts = {
+      'lsbdistcodename' => defined('$lsbdistcodename') ? {
+        true    => $::lsbdistcodename,
+        default => undef,
+      },
+      'lsbdistrelease' => defined('$lsbdistrelease') ? {
+        true    => $::lsbdistrelease,
+        default => undef,
+      },
+      'lsbmajdistrelease' => defined('$lsbmajdistrelease') ? {
+        true    => $::lsbmajdistrelease,
+        default => undef,
+      },
+      'lsbdistdescription' => defined('$lsbdistdescription') ? {
+        true    => $::lsbdistdescription,
+        default => undef,
+      },
+      'lsbminordistrelease' => defined('$lsbminordistrelease') ? {
+        true    => $::lsbminordistrelease,
+        default => undef,
+      },
+      'lsbdistid' => defined('$lsbdistid') ? {
+        true    => $::lsbdistid,
+        default => undef,
+      },
+    }
   }
 
   $root           = '/etc/apt'
@@ -105,6 +118,10 @@ class apt::params {
           }
         }
       }
+
+      $ppa_options = undef
+      $ppa_package = undef
+
     }
     'ubuntu': {
       $backports = {
index 1b596789e0d9f3c4eb3418403b3533492270e803..200d6f1333ed8fb50809249b4bbe82c2cb7a9c76 100644 (file)
@@ -10,6 +10,7 @@ describe 'apt::backports', :type => :class do
           :lsbdistid       => 'Debian',
           :osfamily        => 'Debian',
           :lsbdistcodename => 'wheezy',
+          :puppetversion   => '3.5.0',
         }
       end
       it { is_expected.to contain_apt__source('backports').with({
@@ -27,6 +28,7 @@ describe 'apt::backports', :type => :class do
           :lsbdistid       => 'Debian',
           :osfamily        => 'Debian',
           :lsbdistcodename => 'squeeze',
+          :puppetversion   => '3.5.0',
         }
       end
       it { is_expected.to contain_apt__source('backports').with({
@@ -44,6 +46,7 @@ describe 'apt::backports', :type => :class do
           :lsbdistid       => 'Ubuntu',
           :osfamily        => 'Debian',
           :lsbdistcodename => 'trusty',
+          :puppetversion   => '3.5.0',
         }
       end
       it { is_expected.to contain_apt__source('backports').with({
@@ -61,6 +64,7 @@ describe 'apt::backports', :type => :class do
           :lsbdistid       => 'Ubuntu',
           :osfamily        => 'Debian',
           :lsbdistcodename => 'trusty',
+          :puppetversion   => '3.5.0',
         }
       end
       let(:params) do
@@ -87,6 +91,7 @@ describe 'apt::backports', :type => :class do
           :lsbdistid       => 'Ubuntu',
           :osfamily        => 'Debian',
           :lsbdistcodename => 'trusty',
+          :puppetversion   => '3.5.0',
         }
       end
       let(:params) do
@@ -112,6 +117,7 @@ describe 'apt::backports', :type => :class do
         :lsbdistid       => 'linuxmint',
         :osfamily        => 'Debian',
         :lsbdistcodename => 'qiana',
+        :puppetversion   => '3.5.0',
       }
     end
     context 'sets all the needed things' do
@@ -195,6 +201,7 @@ describe 'apt::backports', :type => :class do
         :lsbdistid       => 'Ubuntu',
         :osfamily        => 'Debian',
         :lsbdistcodename => 'trusty',
+        :puppetversion   => '3.5.0',
       }
     end
     context 'invalid location' do
index a470667b0dcaab0d3296b09960de8aadab0df2e5..7e97453b28a53804bf1d53780522e8f4aeec466a 100644 (file)
@@ -1,6 +1,6 @@
 require 'spec_helper'
 describe 'apt' do
-  let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy'} }
+  let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion   => '3.5.0'} }
 
   context 'defaults' do
     it { is_expected.to contain_file('sources.list').that_notifies('Exec[apt_update]').only_with({
@@ -132,6 +132,7 @@ describe 'apt' do
       { :osfamily        => 'Debian',
         :lsbdistcodename => 'precise',
         :lsbdistid       => 'Debian',
+        :puppetversion   => '3.5.0',
       }
     end
     let(:params) { { :sources => {
@@ -173,6 +174,7 @@ describe 'apt' do
       { :osfamily        => 'Debian',
         :lsbdistcodename => 'precise',
         :lsbdistid       => 'Debian',
+        :puppetversion   => '3.5.0',
       }
     end
     let(:params) { { :keys => {
@@ -198,6 +200,7 @@ describe 'apt' do
       { :osfamily        => 'Debian',
         :lsbdistcodename => 'precise',
         :lsbdistid       => 'ubuntu',
+        :puppetversion   => '3.5.0',
       }
     end
     let(:params) { { :ppas => {
@@ -214,6 +217,7 @@ describe 'apt' do
       { :osfamily        => 'Debian',
         :lsbdistcodename => 'precise',
         :lsbdistid       => 'Debian',
+        :puppetversion   => '3.5.0',
       }
     end
     let(:params) { { :settings => {
@@ -264,7 +268,7 @@ describe 'apt' do
 
     context 'with unsupported osfamily' do
       let :facts do
-        { :osfamily => 'Darwin', }
+        { :osfamily => 'Darwin', :puppetversion   => '3.5.0',}
       end
 
       it do
index 8fba4a0c98860e57bb2d7b948c8436cd59aab616..11de16aa0714379e7913ce1a0deeddd520cc728b 100644 (file)
@@ -5,7 +5,7 @@ describe 'apt::update', :type => :class do
   context "and apt::update['frequency']='always'" do
     { 'a recent run' => Time.now.to_i, 'we are due for a run' => 1406660561,'the update-success-stamp file does not exist' => -1 }.each_pair do |desc, factval|
       context "and $::apt_update_last_success indicates #{desc}" do
-        let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :apt_update_last_success => factval, :lsbdistcodename => 'wheezy' } }
+        let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :apt_update_last_success => factval, :lsbdistcodename => 'wheezy', :puppetversion   => '3.5.0', } }
         let (:pre_condition) { "class{'::apt': update => {'frequency' => 'always' },}" }
         it 'should trigger an apt-get update run' do
           #set the apt_update exec's refreshonly attribute to false
@@ -14,7 +14,7 @@ describe 'apt::update', :type => :class do
       end
     end
     context 'when $::apt_update_last_success is nil' do
-      let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+      let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion   => '3.5.0', } }
       let (:pre_condition) { "class{ '::apt': update => {'frequency' => 'always' },}" }
       it 'should trigger an apt-get update run' do
         #set the apt_update exec\'s refreshonly attribute to false
@@ -25,7 +25,7 @@ describe 'apt::update', :type => :class do
   context "and apt::update['frequency']='reluctantly'" do
     {'a recent run' => Time.now.to_i, 'we are due for a run' => 1406660561,'the update-success-stamp file does not exist' => -1 }.each_pair do |desc, factval|
       context "and $::apt_update_last_success indicates #{desc}" do
-        let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :apt_update_last_success => factval, :lsbdistcodename => 'wheezy'} }
+        let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :apt_update_last_success => factval, :lsbdistcodename => 'wheezy', :puppetversion   => '3.5.0',} }
         let (:pre_condition) { "class{ '::apt': update => {'frequency' => 'reluctantly' },}" }
         it 'should not trigger an apt-get update run' do
           #don't change the apt_update exec's refreshonly attribute. (it should be true)
@@ -34,7 +34,7 @@ describe 'apt::update', :type => :class do
       end
     end
     context 'when $::apt_update_last_success is nil' do
-      let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+      let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion   => '3.5.0', } }
       let (:pre_condition) { "class{ '::apt': update => {'frequency' => 'reluctantly' },}" }
       it 'should not trigger an apt-get update run' do
         #don't change the apt_update exec's refreshonly attribute. (it should be true)
@@ -46,7 +46,7 @@ describe 'apt::update', :type => :class do
     context "and apt::update['frequency'] has the value of #{update_frequency}" do
       { 'we are due for a run' => 1406660561,'the update-success-stamp file does not exist' => -1 }.each_pair do |desc, factval|
         context "and $::apt_update_last_success indicates #{desc}" do
-          let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :apt_update_last_success => factval, :lsbdistcodename => 'wheezy' } }
+          let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :apt_update_last_success => factval, :lsbdistcodename => 'wheezy', :puppetversion   => '3.5.0', } }
           let (:pre_condition) { "class{ '::apt': update => {'frequency' => '#{update_frequency}',} }" }
           it 'should trigger an apt-get update run' do
             #set the apt_update exec\'s refreshonly attribute to false
@@ -55,7 +55,7 @@ describe 'apt::update', :type => :class do
         end
       end
       context 'when the $::apt_update_last_success fact has a recent value' do
-        let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :apt_update_last_success => Time.now.to_i } }
+        let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :apt_update_last_success => Time.now.to_i, :puppetversion   => '3.5.0', } }
         let (:pre_condition) { "class{ '::apt': update => {'frequency' => '#{update_frequency}',} }" }
         it 'should not trigger an apt-get update run' do
           #don't change the apt_update exec\'s refreshonly attribute. (it should be true)
@@ -63,7 +63,7 @@ describe 'apt::update', :type => :class do
         end
       end
       context 'when $::apt_update_last_success is nil' do
-        let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :apt_update_last_success => nil } }
+        let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :apt_update_last_success => nil, :puppetversion   => '3.5.0', } }
         let (:pre_condition) { "class{ '::apt': update => {'frequency' => '#{update_frequency}',} }" }
         it 'should trigger an apt-get update run' do
           #set the apt_update exec\'s refreshonly attribute to false
index d90ae7e993a54648a28bf389bc7c9721cfd53c4b..e28296b2cc9e2ce1f0bb1692500ee19788d884d8 100644 (file)
@@ -1,6 +1,6 @@
 require 'spec_helper'
 describe 'apt::params', :type => :class do
-  let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+  let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion   => '3.5.0', } }
   let (:title) { 'my_package' }
 
   it { is_expected.to contain_apt__params }
@@ -13,7 +13,7 @@ describe 'apt::params', :type => :class do
   end
 
   describe "With lsb-release not installed" do
-    let(:facts) { { :osfamily => 'Debian' } }
+    let(:facts) { { :osfamily => 'Debian', :puppetversion   => '3.5.0', } }
     let (:title) { 'my_package' }
 
     it do
@@ -23,4 +23,17 @@ describe 'apt::params', :type => :class do
     end
   end
 
+  describe "With old puppet version" do
+    let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :lsbdistrelease => 'foo', :lsbdistdescription => 'bar', :lsbminordistrelease => 'baz', :lsbmajdistrelease => 'foobar', :puppetversion   => '3.4.0', } }
+    let(:title) { 'my_package' }
+    it { is_expected.to contain_apt__params }
+
+    # There are 4 resources in this class currently
+    # there should not be any more resources because it is a params class
+    # The resources are class[apt::params], class[main], class[settings], stage[main]
+    it "Should not contain any resources" do
+      expect(subject.call.resources.size).to eq(4)
+    end
+  end
+
 end
index d0c5ed976dc7e94eea280364236a42e919c6df92..1df0f341ee37fb366c9946d206961b84d7705115 100644 (file)
@@ -3,7 +3,7 @@ describe 'apt::conf', :type => :define do
   let :pre_condition do
     'class { "apt": }'
   end
-  let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+  let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion   => '3.5.0', } }
   let :title do
     'norecommends'
   end
index 6725dc8f25e9533268a53639c3e7d8b1ad70eab7..c13c255bdb27df5660613e620fe69d6bc9c394b1 100644 (file)
@@ -5,7 +5,7 @@ describe 'apt::key' do
     'class { "apt": }'
   end
 
-  let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+  let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion   => '3.5.0', } }
 
   GPG_KEY_ID = '47B320EB4C7C375AA9DAE1A01054B7A24BD6EC30'
 
index c77bb6ba6e5a5d8c12cf8686cf9398fe7529fff0..7ae41a9cba32fab74c5ece9db6ea8a3d17dad649 100644 (file)
@@ -3,7 +3,7 @@ describe 'apt::pin', :type => :define do
   let :pre_condition do
     'class { "apt": }'
   end
-  let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+  let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion   => '3.5.0', } }
   let(:title) { 'my_pin' }
 
   context 'defaults' do
index 7046475736e9b4d58f3e7e8961a3a265a5b7fbff..63c297b82ccc90c52b7ced78fa0d6d2af9f97a66 100644 (file)
@@ -12,6 +12,7 @@ describe 'apt::ppa' do
         :operatingsystem => 'Ubuntu',
         :osfamily        => 'Debian',
         :lsbdistid       => 'Ubuntu',
+        :puppetversion   => '3.5.0',
       }
     end
 
@@ -50,6 +51,7 @@ describe 'apt::ppa' do
         :operatingsystem => 'Ubuntu',
         :osfamily        => 'Debian',
         :lsbdistid       => 'Ubuntu',
+        :puppetversion   => '3.5.0',
       }
     end
 
@@ -81,6 +83,7 @@ describe 'apt::ppa' do
         :operatingsystem => 'Ubuntu',
         :osfamily        => 'Debian',
         :lsbdistid       => 'Ubuntu',
+        :puppetversion   => '3.5.0',
       }
     end
     let :params do
@@ -119,6 +122,7 @@ describe 'apt::ppa' do
         :operatingsystem => 'Ubuntu',
         :lsbdistid       => 'Ubuntu',
         :osfamily        => 'Debian',
+        :puppetversion   => '3.5.0',
       }
     end
     let :params do
@@ -154,6 +158,7 @@ describe 'apt::ppa' do
         :operatingsystem => 'Ubuntu',
         :lsbdistid       => 'Ubuntu',
         :osfamily        => 'Debian',
+        :puppetversion   => '3.5.0',
       }
     end
     let :params do
@@ -187,6 +192,7 @@ describe 'apt::ppa' do
         :operatingsystem => 'Ubuntu',
         :lsbdistid       => 'Ubuntu',
         :osfamily        => 'Debian',
+        :puppetversion   => '3.5.0',
       }
     end
     let :params do
@@ -220,6 +226,7 @@ describe 'apt::ppa' do
         :operatingsystem => 'Ubuntu',
         :lsbdistid       => 'Ubuntu',
         :osfamily        => 'Debian',
+        :puppetversion   => '3.5.0',
       }
     end
     let :params do
@@ -251,6 +258,7 @@ describe 'apt::ppa' do
         :operatingsystem => 'Ubuntu',
         :lsbdistid       => 'Ubuntu',
         :osfamily        => 'Debian',
+        :puppetversion   => '3.5.0',
       }
     end
     let(:title) { 'ppa:foo' }
@@ -274,6 +282,7 @@ describe 'apt::ppa' do
           :lsbdistid       => 'Ubuntu',
           :osfamily        => 'Debian',
           :lsbdistcodeanme => nil,
+          :puppetversion   => '3.5.0',
         }
       end
       let(:title) { 'ppa:foo' }
@@ -292,6 +301,7 @@ describe 'apt::ppa' do
           :operatingsystem => 'Debian',
           :lsbdistid       => 'debian',
           :osfamily        => 'Debian',
+          :puppetversion   => '3.5.0',
         }
       end
       let(:title) { 'ppa:foo' }
index 16c80163aa960af0f151585f19e64331baa1daec..4ab7595eee44af80b67e4ee04c2e877c395d9898 100644 (file)
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 describe 'apt::setting' do
   let(:pre_condition) { 'class { "apt": }' }
-  let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+  let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion   => '3.5.0', } }
   let(:title) { 'conf-teddybear' }
 
   let(:default_params) { { :content => 'di' } }
@@ -61,7 +61,7 @@ describe 'apt::setting' do
       apt::setting { "list-teddybear": content => "foo" }
       '
     end
-    let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+    let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion   => '3.5.0', } }
     let(:title) { 'conf-teddybear' }
     let(:default_params) { { :content => 'di' } }
 
index 24f50f79633389ecfa66b7586e264079bc1d5e7e..4dff24a467982e736a7664000fffbdda0e162511 100644 (file)
@@ -17,7 +17,8 @@ describe 'apt::source' do
         {
           :lsbdistid       => 'Debian',
           :lsbdistcodename => 'wheezy',
-          :osfamily        => 'Debian'
+          :osfamily        => 'Debian',
+          :puppetversion   => '3.5.0',
         }
       end
       it do
@@ -31,7 +32,8 @@ describe 'apt::source' do
         {
           :lsbdistid       => 'Debian',
           :lsbdistcodename => 'wheezy',
-          :osfamily        => 'Debian'
+          :osfamily        => 'Debian',
+          :puppetversion   => '3.5.0',
         }
       end
       let(:params) { { :location => 'hello.there', } }
@@ -48,7 +50,8 @@ describe 'apt::source' do
       {
         :lsbdistid       => 'Debian',
         :lsbdistcodename => 'wheezy',
-        :osfamily        => 'Debian'
+        :osfamily        => 'Debian',
+        :puppetversion   => '3.5.0',
       }
     end
 
@@ -186,7 +189,8 @@ describe 'apt::source' do
       {
         :lsbdistid       => 'Debian',
         :lsbdistcodename => 'wheezy',
-        :osfamily        => 'Debian'
+        :osfamily        => 'Debian',
+        :puppetversion   => '3.5.0',
       }
     end
     let :params do
@@ -207,7 +211,8 @@ describe 'apt::source' do
       {
         :lsbdistid       => 'Debian',
         :lsbdistcodename => 'wheezy',
-        :osfamily        => 'Debian'
+        :osfamily        => 'Debian',
+        :puppetversion   => '3.5.0',
       }
     end
     let :params do
@@ -229,7 +234,8 @@ describe 'apt::source' do
       {
         :lsbdistid       => 'Debian',
         :lsbdistcodename => 'wheezy',
-        :osfamily        => 'Debian'
+        :osfamily        => 'Debian',
+        :puppetversion   => '3.5.0',
       }
     end
     let :params do
@@ -249,7 +255,8 @@ describe 'apt::source' do
       let :facts do
         {
           :lsbdistid       => 'Debian',
-          :osfamily        => 'Debian'
+          :osfamily        => 'Debian',
+          :puppetversion   => '3.5.0',
         }
       end
       let(:params) { { :location => 'hello.there', } }
@@ -266,7 +273,8 @@ describe 'apt::source' do
         {
           :lsbdistid       => 'Debian',
           :lsbdistcodename => 'wheezy',
-          :osfamily        => 'Debian'
+          :osfamily        => 'Debian',
+          :puppetversion   => '3.5.0',
         }
       end
       let :params do