From 97f836f41b7f8b0aec6733c82873d32140c07304 Mon Sep 17 00:00:00 2001 From: Jeff McCune Date: Thu, 25 Oct 2012 15:32:34 -0700 Subject: (maint) Fix spec failures resulting from Facter API changes Without this patch stdlib tests fail against Facter 2.x and master but not 1.6.x. This patch fixes the problem by initializing the example group differently depending on the version of Facter integrating into the system. The adjusted methods are: 1.x - Facter.collection.loader.load 2.x - Facter.collection.load The collection actually implements the load method in both version, it's simply marked as private in 1.x. --- spec/unit/facter/pe_version_spec.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/spec/unit/facter/pe_version_spec.rb b/spec/unit/facter/pe_version_spec.rb index 202a0e5..931c6d4 100644 --- a/spec/unit/facter/pe_version_spec.rb +++ b/spec/unit/facter/pe_version_spec.rb @@ -4,7 +4,15 @@ require 'spec_helper' describe "PE Version specs" do before :each do - Facter.collection.loader.load(:pe_version) + # Explicitly load the pe_version.rb file which contains generated facts + # that cannot be automatically loaded. Puppet 2.x implements + # Facter.collection.load while Facter 1.x markes Facter.collection.load as + # a private method. + if Facter.collection.respond_to? :load + Facter.collection.load(:pe_version) + else + Facter.collection.loader.load(:pe_version) + end end context "If PE is installed" do -- cgit v1.2.3 From 9e8c60a8b73fd96393b08d690c7197e62aae623e Mon Sep 17 00:00:00 2001 From: Jeff McCune Date: Thu, 25 Oct 2012 15:42:05 -0700 Subject: Revert "Merge branch '2.5.x' into 3.0.x" This reverts commit c8c7afc7a00aaeeddea6514d9fe9508513e53a73, reversing changes made to 03ec16e291a70ac5ac412be36ae3b86a771b98af. This was a mistake on my part. 2.5 is a minor release and minor releases should never be merged into patch level branches. 2.5.x should have been merged into 3.1.x instead. --- CHANGELOG | 24 ------------- lib/facter/pe_version.rb | 53 ----------------------------- spec/spec_helper.rb | 15 -------- spec/unit/facter/pe_version_spec.rb | 68 ------------------------------------- 4 files changed, 160 deletions(-) delete mode 100644 lib/facter/pe_version.rb delete mode 100644 spec/unit/facter/pe_version_spec.rb diff --git a/CHANGELOG b/CHANGELOG index 82f8a6e..f1bb667 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -14,30 +14,6 @@ 2012-04-10 - Chris Price - 3.0.0 * (#13693) moving logic from local spec_helper to puppetlabs_spec_helper (85f96df) -2012-10-23 - Matthaus Owens - 2.5.0 - * Add PE facts to stdlib (cdf3b05) - -2012-08-15 - Dan Bode - 2.5.0 - * Explicitly load functions used by ensure_resource (9fc3063) - -2012-08-13 - Dan Bode - 2.5.0 - * Add better docs about duplicate resource failures (97d327a) - -2012-08-13 - Dan Bode - 2.5.0 - * Handle undef for parameter argument (4f8b133) - -2012-08-07 - Dan Bode - 2.5.0 - * Add function ensure_resource and defined_with_params (a0cb8cd) - -2012-08-20 - Jeff McCune - 2.5.0 - * Disable tests that fail on 2.6.x due to #15912 (c81496e) - -2012-08-20 - Jeff McCune - 2.5.0 - * (Maint) Fix mis-use of rvalue functions as statements (4492913) - -2012-08-20 - Jeff McCune - 2.5.0 - * Add .rspec file to repo root (88789e8) - 2012-06-07 - Chris Price - 2.4.0 * Add support for a 'match' parameter to file_line (a06c0d8) diff --git a/lib/facter/pe_version.rb b/lib/facter/pe_version.rb deleted file mode 100644 index 0cc0f64..0000000 --- a/lib/facter/pe_version.rb +++ /dev/null @@ -1,53 +0,0 @@ -# Fact: is_pe, pe_version, pe_major_version, pe_minor_version, pe_patch_version -# -# Purpose: Return various facts about the PE state of the system -# -# Resolution: Uses a regex match against puppetversion to determine whether the -# machine has Puppet Enterprise installed, and what version (overall, major, -# minor, patch) is installed. -# -# Caveats: -# -Facter.add("pe_version") do - setcode do - pe_ver = Facter.value("puppetversion").match(/Puppet Enterprise (\d+\.\d+\.\d+)/) - pe_ver[1] if pe_ver - end -end - -Facter.add("is_pe") do - setcode do - if Facter.value(:pe_version).to_s.empty? then - false - else - true - end - end -end - -Facter.add("pe_major_version") do - confine :is_pe => true - setcode do - if pe_version = Facter.value(:pe_version) - pe_version.to_s.split('.')[0] - end - end -end - -Facter.add("pe_minor_version") do - confine :is_pe => true - setcode do - if pe_version = Facter.value(:pe_version) - pe_version.to_s.split('.')[1] - end - end -end - -Facter.add("pe_patch_version") do - confine :is_pe => true - setcode do - if pe_version = Facter.value(:pe_version) - pe_version.to_s.split('.')[2] - end - end -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 931d35c..e269b90 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -11,18 +11,3 @@ gem 'rspec', '>=2.0.0' require 'rspec/expectations' require 'puppetlabs_spec_helper/module_spec_helper' - -RSpec.configure do |config| - # FIXME REVISIT - We may want to delegate to Facter like we do in - # Puppet::PuppetSpecInitializer.initialize_via_testhelper(config) because - # this behavior is a duplication of the spec_helper in Facter. - config.before :each do - # Ensure that we don't accidentally cache facts and environment between - # test cases. This requires each example group to explicitly load the - # facts being exercised with something like - # Facter.collection.loader.load(:ipaddress) - Facter::Util::Loader.any_instance.stubs(:load_all) - Facter.clear - Facter.clear_messages - end -end diff --git a/spec/unit/facter/pe_version_spec.rb b/spec/unit/facter/pe_version_spec.rb deleted file mode 100644 index 202a0e5..0000000 --- a/spec/unit/facter/pe_version_spec.rb +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env rspec - -require 'spec_helper' - -describe "PE Version specs" do - before :each do - Facter.collection.loader.load(:pe_version) - end - - context "If PE is installed" do - %w{ 2.6.1 2.10.300 }.each do |version| - puppetversion = "2.7.19 (Puppet Enterprise #{version})" - context "puppetversion => #{puppetversion}" do - before :each do - Facter.fact(:puppetversion).stubs(:value).returns(puppetversion) - end - - (major,minor,patch) = version.split(".") - - it "Should return true" do - Facter.fact(:is_pe).value.should == true - end - - it "Should have a version of #{version}" do - Facter.fact(:pe_version).value.should == version - end - - it "Should have a major version of #{major}" do - Facter.fact(:pe_major_version).value.should == major - end - - it "Should have a minor version of #{minor}" do - Facter.fact(:pe_minor_version).value.should == minor - end - - it "Should have a patch version of #{patch}" do - Facter.fact(:pe_patch_version).value.should == patch - end - end - end - end - - context "When PE is not installed" do - before :each do - Facter.fact(:puppetversion).stubs(:value).returns("2.7.19") - end - - it "is_pe is false" do - Facter.fact(:is_pe).value.should == false - end - - it "pe_version is nil" do - Facter.fact(:pe_version).value.should be_nil - end - - it "pe_major_version is nil" do - Facter.fact(:pe_major_version).value.should be_nil - end - - it "pe_minor_version is nil" do - Facter.fact(:pe_minor_version).value.should be_nil - end - - it "Should have a patch version" do - Facter.fact(:pe_patch_version).value.should be_nil - end - end -end -- cgit v1.2.3 From 43729e6ea9371b3335b8bbaf2fe0a5c09a3cd4a5 Mon Sep 17 00:00:00 2001 From: Jeff McCune Date: Thu, 25 Oct 2012 15:44:14 -0700 Subject: Revert "Revert "Merge branch '2.5.x' into 3.0.x"" This reverts commit 9e8c60a8b73fd96393b08d690c7197e62aae623e. This was an error on my part. 3.1.x descends from 3.0.x _and_ 2.5.x, but 3.0.x does not descend from 2.5.x. I should not have merged 2.5.x into 3.0.x, instead I should have merged 2.5.x into 3.1.x skipping over the 3.0.x merge up. I'm slowly starting to understand the implications of semver on our branching strategy... =) --- CHANGELOG | 24 +++++++++++++ lib/facter/pe_version.rb | 53 +++++++++++++++++++++++++++++ spec/spec_helper.rb | 15 ++++++++ spec/unit/facter/pe_version_spec.rb | 68 +++++++++++++++++++++++++++++++++++++ 4 files changed, 160 insertions(+) create mode 100644 lib/facter/pe_version.rb create mode 100644 spec/unit/facter/pe_version_spec.rb diff --git a/CHANGELOG b/CHANGELOG index 14c6eb0..728ccbb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -17,6 +17,30 @@ 2012-04-10 - Chris Price - 3.0.0 * (#13693) moving logic from local spec_helper to puppetlabs_spec_helper (85f96df) +2012-10-23 - Matthaus Owens - 2.5.0 + * Add PE facts to stdlib (cdf3b05) + +2012-08-15 - Dan Bode - 2.5.0 + * Explicitly load functions used by ensure_resource (9fc3063) + +2012-08-13 - Dan Bode - 2.5.0 + * Add better docs about duplicate resource failures (97d327a) + +2012-08-13 - Dan Bode - 2.5.0 + * Handle undef for parameter argument (4f8b133) + +2012-08-07 - Dan Bode - 2.5.0 + * Add function ensure_resource and defined_with_params (a0cb8cd) + +2012-08-20 - Jeff McCune - 2.5.0 + * Disable tests that fail on 2.6.x due to #15912 (c81496e) + +2012-08-20 - Jeff McCune - 2.5.0 + * (Maint) Fix mis-use of rvalue functions as statements (4492913) + +2012-08-20 - Jeff McCune - 2.5.0 + * Add .rspec file to repo root (88789e8) + 2012-06-07 - Chris Price - 2.4.0 * Add support for a 'match' parameter to file_line (a06c0d8) diff --git a/lib/facter/pe_version.rb b/lib/facter/pe_version.rb new file mode 100644 index 0000000..0cc0f64 --- /dev/null +++ b/lib/facter/pe_version.rb @@ -0,0 +1,53 @@ +# Fact: is_pe, pe_version, pe_major_version, pe_minor_version, pe_patch_version +# +# Purpose: Return various facts about the PE state of the system +# +# Resolution: Uses a regex match against puppetversion to determine whether the +# machine has Puppet Enterprise installed, and what version (overall, major, +# minor, patch) is installed. +# +# Caveats: +# +Facter.add("pe_version") do + setcode do + pe_ver = Facter.value("puppetversion").match(/Puppet Enterprise (\d+\.\d+\.\d+)/) + pe_ver[1] if pe_ver + end +end + +Facter.add("is_pe") do + setcode do + if Facter.value(:pe_version).to_s.empty? then + false + else + true + end + end +end + +Facter.add("pe_major_version") do + confine :is_pe => true + setcode do + if pe_version = Facter.value(:pe_version) + pe_version.to_s.split('.')[0] + end + end +end + +Facter.add("pe_minor_version") do + confine :is_pe => true + setcode do + if pe_version = Facter.value(:pe_version) + pe_version.to_s.split('.')[1] + end + end +end + +Facter.add("pe_patch_version") do + confine :is_pe => true + setcode do + if pe_version = Facter.value(:pe_version) + pe_version.to_s.split('.')[2] + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index e269b90..931d35c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -11,3 +11,18 @@ gem 'rspec', '>=2.0.0' require 'rspec/expectations' require 'puppetlabs_spec_helper/module_spec_helper' + +RSpec.configure do |config| + # FIXME REVISIT - We may want to delegate to Facter like we do in + # Puppet::PuppetSpecInitializer.initialize_via_testhelper(config) because + # this behavior is a duplication of the spec_helper in Facter. + config.before :each do + # Ensure that we don't accidentally cache facts and environment between + # test cases. This requires each example group to explicitly load the + # facts being exercised with something like + # Facter.collection.loader.load(:ipaddress) + Facter::Util::Loader.any_instance.stubs(:load_all) + Facter.clear + Facter.clear_messages + end +end diff --git a/spec/unit/facter/pe_version_spec.rb b/spec/unit/facter/pe_version_spec.rb new file mode 100644 index 0000000..202a0e5 --- /dev/null +++ b/spec/unit/facter/pe_version_spec.rb @@ -0,0 +1,68 @@ +#!/usr/bin/env rspec + +require 'spec_helper' + +describe "PE Version specs" do + before :each do + Facter.collection.loader.load(:pe_version) + end + + context "If PE is installed" do + %w{ 2.6.1 2.10.300 }.each do |version| + puppetversion = "2.7.19 (Puppet Enterprise #{version})" + context "puppetversion => #{puppetversion}" do + before :each do + Facter.fact(:puppetversion).stubs(:value).returns(puppetversion) + end + + (major,minor,patch) = version.split(".") + + it "Should return true" do + Facter.fact(:is_pe).value.should == true + end + + it "Should have a version of #{version}" do + Facter.fact(:pe_version).value.should == version + end + + it "Should have a major version of #{major}" do + Facter.fact(:pe_major_version).value.should == major + end + + it "Should have a minor version of #{minor}" do + Facter.fact(:pe_minor_version).value.should == minor + end + + it "Should have a patch version of #{patch}" do + Facter.fact(:pe_patch_version).value.should == patch + end + end + end + end + + context "When PE is not installed" do + before :each do + Facter.fact(:puppetversion).stubs(:value).returns("2.7.19") + end + + it "is_pe is false" do + Facter.fact(:is_pe).value.should == false + end + + it "pe_version is nil" do + Facter.fact(:pe_version).value.should be_nil + end + + it "pe_major_version is nil" do + Facter.fact(:pe_major_version).value.should be_nil + end + + it "pe_minor_version is nil" do + Facter.fact(:pe_minor_version).value.should be_nil + end + + it "Should have a patch version" do + Facter.fact(:pe_patch_version).value.should be_nil + end + end +end -- cgit v1.2.3