/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: Jelmer Vernooij
  • Date: 2018-08-18 22:45:58 UTC
  • mto: This revision was merged to the branch mainline in revision 7101.
  • Revision ID: jelmer@jelmer.uk-20180818224558-8ki0baw0ea5jmlqa
Some more walkdir fixes.

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(b'./test-unreadable', 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]
 
1252
            dirdetail = (dirdetail[0].decode('utf-8'), dirdetail[1].decode('utf-8'))
1253
1253
            result.append((dirdetail, dirblock))
1254
1254
 
1255
1255
        self.assertTrue(found_bzrdir)
1274
1274
        self.overrideAttr(osutils, '_fs_enc')
1275
1275
        self.overrideAttr(osutils, '_selected_dir_reader')
1276
1276
 
1277
 
    def assertDirReaderIs(self, expected):
 
1277
    def assertDirReaderIs(self, expected, top):
1278
1278
        """Assert the right implementation for _walkdirs_utf8 is chosen."""
1279
1279
        # Force it to redetect
1280
1280
        osutils._selected_dir_reader = None
1281
1281
        # Nothing to list, but should still trigger the selection logic
1282
 
        self.assertEqual([((b'', '.'), [])], list(osutils._walkdirs_utf8('.')))
 
1282
        self.assertEqual([((b'', top), [])], list(osutils._walkdirs_utf8('.')))
1283
1283
        self.assertIsInstance(osutils._selected_dir_reader, expected)
1284
1284
 
1285
1285
    def test_force_walkdirs_utf8_fs_utf8(self):
1286
1286
        self.requireFeature(UTF8DirReaderFeature)
1287
1287
        self._save_platform_info()
1288
1288
        osutils._fs_enc = 'utf-8'
1289
 
        self.assertDirReaderIs(
1290
 
            UTF8DirReaderFeature.module.UTF8DirReader)
 
1289
        self.assertDirReaderIs(UTF8DirReaderFeature.module.UTF8DirReader, b".")
1291
1290
 
1292
1291
    def test_force_walkdirs_utf8_fs_ascii(self):
1293
1292
        self.requireFeature(UTF8DirReaderFeature)
1294
1293
        self._save_platform_info()
1295
1294
        osutils._fs_enc = 'ascii'
1296
1295
        self.assertDirReaderIs(
1297
 
            UTF8DirReaderFeature.module.UTF8DirReader)
 
1296
            UTF8DirReaderFeature.module.UTF8DirReader, b".")
1298
1297
 
1299
1298
    def test_force_walkdirs_utf8_fs_latin1(self):
1300
1299
        self._save_platform_info()
1301
1300
        osutils._fs_enc = 'iso-8859-1'
1302
 
        self.assertDirReaderIs(osutils.UnicodeDirReader)
 
1301
        self.assertDirReaderIs(osutils.UnicodeDirReader, ".")
1303
1302
 
1304
1303
    def test_force_walkdirs_utf8_nt(self):
1305
1304
        # Disabled because the thunk of the whole walkdirs api is disabled.
1306
1305
        self.requireFeature(test__walkdirs_win32.win32_readdir_feature)
1307
1306
        self._save_platform_info()
1308
1307
        from .._walkdirs_win32 import Win32ReadDir
1309
 
        self.assertDirReaderIs(Win32ReadDir)
 
1308
        self.assertDirReaderIs(Win32ReadDir, ".")
1310
1309
 
1311
1310
    def test_unicode_walkdirs(self):
1312
1311
        """Walkdirs should always return unicode paths."""
1806
1805
            ]
1807
1806
        expected_dirblocks = [
1808
1807
                ((b'', '.'),
1809
 
                 [(b'0file', b'0file', 'file'),
1810
 
                  (b'1dir', b'1dir', 'directory'),
1811
 
                  (b'2file', b'2file', 'file'),
 
1808
                 [(b'0file', b'0file', 'file', './0file'),
 
1809
                  (b'1dir', b'1dir', 'directory', './1dir'),
 
1810
                  (b'2file', b'2file', 'file', './2file'),
1812
1811
                 ]
1813
1812
                ),
1814
1813
                ((b'1dir', './1dir'),
1815
 
                 [(b'1dir/0file', b'0file', 'file'),
1816
 
                  (b'1dir/1dir', b'1dir', 'directory'),
 
1814
                 [(b'1dir/0file', b'0file', 'file', './1dir/0file'),
 
1815
                  (b'1dir/1dir', b'1dir', 'directory', './1dir/1dir'),
1817
1816
                 ]
1818
1817
                ),
1819
1818
                ((b'1dir/1dir', './1dir/1dir'),
1829
1828
        result = list(osutils._walkdirs_utf8('.'))
1830
1829
        # Filter out stat and abspath
1831
1830
        self.assertEqual(expected_dirblocks,
1832
 
                         [(dirinfo, [line[0:3] for line in block])
1833
 
                          for dirinfo, block in result])
 
1831
                self._filter_out(result))
1834
1832
 
1835
1833
    def test_walk_sub_dir(self):
1836
1834
        tree, expected_dirblocks = self._get_ascii_tree()
1837
1835
        self.build_tree(tree)
1838
1836
        # you can search a subdir only, with a supplied prefix.
1839
 
        result = list(osutils._walkdirs_utf8('./1dir', '1dir'))
 
1837
        result = list(osutils._walkdirs_utf8(b'./1dir', b'1dir'))
1840
1838
        # Filter out stat and abspath
1841
1839
        self.assertEqual(expected_dirblocks[1:],
1842
 
                         [(dirinfo, [line[0:3] for line in block])
1843
 
                          for dirinfo, block in result])
 
1840
                self._filter_out(result))
1844
1841
 
1845
1842
    def _get_unicode_tree(self):
1846
1843
        name0u = u'0file-\xb6'