/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/test_osutils.py

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2018-09-11 02:50:43 UTC
  • mfrom: (7067.16.7 fix-c-extensions)
  • Revision ID: breezy.the.bot@gmail.com-20180911025043-c4v82nhbajxniw2y
Fix remaining Cython extensions on Python 3.

Merged from https://code.launchpad.net/~jelmer/brz/fix-c-extensions/+merge/353369

Show diffs side-by-side

added added

removed removed

Lines of Context:
1176
1176
        # (It would be ok if it happened earlier but at the moment it
1177
1177
        # doesn't.)
1178
1178
        e = self.assertRaises(OSError, list, osutils._walkdirs_utf8("."))
1179
 
        self.assertEqual('./test-unreadable', e.filename)
 
1179
        self.assertEqual('./test-unreadable', osutils.safe_unicode(e.filename))
1180
1180
        self.assertEqual(errno.EACCES, e.errno)
1181
1181
        # Ensure the message contains the file name
1182
1182
        self.assertContainsRe(str(e), "\\./test-unreadable")
1183
1183
 
1184
 
 
1185
1184
    def test_walkdirs_encoding_error(self):
1186
1185
        # <https://bugs.launchpad.net/bzr/+bug/488519>
1187
1186
        # walkdirs didn't raise a useful message when the filenames
1250
1249
                # this tests the filtering of selected paths
1251
1250
                found_bzrdir = True
1252
1251
                del dirblock[0]
1253
 
            dirdetail = (dirdetail[0].decode('utf-8'), dirdetail[1])
 
1252
            dirdetail = (dirdetail[0].decode('utf-8'), osutils.safe_unicode(dirdetail[1]))
1254
1253
            dirblock = [
1255
1254
                    (entry[0].decode('utf-8'), entry[1].decode('utf-8'), entry[2])
1256
1255
                    for entry in dirblock]
1278
1277
        self.overrideAttr(osutils, '_fs_enc')
1279
1278
        self.overrideAttr(osutils, '_selected_dir_reader')
1280
1279
 
1281
 
    def assertDirReaderIs(self, expected):
 
1280
    def assertDirReaderIs(self, expected, top):
1282
1281
        """Assert the right implementation for _walkdirs_utf8 is chosen."""
1283
1282
        # Force it to redetect
1284
1283
        osutils._selected_dir_reader = None
1285
1284
        # Nothing to list, but should still trigger the selection logic
1286
 
        self.assertEqual([((b'', '.'), [])], list(osutils._walkdirs_utf8('.')))
 
1285
        self.assertEqual([((b'', top), [])], list(osutils._walkdirs_utf8('.')))
1287
1286
        self.assertIsInstance(osutils._selected_dir_reader, expected)
1288
1287
 
1289
1288
    def test_force_walkdirs_utf8_fs_utf8(self):
1290
1289
        self.requireFeature(UTF8DirReaderFeature)
1291
1290
        self._save_platform_info()
1292
1291
        osutils._fs_enc = 'utf-8'
1293
 
        self.assertDirReaderIs(
1294
 
            UTF8DirReaderFeature.module.UTF8DirReader)
 
1292
        self.assertDirReaderIs(UTF8DirReaderFeature.module.UTF8DirReader, b".")
1295
1293
 
1296
1294
    def test_force_walkdirs_utf8_fs_ascii(self):
1297
1295
        self.requireFeature(UTF8DirReaderFeature)
1298
1296
        self._save_platform_info()
1299
1297
        osutils._fs_enc = 'ascii'
1300
1298
        self.assertDirReaderIs(
1301
 
            UTF8DirReaderFeature.module.UTF8DirReader)
 
1299
            UTF8DirReaderFeature.module.UTF8DirReader, b".")
1302
1300
 
1303
1301
    def test_force_walkdirs_utf8_fs_latin1(self):
1304
1302
        self._save_platform_info()
1305
1303
        osutils._fs_enc = 'iso-8859-1'
1306
 
        self.assertDirReaderIs(osutils.UnicodeDirReader)
 
1304
        self.assertDirReaderIs(osutils.UnicodeDirReader, ".")
1307
1305
 
1308
1306
    def test_force_walkdirs_utf8_nt(self):
1309
1307
        # Disabled because the thunk of the whole walkdirs api is disabled.
1310
1308
        self.requireFeature(test__walkdirs_win32.win32_readdir_feature)
1311
1309
        self._save_platform_info()
1312
1310
        from .._walkdirs_win32 import Win32ReadDir
1313
 
        self.assertDirReaderIs(Win32ReadDir)
 
1311
        self.assertDirReaderIs(Win32ReadDir, ".")
1314
1312
 
1315
1313
    def test_unicode_walkdirs(self):
1316
1314
        """Walkdirs should always return unicode paths."""
1813
1811
            ]
1814
1812
        expected_dirblocks = [
1815
1813
                ((b'', '.'),
1816
 
                 [(b'0file', b'0file', 'file'),
1817
 
                  (b'1dir', b'1dir', 'directory'),
1818
 
                  (b'2file', b'2file', 'file'),
 
1814
                 [(b'0file', b'0file', 'file', './0file'),
 
1815
                  (b'1dir', b'1dir', 'directory', './1dir'),
 
1816
                  (b'2file', b'2file', 'file', './2file'),
1819
1817
                 ]
1820
1818
                ),
1821
1819
                ((b'1dir', './1dir'),
1822
 
                 [(b'1dir/0file', b'0file', 'file'),
1823
 
                  (b'1dir/1dir', b'1dir', 'directory'),
 
1820
                 [(b'1dir/0file', b'0file', 'file', './1dir/0file'),
 
1821
                  (b'1dir/1dir', b'1dir', 'directory', './1dir/1dir'),
1824
1822
                 ]
1825
1823
                ),
1826
1824
                ((b'1dir/1dir', './1dir/1dir'),
1836
1834
        result = list(osutils._walkdirs_utf8('.'))
1837
1835
        # Filter out stat and abspath
1838
1836
        self.assertEqual(expected_dirblocks,
1839
 
                         [(dirinfo, [line[0:3] for line in block])
1840
 
                          for dirinfo, block in result])
 
1837
                self._filter_out(result))
1841
1838
 
1842
1839
    def test_walk_sub_dir(self):
1843
1840
        tree, expected_dirblocks = self._get_ascii_tree()
1844
1841
        self.build_tree(tree)
1845
1842
        # you can search a subdir only, with a supplied prefix.
1846
 
        result = list(osutils._walkdirs_utf8('./1dir', '1dir'))
 
1843
        result = list(osutils._walkdirs_utf8(b'./1dir', b'1dir'))
1847
1844
        # Filter out stat and abspath
1848
1845
        self.assertEqual(expected_dirblocks[1:],
1849
 
                         [(dirinfo, [line[0:3] for line in block])
1850
 
                          for dirinfo, block in result])
 
1846
                self._filter_out(result))
1851
1847
 
1852
1848
    def _get_unicode_tree(self):
1853
1849
        name0u = u'0file-\xb6'