[Zodb-checkins] SVN: zdaemon/trunk/src/zdaemon/ fix directory chown and add a test

Christian Zagrodnick cz at gocept.com
Thu Jan 29 03:43:31 EST 2009


Log message for revision 95384:
  fix directory chown and add a test
  

Changed:
  U   zdaemon/trunk/src/zdaemon/tests/testzdrun.py
  U   zdaemon/trunk/src/zdaemon/zdctl.py

-=-
Modified: zdaemon/trunk/src/zdaemon/tests/testzdrun.py
===================================================================
--- zdaemon/trunk/src/zdaemon/tests/testzdrun.py	2009-01-29 08:35:16 UTC (rev 95383)
+++ zdaemon/trunk/src/zdaemon/tests/testzdrun.py	2009-01-29 08:43:30 UTC (rev 95384)
@@ -392,7 +392,31 @@
         open(config_file, 'w').write(config)
         return config_file
 
+    def testDirectoryChown(self):
+        path = os.path.join(self.root, 'foodir')
+        options = zdctl.ZDCtlOptions()
+        options.realize(['-p', self.cmd])
+        cmd = zdctl.ZDCmd(options)
+        options.uid = 27
+        options.gid = 28
+        # Patch chown and geteuid, because we're not root
+        chown = os.chown
+        geteuid = os.geteuid
+        calls = []
+        def my_chown(*args):
+            calls.append(('chown',) + args)
+        def my_geteuid():
+            return 0
+        try:
+            os.chown = my_chown
+            os.geteuid = my_geteuid
+            cmd.create_directory(path)
+        finally:
+            os.chown = chown
+            os.geteuid = geteuid
+        self.assertEqual([('chown', path, 27, 28)], calls)
 
+
 def send_action(action, sockname):
     """Send an action to the zdrun server and return the response.
 

Modified: zdaemon/trunk/src/zdaemon/zdctl.py
===================================================================
--- zdaemon/trunk/src/zdaemon/zdctl.py	2009-01-29 08:35:16 UTC (rev 95383)
+++ zdaemon/trunk/src/zdaemon/zdctl.py	2009-01-29 08:43:30 UTC (rev 95384)
@@ -167,7 +167,7 @@
         uid = os.geteuid()
         if uid == 0 and uid != self.options.uid:
             # Change owner of directory to target
-            os.chown(self.options.uid, self.options.gid)
+            os.chown(directory, self.options.uid, self.options.gid)
 
     def set_uid(self):
         if self.options.uid is None:



More information about the Zodb-checkins mailing list