Skip to content

Commit

Permalink
Merge pull request #215 from blkperl/add_root_home_to_mavericks
Browse files Browse the repository at this point in the history
(PUP-1459) Add support for root_home on OS X 10.9
  • Loading branch information
zaphod42 committed Jan 28, 2014
2 parents 2c8450d + fe676f0 commit a2e9d00
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 9 deletions.
13 changes: 13 additions & 0 deletions lib/facter/root_home.rb
Expand Up @@ -17,3 +17,16 @@ def get_root_home
Facter.add(:root_home) do
setcode { Facter::Util::RootHome.get_root_home }
end

Facter.add(:root_home) do
confine :kernel => :darwin
setcode do
str = Facter::Util::Resolution.exec("dscacheutil -q user -a name root")
hash = {}
str.split("\n").each do |pair|
key,value = pair.split(/:/)
hash[key] = value
end
hash['dir'].strip
end
end
8 changes: 8 additions & 0 deletions spec/fixtures/dscacheutil/root
@@ -0,0 +1,8 @@
name: root
password: *
uid: 0
gid: 0
dir: /var/root
shell: /bin/bash
gecos: rawr Root

29 changes: 20 additions & 9 deletions spec/unit/facter/root_home_spec.rb
Expand Up @@ -20,15 +20,6 @@
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)
Expand All @@ -38,3 +29,23 @@
end
end
end

describe 'root_home', :type => :fact do
before { Facter.clear }
after { Facter.clear }

context "macosx" do
before do
Facter.fact(:kernel).stubs(:value).returns("Darwin")
Facter.fact(:osfamily).stubs(:value).returns("Darwin")
end
let(:expected_root_home) { "/var/root" }
sample_dscacheutil = File.read(fixtures('dscacheutil','root'))

it "should return /var/root" do
Facter::Util::Resolution.stubs(:exec).with("dscacheutil -q user -a name root").returns(sample_dscacheutil)
Facter.fact(:root_home).value.should == expected_root_home
end
end

end

0 comments on commit a2e9d00

Please sign in to comment.