Rev 4263: Add more tests for unicode symlinks to test_transform. in file:///home/vila/src/bzr/bugs/355454-unicode-warning/

Vincent Ladeuil v.ladeuil+lp at free.fr
Fri Apr 17 09:54:45 BST 2009


At file:///home/vila/src/bzr/bugs/355454-unicode-warning/

------------------------------------------------------------
revno: 4263
revision-id: v.ladeuil+lp at free.fr-20090417085444-zweb9i1no259oz6k
parent: v.ladeuil+lp at free.fr-20090417080436-j1q0a5adj7t20b12
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 355454-unicode-warning
timestamp: Fri 2009-04-17 10:54:44 +0200
message:
  Add more tests for unicode symlinks to test_transform.
  
  * bzrlib/tests/test_transform.py:
  (TestTreeTransform._test_symlinks): Factored out.
  (
  (TestTreeTransform.test_symlinks,
  TestTreeTransform.test_symlinks_unicode): Also test unicode
  symlinks.
  (TestSerializeTransform.test_deserialize_symlink_creation): Use
  osutils.readlink().
-------------- next part --------------
=== modified file 'BRANCH.TODO'
--- a/BRANCH.TODO	2009-04-16 21:31:35 +0000
+++ b/BRANCH.TODO	2009-04-17 08:54:44 +0000
@@ -5,17 +5,11 @@
 
 - use osutils.readlink in: 
 
-  - bzrlib/tests/test_transform.py
-  - bzrlib/transform.py _PreviewTree.get_symlink_target
   - bzrlib/workingtree.py WorkingTree.path_content_summary and
     get_symlink_target
  
 - finish parametrizing bzrlib/tests/test__dirstate_helpers.py
 
-- add unicode symlink tests in :
-
-  - bzrlib/tests/test_transform.py
-
 - clean up spurious changes
 
 - check all pdb and pronto calls

=== modified file 'bzrlib/tests/test_transform.py'
--- a/bzrlib/tests/test_transform.py	2009-04-16 14:13:57 +0000
+++ b/bzrlib/tests/test_transform.py	2009-04-17 08:54:44 +0000
@@ -525,27 +525,42 @@
         resolve_conflicts(replace)
         replace.apply()
 
-    # unicode symlinks ?
-    def test_symlinks(self):
+    def _test_symlinks(self, link_name1,link_target1,
+                       link_name2, link_target2):
+
+        def ozpath(p): return 'oz/' + p
+
         self.requireFeature(SymlinkFeature)
         transform, root = self.get_transform()
         oz_id = transform.new_directory('oz', root, 'oz-id')
-        wizard = transform.new_symlink('wizard', oz_id, 'wizard-target',
+        wizard = transform.new_symlink(link_name1, oz_id, link_target1,
                                        'wizard-id')
-        wiz_id = transform.create_path('wizard2', oz_id)
-        transform.create_symlink('behind_curtain', wiz_id)
+        wiz_id = transform.create_path(link_name2, oz_id)
+        transform.create_symlink(link_target2, wiz_id)
         transform.version_file('wiz-id2', wiz_id)
         transform.set_executability(True, wiz_id)
         self.assertEqual(transform.find_conflicts(),
                          [('non-file executability', wiz_id)])
         transform.set_executability(None, wiz_id)
         transform.apply()
-        self.assertEqual(self.wt.path2id('oz/wizard'), 'wizard-id')
-        self.assertEqual(file_kind(self.wt.abspath('oz/wizard')), 'symlink')
-        self.assertEqual(os.readlink(self.wt.abspath('oz/wizard2')),
-                         'behind_curtain')
-        self.assertEqual(os.readlink(self.wt.abspath('oz/wizard')),
-                         'wizard-target')
+        self.assertEqual(self.wt.path2id(ozpath(link_name1)), 'wizard-id')
+        self.assertEqual('symlink',
+                         file_kind(self.wt.abspath(ozpath(link_name1))))
+        self.assertEqual(link_target2,
+                         osutils.readlink(self.wt.abspath(ozpath(link_name2))))
+        self.assertEqual(link_target1,
+                         osutils.readlink(self.wt.abspath(ozpath(link_name1))))
+
+    def test_symlinks(self):
+        self._test_symlinks('wizard', 'wizard-target',
+                            'wizard2', 'behind_curtain')
+
+    def test_symlinks_unicode(self):
+        self.requireFeature(tests.UnicodeFilenameFeature)
+        self._test_symlinks(u'\N{Euro Sign}wizard',
+                            u'wizard-targ\N{Euro Sign}t',
+                            u'\N{Euro Sign}wizard2',
+                            u'b\N{Euro Sign}hind_curtain')
 
     def test_unable_create_symlink(self):
         def tt_helper():
@@ -2693,8 +2708,7 @@
         tt = self.get_preview()
         tt.deserialize(iter(self.symlink_creation_records()))
         abspath = tt._limbo_name('new-1')
-        # FIXME: should use a safe readlink impl.
-        foo_content = os.readlink(abspath).decode(osutils._fs_enc)
+        foo_content = osutils.readlink(abspath)
         self.assertEqual(u'bar\u1234', foo_content)
 
     def make_destruction_preview(self):



More information about the bazaar-commits mailing list