(#12357) Fix root_home fact on Windows
Without this patch the root_home fact fails on windows. This patch fixes the problem by only calling methods on the object returned by the `getent passwd root` command if the object evaluates to true. Because there is no root account on Windows the code block simply returns `nil` which makes the Facter fact undefined on Windows platforms. The root cause of the failure is that we always expected the command to succeed and return something useful, and it may not on all supported platforms.
This commit is contained in:
parent
c0ac470e76
commit
afd22ddc99
2 changed files with 8 additions and 8 deletions
|
@ -7,7 +7,9 @@ module Facter::Util::RootHome
|
|||
def get_root_home
|
||||
root_ent = Facter::Util::Resolution.exec("getent passwd root")
|
||||
# The home directory is the sixth element in the passwd entry
|
||||
root_ent.split(":")[5]
|
||||
# If the platform doesn't have getent, root_ent will be nil and we should
|
||||
# return it straight away.
|
||||
root_ent && root_ent.split(":")[5]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -30,13 +30,11 @@ describe Facter::Util::RootHome do
|
|||
end
|
||||
end
|
||||
context "windows" do
|
||||
let(:root_ent) { "FIXME TBD on Windows" }
|
||||
let(:expected_root_home) { "FIXME TBD on Windows" }
|
||||
|
||||
it "should return FIXME TBD on windows" do
|
||||
pending "FIXME: TBD on windows"
|
||||
Facter::Util::Resolution.expects(:exec).with("getent passwd root").returns(root_ent)
|
||||
Facter::Util::RootHome.get_root_home.should == expected_root_home
|
||||
before :each do
|
||||
Facter::Util::Resolution.expects(:exec).with("getent passwd root").returns(nil)
|
||||
end
|
||||
it "should be nil on windows" do
|
||||
Facter::Util::RootHome.get_root_home.should be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue