def test_list_local_files_with_unicode_chars(self): p = os.path.join open(p(self.directory, u"a"), "w").close() open(p(self.directory, u"a\u0300"), "w").close() open(p(self.directory, u"a\u0300-1"), "w").close() open(p(self.directory, u"a\u03001"), "w").close() open(p(self.directory, u"z"), "w").close() open(p(self.directory, u"\u00e6"), "w").close() os.mkdir(p(self.directory, u"a\u0300a")) open(p(self.directory, u"a\u0300a", u"a"), "w").close() open(p(self.directory, u"a\u0300a", u"z"), "w").close() open(p(self.directory, u"a\u0300a", u"\u00e6"), "w").close() file_generator = FileGenerator(None, None, None, None) values = list(el[0] for el in file_generator.list_files(self.directory, dir_op=True)) expected_order = [ os.path.join(self.directory, el) for el in [ u"a", u"a\u0300", u"a\u0300-1", u"a\u03001", u"a\u0300a%sa" % os.path.sep, u"a\u0300a%sz" % os.path.sep, u"a\u0300a%s\u00e6" % os.path.sep, u"z", u"\u00e6", ] ] self.assertEqual(values, expected_order)
def test_list_local_files_with_unicode_chars(self): p = os.path.join open(p(self.directory, u'a'), 'w').close() open(p(self.directory, u'a\u0300'), 'w').close() open(p(self.directory, u'a\u0300-1'), 'w').close() open(p(self.directory, u'a\u03001'), 'w').close() open(p(self.directory, u'z'), 'w').close() open(p(self.directory, u'\u00e6'), 'w').close() os.mkdir(p(self.directory, u'a\u0300a')) open(p(self.directory, u'a\u0300a', u'a'), 'w').close() open(p(self.directory, u'a\u0300a', u'z'), 'w').close() open(p(self.directory, u'a\u0300a', u'\u00e6'), 'w').close() file_generator = FileGenerator(None, None, None) values = list( el[0] for el in file_generator.list_files(self.directory, dir_op=True)) expected_order = [ os.path.join(self.directory, el) for el in [ u"a", u"a\u0300", u"a\u0300-1", u"a\u03001", u"a\u0300a%sa" % os.path.sep, u"a\u0300a%sz" % os.path.sep, u"a\u0300a%s\u00e6" % os.path.sep, u"z", u"\u00e6" ] ] self.assertEqual(values, expected_order)
def test_error_raised_on_decoding_error(self, listdir_mock): # On Python3, sys.getdefaultencoding file_generator = FileGenerator(None, None, None, None) # utf-8 encoding for U+2713. listdir_mock.return_value = [b'\xe2\x9c\x93'] with self.assertRaises(FileDecodingError): list(file_generator.list_files(self.directory, dir_op=True))
def test_error_raised_on_decoding_error(self, listdir_mock): # On Python3, sys.getdefaultencoding file_generator = FileGenerator(None, None, None) # utf-8 encoding for U+2713. listdir_mock.return_value = [b'\xe2\x9c\x93'] with self.assertRaises(FileDecodingError): list(file_generator.list_files(self.directory, dir_op=True))
def test_list_files_is_in_sorted_order(self): p = os.path.join open(p(self.directory, "test-123.txt"), "w").close() open(p(self.directory, "test-321.txt"), "w").close() open(p(self.directory, "test123.txt"), "w").close() open(p(self.directory, "test321.txt"), "w").close() os.mkdir(p(self.directory, "test")) open(p(self.directory, "test", "foo.txt"), "w").close() file_generator = FileGenerator(None, None, None, None) values = list(el[0] for el in file_generator.list_files(self.directory, dir_op=True)) self.assertEqual(values, list(sorted(values)))
def test_error_raised_on_decoding_error(self, listdir_mock): # On Python3, sys.getdefaultencoding file_generator = FileGenerator(None, None, None) # utf-8 encoding for U+2713. listdir_mock.return_value = [b'\xe2\x9c\x93'] list(file_generator.list_files(self.directory, dir_op=True)) # Ensure the message was added to the result queue and is # being skipped. self.assertFalse(file_generator.result_queue.empty()) warning_message = file_generator.result_queue.get() self.assertIn("warning: Skipping file ", warning_message.message) self.assertIn("Please check your locale settings.", warning_message.message)
def test_error_raised_on_decoding_error(self, listdir_mock): # On Python3, sys.getdefaultencoding file_generator = FileGenerator(None, None, None) # utf-8 encoding for U+2713. listdir_mock.return_value = [b'\xe2\x9c\x93'] list(file_generator.list_files(self.directory, dir_op=True)) # Ensure the message was added to the result queue and is # being skipped. self.assertFalse(file_generator.result_queue.empty()) warning_message = file_generator.result_queue.get() self.assertIn("warning: Skipping file ", warning_message.message) self.assertIn("Please check your locale settings.", warning_message.message)
def test_list_files_is_in_sorted_order(self): p = os.path.join open(p(self.directory, 'test-123.txt'), 'w').close() open(p(self.directory, 'test-321.txt'), 'w').close() open(p(self.directory, 'test123.txt'), 'w').close() open(p(self.directory, 'test321.txt'), 'w').close() os.mkdir(p(self.directory, 'test')) open(p(self.directory, 'test', 'foo.txt'), 'w').close() file_generator = FileGenerator(None, None, None, None) values = list( el[0] for el in file_generator.list_files(self.directory, dir_op=True)) self.assertEqual(values, list(sorted(values)))
def test_list_files_is_in_sorted_order(self): p = os.path.join open(p(self.directory, 'test-123.txt'), 'w').close() open(p(self.directory, 'test-321.txt'), 'w').close() open(p(self.directory, 'test123.txt'), 'w').close() open(p(self.directory, 'test321.txt'), 'w').close() os.mkdir(p(self.directory, 'test')) open(p(self.directory, 'test', 'foo.txt'), 'w').close() file_generator = FileGenerator(None, None, None) values = list(el[0] for el in file_generator.list_files( self.directory, dir_op=True)) ref_vals = list(sorted(values, key=lambda items: items.replace(os.sep, '/'))) self.assertEqual(values, ref_vals)
def test_list_files_with_invalid_timestamp(self, stat_mock): stat_mock.return_value = 9, None open(os.path.join(self.directory, 'test'), 'w').close() file_generator = FileGenerator(None, None, None) value = list(file_generator.list_files(self.directory, dir_op=True))[0] self.assertIs(value[1]['LastModified'], EPOCH_TIME)
def test_list_files_with_invalid_timestamp(self, stat_mock): stat_mock.return_value = 9, None open(os.path.join(self.directory, 'test'), 'w').close() file_generator = FileGenerator(None, None, None) value = list(file_generator.list_files(self.directory, dir_op=True))[0] self.assertIs(value[1]['LastModified'], EPOCH_TIME)