Fix facter unit test when using realpath

This commit is contained in:
Will Meek
2017-11-15 12:14:26 +00:00
parent e50eb64614
commit e1df6498c7
2 changed files with 23 additions and 17 deletions

View File

@@ -17,12 +17,11 @@ Facter.add(:java_default_home) do
if java_bin.empty? if java_bin.empty?
nil nil
else else
# We might have found a symlink instead of the real binary java_path = File.realpath(java_bin)
java_bin = File.realpath(java_bin) if java_path =~ %r(/jre/)
if java_bin =~ %r(/jre/) java_default_home = File.dirname(File.dirname(File.dirname(java_path)))
java_default_home = File.dirname(File.dirname(File.dirname(java_bin)))
else else
java_default_home = File.dirname(File.dirname(java_bin)) java_default_home = File.dirname(File.dirname(java_path))
end end
end end
end end

View File

@@ -1,5 +1,14 @@
require "spec_helper" require "spec_helper"
def unlink_and_delete(filename)
if File.symlink?(filename)
File.unlink(filename)
end
if File.exist?(filename)
File.delete(filename)
end
end
describe Facter::Util::Fact do describe Facter::Util::Fact do
describe "java_default_home" do describe "java_default_home" do
@@ -10,26 +19,24 @@ describe Facter::Util::Fact do
context 'returns java home path when java found in PATH' do context 'returns java home path when java found in PATH' do
context "when java is in /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java" do context "when java is in /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java" do
it do it do
File.delete('./java') if File.exist?('./java') unlink_and_delete('./java_test')
File.symlink('/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java', './java') File.symlink('/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java', './java_test')
Facter::Util::Resolution.expects(:which).with("java").returns("./java") Facter::Util::Resolution.expects(:which).with("java").returns("./java_test")
expect(File.readlink('./java')).to eq('/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java') File.expects(:realpath).with('./java_test').returns('/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java')
expect(Facter.value(:java_default_home)).to eql '/usr/lib/jvm/java-7-openjdk-amd64' expect(Facter.value(:java_default_home)).to eql '/usr/lib/jvm/java-7-openjdk-amd64'
File.delete('./java') if File.exist?('./java') unlink_and_delete('./java_test')
end end
end end
context "when java is in /usr/lib/jvm/oracle-java8-jre-amd64/bin/java" do context "when java is in /usr/lib/jvm/oracle-java8-jre-amd64/bin/java" do
it do it do
File.delete('./java') if File.exist?('./java') unlink_and_delete('./java_test')
File.symlink('/usr/lib/jvm/oracle-java8-jre-amd64/bin/java', './java') File.symlink('/usr/lib/jvm/oracle-java8-jre-amd64/bin/java', './java_test')
Facter::Util::Resolution.expects(:which).with("java").returns("./java") Facter::Util::Resolution.expects(:which).with("java").returns("./java_test")
expect(File.readlink('./java')).to eq('/usr/lib/jvm/oracle-java8-jre-amd64/bin/java') File.expects(:realpath).with('./java_test').returns('/usr/lib/jvm/oracle-java8-jre-amd64/bin/java')
expect(Facter.value(:java_default_home)).to eql '/usr/lib/jvm/oracle-java8-jre-amd64' expect(Facter.value(:java_default_home)).to eql '/usr/lib/jvm/oracle-java8-jre-amd64'
File.delete('./java') if File.exist?('./java') unlink_and_delete('./java_test')
end end
end end
end end