Merge pull request #143 from puppetlabs/master

Update 1.4.x with master changes
This commit is contained in:
Jesse Lovelace
2015-10-06 18:20:34 -05:00
5 changed files with 63 additions and 11 deletions

View File

@@ -12,12 +12,23 @@
# Notes:
# None
Facter.add(:java_version) do
# the OS-specific overrides need to be able to return nil,
# to indicate "no java available". Usually returning nil
# would mean that facter falls back to a lower priority
# resolution, which would then trigger MODULES-2637. To
# avoid that, we confine the "default" here to not run
# on those OS.
# Additionally, facter versions prior to 2.0.1 only support
# positive matches, so this needs to be done manually in setcode.
setcode do
if Facter::Util::Resolution.which('java')
Facter::Util::Resolution.exec('java -Xmx8m -version 2>&1').lines.first.split(/"/)[1].strip
unless [ 'openbsd', 'darwin' ].include? Facter.value(:operatingsystem).downcase
if Facter::Util::Resolution.which('java')
Facter::Util::Resolution.exec('java -Xmx8m -version 2>&1').lines.first.split(/"/)[1].strip
end
end
end
end
Facter.add(:java_version) do
confine :operatingsystem => 'OpenBSD'
has_weight 100
@@ -29,3 +40,13 @@ Facter.add(:java_version) do
end
end
end
Facter.add(:java_version) do
confine :operatingsystem => 'Darwin'
has_weight 100
setcode do
unless /Unable to find any JVMs matching version/ =~ Facter::Util::Resolution.exec('/usr/libexec/java_home --failfast 2>&1')
Facter::Util::Resolution.exec('java -Xmx8m -version 2>&1').lines.first.split(/"/)[1].strip
end
end
end

View File

@@ -1 +1,6 @@
require 'puppetlabs_spec_helper/module_spec_helper'
RSpec.configure do |c|
# declare an exclusion filter for the tests using with_env on facter 1.6, as the function is not available on 1.6
c.filter_run_excluding :with_env => true if Facter.version =~ /^1\.6\./
end

View File

@@ -11,7 +11,7 @@ describe Facter::Util::Fact do
Facter.fact(:java_version).stubs(:value).returns('1.7.0_71')
end
it do
Facter.fact(:java_major_version).value.should == "7"
expect(Facter.fact(:java_major_version).value).to eq("7")
end
end
@@ -20,8 +20,8 @@ describe Facter::Util::Fact do
Facter.fact(:java_version).stubs(:value).returns(nil)
end
it do
Facter.fact(:java_major_version).value.should be_nil
expect(Facter.fact(:java_major_version).value).to be_nil
end
end
end
end
end

View File

@@ -12,7 +12,7 @@ describe Facter::Util::Fact do
Facter.fact(:java_version).stubs(:value).returns('1.7.0_71')
end
it do
Facter.fact(:java_patch_level).value.should == "71"
expect(Facter.fact(:java_patch_level).value).to eq("71")
end
end
end
@@ -23,7 +23,7 @@ describe Facter::Util::Fact do
Facter.fact(:java_version).stubs(:value).returns(nil)
end
it do
Facter.fact(:java_patch_level).value.should be_nil
expect(Facter.fact(:java_patch_level).value).to be_nil
end
end
end

View File

@@ -7,7 +7,7 @@ describe Facter::Util::Fact do
describe "java_version" do
context 'returns java version when java present' do
context 'on OpenBSD' do
context 'on OpenBSD', :with_env => true do
before do
Facter.fact(:operatingsystem).stubs(:value).returns("OpenBSD")
end
@@ -20,6 +20,22 @@ OpenJDK 64-Bit Server VM (build 24.71-b01, mixed mode)
EOS
Facter::Util::Resolution.expects(:which).with("java").returns('/usr/local/jdk-1.7.0/jre/bin/java')
Facter::Util::Resolution.expects(:exec).with("java -Xmx8m -version 2>&1").returns(java_version_output)
expect(Facter.value(:java_version)).to eq("1.7.0_71")
end
end
context 'on Darwin' do
before do
Facter.fact(:operatingsystem).stubs(:value).returns("Darwin")
end
let(:facts) { {:operatingsystem => 'Darwin'} }
it do
java_version_output = <<-EOS
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
EOS
Facter::Util::Resolution.expects(:exec).with("/usr/libexec/java_home --failfast 2>&1").returns("/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home")
Facter::Util::Resolution.expects(:exec).with("java -Xmx8m -version 2>&1").returns(java_version_output)
Facter.value(:java_version).should == "1.7.0_71"
end
end
@@ -35,19 +51,29 @@ Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
EOS
Facter::Util::Resolution.expects(:exec).with("java -Xmx8m -version 2>&1").returns(java_version_output)
Facter.value(:java_version).should == "1.7.0_71"
expect(Facter.value(:java_version)).to eq("1.7.0_71")
end
end
end
context 'returns nil when java not present' do
context 'on OpenBSD' do
context 'on OpenBSD', :with_env => true do
before do
Facter.fact(:operatingsystem).stubs(:value).returns("OpenBSD")
end
let(:facts) { {:operatingsystem => 'OpenBSD'} }
it do
Facter::Util::Resolution.stubs(:exec)
expect(Facter.value(:java_version)).to be_nil
end
end
context 'on Darwin' do
before do
Facter.fact(:operatingsystem).stubs(:value).returns("Darwin")
end
let(:facts) { {:operatingsystem => 'Darwin'} }
it do
Facter::Util::Resolution.expects(:exec).at_least(1).with("/usr/libexec/java_home --failfast 2>&1").returns('Unable to find any JVMs matching version "(null)".')
Facter.value(:java_version).should be_nil
end
end
@@ -58,7 +84,7 @@ Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
let(:facts) { {:operatingsystem => 'MyOS'} }
it do
Facter::Util::Resolution.expects(:which).at_least(1).with("java").returns(false)
Facter.value(:java_version).should be_nil
expect(Facter.value(:java_version)).to be_nil
end
end
end