def test_directory_multiple_files_one_archive(self): from detail.archive import ZipArchive arch = ZipArchive( os.path.join(test_dir_path, 'multiple files - one archive.zip') ) self.assertEqual( arch.namelist(), [ 'multiple files - one archive/a.txt', 'multiple files - one archive/b.txt', 'multiple files - one archive/c.txt', 'multiple files - one archive/d.txt', 'multiple files - one archive/e.txt', ] ) arch.extractall(self.temp_path) result_struct = [x for x in os.walk(self.temp_path)] result_struct[1][2].sort() # may be not sorted for some reason (found on drone.io server) self.assertEqual( result_struct, [ ('./__tmp_testing__', ['multiple files - one archive'], []), ( './__tmp_testing__/multiple files - one archive', [], ['a.txt', 'b.txt', 'c.txt', 'd.txt', 'e.txt'] ) ] )
def test_one_file_one_archive(self): from detail.archive import ZipArchive arch = ZipArchive( os.path.join(test_dir_path, 'one file - one archive.zip') ) self.assertEqual(arch.namelist(), ['a.txt']) arch.extractall(self.temp_path) self.assertEqual( [x for x in os.walk(self.temp_path)], [('./__tmp_testing__', [], ['a.txt'])] )
def test_one_directory_with_files(self): from detail.archive import ZipArchive from detail.archive import Archive arch = ZipArchive( os.path.join(test_dir_path, 'one directory with files.zip') ) top_file, top_dir = Archive.check_has_only_one_top(arch.raw_namelist()) self.assertEqual(top_file, '') self.assertEqual(top_dir, 'dir', arch.raw_namelist()) self.assertEqual(arch.separate_directory, '') self.assertEqual( arch.namelist(), [ 'dir/', 'dir/a.txt', 'dir/b.txt', 'dir/c.txt', 'dir/d.txt', 'dir/e.txt' ] ) arch.extractall(self.temp_path) result_struct = [x for x in os.walk(self.temp_path)] result_struct[1][2].sort() # may be not sorted for some reason (found on drone.io server) self.assertEqual( result_struct, [ ('./__tmp_testing__', ['dir'], []), ( './__tmp_testing__/dir', [], ['a.txt', 'b.txt', 'c.txt', 'd.txt', 'e.txt'] ) ] )
def test_directory_tree(self): from detail.archive import ZipArchive """archive consist of two directories, check new prefix directory added""" arch = ZipArchive( os.path.join(test_dir_path, 'directory tree.zip') ) self.assertEqual( arch.namelist(), [ 'directory tree/dir1/', 'directory tree/dir1/a.txt', 'directory tree/dir1/b.txt', 'directory tree/dir1/c.txt', 'directory tree/dir1/d.txt', 'directory tree/dir1/e.txt', 'directory tree/dir2/', 'directory tree/dir2/a.txt', 'directory tree/dir2/b.txt', 'directory tree/dir2/c.txt', 'directory tree/dir2/d.txt', 'directory tree/dir2/e.txt' ] ) arch.extractall(self.temp_path) result_struct = [x for x in os.walk(self.temp_path)] self.assertEqual( result_struct[0], ('./__tmp_testing__', ['directory tree'], []) ) del result_struct[0] result_struct[0][1].sort() # may be not sorted for some reason (found on drone.io server) self.assertEqual( result_struct[0], ('./__tmp_testing__/directory tree', ['dir1', 'dir2'], []) ) del result_struct[0] result_struct.sort() result_struct[0][2].sort() self.assertEqual( result_struct[0], ( './__tmp_testing__/directory tree/dir1', [], ['a.txt', 'b.txt', 'c.txt', 'd.txt', 'e.txt'] ) ) del result_struct[0] result_struct[0][2].sort() self.assertEqual( result_struct, [ ( './__tmp_testing__/directory tree/dir2', [], ['a.txt', 'b.txt', 'c.txt', 'd.txt', 'e.txt'] ) ] )