소스 검색

(MODULES-3414) Limit non-strict parsing to pre-3.5.0 only

Puppet 3.5.0 introduced strict variables and the module handles strict
variables by using the defined() function. This does not work on prior
versions of puppet so we must gate based on that version.

Puppet 4 series has a new setting `strict` that may be set to enforce
strict variables while `strict_variables` remains unset (see PUP-6358)
which causes this conditional to erroniously use non-strict 3.5-era
parsing and fail.

The new conditional corrects the cases such that strict variable
behavior happens on versions 3.5.0 and later.
Hunter Haugen 7 년 전
부모
커밋
360f04dcc1
3개의 변경된 파일14개의 추가작업 그리고 7개의 파일을 삭제
  1. 3 3
      manifests/params.pp
  2. 1 0
      spec/defines/key_compat_spec.rb
  3. 10 4
      spec/defines/source_compat_spec.rb

+ 3 - 3
manifests/params.pp

@@ -4,9 +4,9 @@ class apt::params {
     fail('This module only works on Debian or derivatives like Ubuntu')
     fail('This module only works on Debian or derivatives like Ubuntu')
   }
   }
 
 
-  # 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 ! $::settings::strict_variables {
+  # 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 $::puppetversion and versioncmp($::puppetversion, '3.5.0') < 0 {
     $xfacts = {
     $xfacts = {
       'lsbdistcodename'     => $::lsbdistcodename,
       'lsbdistcodename'     => $::lsbdistcodename,
       'lsbdistrelease'      => $::lsbdistrelease,
       'lsbdistrelease'      => $::lsbdistrelease,

+ 1 - 0
spec/defines/key_compat_spec.rb

@@ -4,6 +4,7 @@ describe 'apt::key', :type => :define do
   let(:facts) { {
   let(:facts) { {
     :lsbdistid => 'Debian',
     :lsbdistid => 'Debian',
     :osfamily => 'Debian',
     :osfamily => 'Debian',
+    :puppetversion => Puppet.version,
   } }
   } }
   GPG_KEY_ID = '47B320EB4C7C375AA9DAE1A01054B7A24BD6EC30'
   GPG_KEY_ID = '47B320EB4C7C375AA9DAE1A01054B7A24BD6EC30'
 
 

+ 10 - 4
spec/defines/source_compat_spec.rb

@@ -13,6 +13,7 @@ describe 'apt::source', :type => :define do
         :lsbdistid       => 'Debian',
         :lsbdistid       => 'Debian',
         :lsbdistcodename => 'wheezy',
         :lsbdistcodename => 'wheezy',
         :osfamily        => 'Debian',
         :osfamily        => 'Debian',
+        :puppetversion   => Puppet.version,
       }
       }
     end
     end
 
 
@@ -34,6 +35,7 @@ describe 'apt::source', :type => :define do
         :lsbdistid       => 'Debian',
         :lsbdistid       => 'Debian',
         :lsbdistcodename => 'wheezy',
         :lsbdistcodename => 'wheezy',
         :osfamily        => 'Debian'
         :osfamily        => 'Debian'
+        :puppetversion   => Puppet.version,
       }
       }
     end
     end
     let :params do
     let :params do
@@ -88,7 +90,8 @@ describe 'apt::source', :type => :define do
       {
       {
         :lsbdistid       => 'Debian',
         :lsbdistid       => 'Debian',
         :lsbdistcodename => 'wheezy',
         :lsbdistcodename => 'wheezy',
-        :osfamily        => 'Debian'
+        :osfamily        => 'Debian',
+        :puppetversion   => Puppet.version,
       }
       }
     end
     end
     let :params do
     let :params do
@@ -107,7 +110,8 @@ describe 'apt::source', :type => :define do
       {
       {
         :lsbdistid       => 'Debian',
         :lsbdistid       => 'Debian',
         :lsbdistcodename => 'wheezy',
         :lsbdistcodename => 'wheezy',
-        :osfamily        => 'Debian'
+        :osfamily        => 'Debian',
+        :puppetversion   => Puppet.version,
       }
       }
     end
     end
     let :params do
     let :params do
@@ -126,7 +130,8 @@ describe 'apt::source', :type => :define do
       {
       {
         :lsbdistid       => 'Debian',
         :lsbdistid       => 'Debian',
         :lsbdistcodename => 'wheezy',
         :lsbdistcodename => 'wheezy',
-        :osfamily        => 'Debian'
+        :osfamily        => 'Debian',
+        :puppetversion   => Puppet.version,
       }
       }
     end
     end
     let :params do
     let :params do
@@ -146,7 +151,8 @@ describe 'apt::source', :type => :define do
       let :facts do
       let :facts do
         {
         {
           :lsbdistid       => 'Debian',
           :lsbdistid       => 'Debian',
-          :osfamily        => 'Debian'
+          :osfamily        => 'Debian',
+          :puppetversion   => Puppet.version,
         }
         }
       end
       end