]> gitweb.fluxo.info Git - puppet-stdlib.git/commitdiff
(PUP-1459) Add support for root_home on OS X 10.9
authorWilliam Van Hevelingen <blkperl@cat.pdx.edu>
Fri, 17 Jan 2014 06:22:38 +0000 (22:22 -0800)
committerWilliam Van Hevelingen <blkperl@cat.pdx.edu>
Thu, 23 Jan 2014 06:54:34 +0000 (22:54 -0800)
getent does not exist on 10.9 so this commit uses
dscacheutil to query the homedir for the root user.

lib/facter/root_home.rb
spec/fixtures/dscacheutil/root [new file with mode: 0644]
spec/unit/facter/root_home_spec.rb

index 8249f7d0256c458485b79229a4775e2011de574d..b4f87ff2ab2c7a49a421d2e5281d8d9f86211f97 100644 (file)
@@ -17,3 +17,16 @@ end
 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
diff --git a/spec/fixtures/dscacheutil/root b/spec/fixtures/dscacheutil/root
new file mode 100644 (file)
index 0000000..1e34519
--- /dev/null
@@ -0,0 +1,8 @@
+name: root
+password: *
+uid: 0
+gid: 0
+dir: /var/root
+shell: /bin/bash
+gecos: rawr Root
+
index ce80684caeeef48fbbd31ce4713771ca8bc7e5b6..532fae1f12df14ae3380c571f9ed65e1a91b45c6 100644 (file)
@@ -20,15 +20,6 @@ describe Facter::Util::RootHome do
       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)
@@ -38,3 +29,23 @@ describe Facter::Util::RootHome do
     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