Rev 5064: (vila) Fix for .bazaar ownership regression for bug #376388. (Parth in file:///home/pqm/archives/thelove/bzr/2.2/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Wed Jul 21 17:13:27 BST 2010


At file:///home/pqm/archives/thelove/bzr/2.2/

------------------------------------------------------------
revno: 5064 [merge]
revision-id: pqm at pqm.ubuntu.com-20100721161324-olpb0anw2ss7t5x2
parent: pqm at pqm.ubuntu.com-20100721112253-4c8u0jdfqsk5o412
parent: parth.malwankar at gmail.com-20100721031456-tpte0wnmyyvzm3mn
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: 2.2
timestamp: Wed 2010-07-21 17:13:24 +0100
message:
  (vila) Fix for .bazaar ownership regression for bug #376388. (Parth
   Malwankar)
modified:
  bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
  bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
=== modified file 'bzrlib/config.py'
--- a/bzrlib/config.py	2010-07-13 16:10:20 +0000
+++ b/bzrlib/config.py	2010-07-21 03:14:56 +0000
@@ -479,10 +479,12 @@
         return self.get_user_option('nickname')
 
     def _write_config_file(self):
-        atomic_file = atomicfile.AtomicFile(self._get_filename())
+        filename = self._get_filename()
+        atomic_file = atomicfile.AtomicFile(filename)
         self._get_parser().write(atomic_file)
         atomic_file.commit()
         atomic_file.close()
+        osutils.copy_ownership_from_path(filename)
 
 
 class GlobalConfig(IniBasedConfig):

=== modified file 'bzrlib/tests/test_config.py'
--- a/bzrlib/tests/test_config.py	2010-04-23 07:15:23 +0000
+++ b/bzrlib/tests/test_config.py	2010-07-21 03:07:02 +0000
@@ -35,6 +35,7 @@
     trace,
     transport,
     )
+from bzrlib.tests import features
 from bzrlib.util.configobj import configobj
 
 
@@ -367,7 +368,7 @@
             '/home/bogus/.cache')
 
 
-class TestIniConfig(tests.TestCase):
+class TestIniConfig(tests.TestCaseInTempDir):
 
     def make_config_parser(self, s):
         conf = config.IniBasedConfig(None)
@@ -393,6 +394,22 @@
         parser = my_config._get_parser(file=config_file)
         self.failUnless(my_config._get_parser() is parser)
 
+    def _dummy_chown(self, path, uid, gid):
+        self.path, self.uid, self.gid = path, uid, gid
+
+    def test_ini_config_ownership(self):
+        """Ensure that chown is happening during _write_config_file.
+        """
+        self.requireFeature(features.chown_feature)
+        self.overrideAttr(os, 'chown', self._dummy_chown)
+        self.path = self.uid = self.gid = None
+        def get_filename():
+            return 'foo.conf'
+        conf = config.IniBasedConfig(get_filename)
+        conf._write_config_file()
+        self.assertEquals(self.path, 'foo.conf')
+        self.assertTrue(isinstance(self.uid, int))
+        self.assertTrue(isinstance(self.gid, int))
 
 class TestGetUserOptionAs(TestIniConfig):
 




More information about the bazaar-commits mailing list