Merge branch '2.5.x' into 3.0.x

* 2.5.x:
  Update Modulefile, CHANGELOG for 2.5.0
  Explicitly load functions used by ensure_resource
  re-formatting
  Add better docs about duplicate resource failures
  Handle undef for parameter argument
  Add function ensure_resource and defined_with_params
  Revert "Revert "Merge branch 'haus-add_pe_facts_to_stdlib' into 2.4.x""
  Revert "Merge branch 'haus-add_pe_facts_to_stdlib' into 2.4.x"
  Prevent undefined method `split' for nil:NilClass with pe_foo_version facts
  (maint) Clear all facts before each example
  Add spec tests for pe_version facts
  Add PE facts to stdlib

Conflicts:
	CHANGELOG
	Modulefile
	spec/spec_helper.rb
This commit is contained in:
Jeff McCune 2012-10-25 11:59:02 -07:00
commit c8c7afc7a0
4 changed files with 160 additions and 0 deletions

View file

@ -14,6 +14,30 @@
2012-04-10 - Chris Price <chris@puppetlabs.com> - 3.0.0
* (#13693) moving logic from local spec_helper to puppetlabs_spec_helper (85f96df)
2012-10-23 - Matthaus Owens <matthaus@puppetlabs.com> - 2.5.0
* Add PE facts to stdlib (cdf3b05)
2012-08-15 - Dan Bode <dan@puppetlabs.com> - 2.5.0
* Explicitly load functions used by ensure_resource (9fc3063)
2012-08-13 - Dan Bode <dan@puppetlabs.com> - 2.5.0
* Add better docs about duplicate resource failures (97d327a)
2012-08-13 - Dan Bode <dan@puppetlabs.com> - 2.5.0
* Handle undef for parameter argument (4f8b133)
2012-08-07 - Dan Bode <dan@puppetlabs.com> - 2.5.0
* Add function ensure_resource and defined_with_params (a0cb8cd)
2012-08-20 - Jeff McCune <jeff@puppetlabs.com> - 2.5.0
* Disable tests that fail on 2.6.x due to #15912 (c81496e)
2012-08-20 - Jeff McCune <jeff@puppetlabs.com> - 2.5.0
* (Maint) Fix mis-use of rvalue functions as statements (4492913)
2012-08-20 - Jeff McCune <jeff@puppetlabs.com> - 2.5.0
* Add .rspec file to repo root (88789e8)
2012-06-07 - Chris Price <chris@puppetlabs.com> - 2.4.0
* Add support for a 'match' parameter to file_line (a06c0d8)

53
lib/facter/pe_version.rb Normal file
View file

@ -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

View file

@ -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

View file

@ -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