diff --git a/lib/facter/java_major_version.rb b/lib/facter/java_major_version.rb new file mode 100644 index 0000000..b0a0aae --- /dev/null +++ b/lib/facter/java_major_version.rb @@ -0,0 +1,20 @@ +# Fact: java_major_version +# +# Purpose: get Java's major version +# +# Resolution: +# Tests for presence of java, returns nil if not present +# returns output of "java -version" and splits on \n + '"' +# eg. +# +# Caveats: +# none +# +# Notes: +# None +Facter.add(:java_major_version) do + setcode do + java_version = Facter.value(:java_version) + java_patch_level = java_version.strip.split('_')[0].split('.')[1] unless java_version.nil? + end +end \ No newline at end of file diff --git a/lib/facter/java_patch_level.rb b/lib/facter/java_patch_level.rb new file mode 100644 index 0000000..1d7921f --- /dev/null +++ b/lib/facter/java_patch_level.rb @@ -0,0 +1,18 @@ +# Fact: java_patch_level +# +# Purpose: get Java's patch level +# +# Resolution: +# Uses java_version fact splits on the patch number (after _) +# +# Caveats: +# none +# +# Notes: +# None +Facter.add(:java_patch_level) do + setcode do + java_version = Facter.value(:java_version) + java_patch_level = java_version.strip.split('_')[1] unless java_version.nil? + end +end \ No newline at end of file diff --git a/lib/facter/java_version.rb b/lib/facter/java_version.rb new file mode 100644 index 0000000..47d1a66 --- /dev/null +++ b/lib/facter/java_version.rb @@ -0,0 +1,20 @@ +# Fact: java_version +# +# Purpose: get full java version string +# +# Resolution: +# Tests for presence of java, returns nil if not present +# returns output of "java -version" and splits on \n + '"' +# +# Caveats: +# none +# +# Notes: +# None +if Facter::Util::Resolution.which('java') + Facter.add(:java_version) do + setcode do + Facter::Util::Resolution.exec('java -version 2>&1').lines.first.split(/"/)[1].strip + end + end +end diff --git a/spec/unit/facter/java_major_version_spec.rb b/spec/unit/facter/java_major_version_spec.rb new file mode 100644 index 0000000..94d1328 --- /dev/null +++ b/spec/unit/facter/java_major_version_spec.rb @@ -0,0 +1,27 @@ +require "spec_helper" + +describe Facter::Util::Fact do + before { + Facter.clear + } + + describe "java_major_version" do + context 'returns major version when java_version fact present' do + before :each do + Facter.fact(:java_version).stubs(:value).returns('1.7.0_71') + end + it do + Facter.fact(:java_major_version).value.should == "7" + end + end + + context 'returns nil when java not present' do + before :each do + Facter.fact(:java_version).stubs(:value).returns(nil) + end + it do + Facter.fact(:java_major_version).value.should be_nil + end + end + end +end \ No newline at end of file diff --git a/spec/unit/facter/java_patch_level_spec.rb b/spec/unit/facter/java_patch_level_spec.rb new file mode 100644 index 0000000..8371c45 --- /dev/null +++ b/spec/unit/facter/java_patch_level_spec.rb @@ -0,0 +1,31 @@ +require "spec_helper" + +describe Facter::Util::Fact do + before { + Facter.clear + } + + describe "java_patch_level" do + context "if java is installed" do + context 'returns java patch version extracted from java_version fact' do + before :each do + Facter.fact(:java_version).stubs(:value).returns('1.7.0_71') + end + it do + Facter.fact(:java_patch_level).value.should == "71" + end + end + end + + context "if java is installed" do + context 'returns java patch version extracted from java_version fact' do + before :each do + Facter.fact(:java_version).stubs(:value).returns(nil) + end + it do + Facter.fact(:java_patch_level).value.should be_nil + end + end + end + end +end \ No newline at end of file diff --git a/spec/unit/facter/java_version_spec.rb b/spec/unit/facter/java_version_spec.rb new file mode 100644 index 0000000..b90cd46 --- /dev/null +++ b/spec/unit/facter/java_version_spec.rb @@ -0,0 +1,30 @@ +require "spec_helper" + +describe Facter::Util::Fact do + before { + Facter.clear + } + + describe "java_version" do + context 'returns java version when java present' do + 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(:which).with("java").returns(true) + Facter::Util::Resolution.expects(:exec).with("java -version 2>&1").returns(java_version_output) + Facter.fact(:java_version).value.should == "1.7.0_71" + end + end + + context 'returns nil when java not present' do + it do + Facter::Util::Resolution.stubs(:exec) + Facter::Util::Resolution.expects(:which).with("java").returns(false) + Facter.fact(:java_version).should be_nil + end + end + end +end \ No newline at end of file