afd22ddc99
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.
40 lines
1.3 KiB
Ruby
40 lines
1.3 KiB
Ruby
require 'spec_helper'
|
|
require 'facter/root_home'
|
|
|
|
describe Facter::Util::RootHome do
|
|
context "solaris" do
|
|
let(:root_ent) { "root:x:0:0:Super-User:/:/sbin/sh" }
|
|
let(:expected_root_home) { "/" }
|
|
|
|
it "should return /" do
|
|
Facter::Util::Resolution.expects(:exec).with("getent passwd root").returns(root_ent)
|
|
Facter::Util::RootHome.get_root_home.should == expected_root_home
|
|
end
|
|
end
|
|
context "linux" do
|
|
let(:root_ent) { "root:x:0:0:root:/root:/bin/bash" }
|
|
let(:expected_root_home) { "/root" }
|
|
|
|
it "should return /root" do
|
|
Facter::Util::Resolution.expects(:exec).with("getent passwd root").returns(root_ent)
|
|
Facter::Util::RootHome.get_root_home.should == expected_root_home
|
|
end
|
|
end
|
|
context "macosx" do
|
|
let(:root_ent) { "root:*:0:0:System Administrator:/var/root:/bin/sh" }
|
|
let(:expected_root_home) { "/var/root" }
|
|
|
|
it "should return /var/root" do
|
|
Facter::Util::Resolution.expects(:exec).with("getent passwd root").returns(root_ent)
|
|
Facter::Util::RootHome.get_root_home.should == expected_root_home
|
|
end
|
|
end
|
|
context "windows" do
|
|
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
|