SVN: zdaemon/trunk/src/zdaemon/ fix directory chown and add a test

Christian Zagrodnick <[email protected]>
Newsgroups gmane.comp.web.zope.zope3.cvs
Message-ID <[email protected]>
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:
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.