예제 #1
0
 def test_extract_nested_tar_file_shallow_only(self):
     test_dir = self.get_test_loc('extract/nested/nested_tars.tar.gz',
                                  copy=True)
     expected = [
         'nested_tars.tar.gz',
         'nested_tars.tar.gz-extract/b/.svn/all-wcprops',
         'nested_tars.tar.gz-extract/b/.svn/entries',
         'nested_tars.tar.gz-extract/b/.svn/format',
         'nested_tars.tar.gz-extract/b/a/.svn/all-wcprops',
         'nested_tars.tar.gz-extract/b/a/.svn/entries',
         'nested_tars.tar.gz-extract/b/a/.svn/format',
         'nested_tars.tar.gz-extract/b/a/.svn/prop-base/a.tar.gz.svn-base',
         'nested_tars.tar.gz-extract/b/a/.svn/text-base/a.tar.gz.svn-base',
         'nested_tars.tar.gz-extract/b/a/.svn/text-base/a.txt.svn-base',
         'nested_tars.tar.gz-extract/b/a/a.tar.gz',
         'nested_tars.tar.gz-extract/b/a/a.txt',
         'nested_tars.tar.gz-extract/b/b/.svn/all-wcprops',
         'nested_tars.tar.gz-extract/b/b/.svn/entries',
         'nested_tars.tar.gz-extract/b/b/.svn/format',
         'nested_tars.tar.gz-extract/b/b/.svn/text-base/a.txt.svn-base',
         'nested_tars.tar.gz-extract/b/b/a.txt',
         'nested_tars.tar.gz-extract/b/c/.svn/all-wcprops',
         'nested_tars.tar.gz-extract/b/c/.svn/entries',
         'nested_tars.tar.gz-extract/b/c/.svn/format',
         'nested_tars.tar.gz-extract/b/c/.svn/prop-base/a.tar.gz.svn-base',
         'nested_tars.tar.gz-extract/b/c/.svn/text-base/a.tar.gz.svn-base',
         'nested_tars.tar.gz-extract/b/c/.svn/text-base/a.txt.svn-base',
         'nested_tars.tar.gz-extract/b/c/a.tar.gz',
         'nested_tars.tar.gz-extract/b/c/a.txt'
     ]
     result1 = list(extract.extract(test_dir, recurse=False))
     check_no_error(result1)
     check_files(test_dir, expected)
예제 #2
0
 def test_extract_nested_tar_file_shallow_only(self):
     test_dir = self.get_test_loc('extract/nested/nested_tars.tar.gz', copy=True)
     expected = [
         'nested_tars.tar.gz',
         'nested_tars.tar.gz-extract/b/.svn/all-wcprops',
         'nested_tars.tar.gz-extract/b/.svn/entries',
         'nested_tars.tar.gz-extract/b/.svn/format',
         'nested_tars.tar.gz-extract/b/a/.svn/all-wcprops',
         'nested_tars.tar.gz-extract/b/a/.svn/entries',
         'nested_tars.tar.gz-extract/b/a/.svn/format',
         'nested_tars.tar.gz-extract/b/a/.svn/prop-base/a.tar.gz.svn-base',
         'nested_tars.tar.gz-extract/b/a/.svn/text-base/a.tar.gz.svn-base',
         'nested_tars.tar.gz-extract/b/a/.svn/text-base/a.txt.svn-base',
         'nested_tars.tar.gz-extract/b/a/a.tar.gz',
         'nested_tars.tar.gz-extract/b/a/a.txt',
         'nested_tars.tar.gz-extract/b/b/.svn/all-wcprops',
         'nested_tars.tar.gz-extract/b/b/.svn/entries',
         'nested_tars.tar.gz-extract/b/b/.svn/format',
         'nested_tars.tar.gz-extract/b/b/.svn/text-base/a.txt.svn-base',
         'nested_tars.tar.gz-extract/b/b/a.txt',
         'nested_tars.tar.gz-extract/b/c/.svn/all-wcprops',
         'nested_tars.tar.gz-extract/b/c/.svn/entries',
         'nested_tars.tar.gz-extract/b/c/.svn/format',
         'nested_tars.tar.gz-extract/b/c/.svn/prop-base/a.tar.gz.svn-base',
         'nested_tars.tar.gz-extract/b/c/.svn/text-base/a.tar.gz.svn-base',
         'nested_tars.tar.gz-extract/b/c/.svn/text-base/a.txt.svn-base',
         'nested_tars.tar.gz-extract/b/c/a.tar.gz',
         'nested_tars.tar.gz-extract/b/c/a.txt'
     ]
     result1 = list(extract.extract(test_dir, recurse=False))
     check_no_error(result1)
     check_files(test_dir, expected)
예제 #3
0
    def test_extract_archive_shallow_with_readonly_inside(self):
        test_file = self.get_test_loc('extract/readonly/read_only.tar.gz', copy=True)
        """
        This test file was created with:
            import tarfile, time, datetime, StringIO, os
            TEXT = 'something\n'
            tar = tarfile.open('read_only.tar.gz', 'w:gz')
            for i in range(0, 2):
                tarinfo = tarfile.TarInfo()
                tarinfo.name = 'somefilename-%i.txt' % i
                tarinfo.uid = 123
                tarinfo.gid = 456
                tarinfo.uname = 'johndoe'
                tarinfo.gname = 'fake'
                tarinfo.type = tarfile.REGTYPE
                tarinfo.mode = 0 # this is the readonly part
                tarinfo.mtime = time.mktime(datetime.datetime.now().timetuple())
                file = StringIO.StringIO()
                file.write(TEXT)
                file.seek(0)
                tarinfo.size = len(TEXT)
                tar.addfile(tarinfo, file)
            tar.close()
        """
        result = list(extract.extract(test_file, recurse=False))
        check_no_error(result)

        expected = (
            'somefilename-0.txt',
            'somefilename-1.txt',
        )
        test_dir = extractcode.get_extraction_path(test_file)
        check_files(test_dir, expected)
예제 #4
0
    def test_extract_archive_shallow_with_readonly_inside(self):
        test_file = self.get_test_loc('extract/readonly/read_only.tar.gz',
                                      copy=True)
        """
        This test file was created with:
            import tarfile, time, datetime, StringIO, os
            TEXT = 'something\n'
            tar = tarfile.open('read_only.tar.gz', 'w:gz')
            for i in range(0, 2):
                tarinfo = tarfile.TarInfo()
                tarinfo.name = 'somefilename-%i.txt' % i
                tarinfo.uid = 123
                tarinfo.gid = 456
                tarinfo.uname = 'johndoe'
                tarinfo.gname = 'fake'
                tarinfo.type = tarfile.REGTYPE
                tarinfo.mode = 0 # this is the readonly part
                tarinfo.mtime = time.mktime(datetime.datetime.now().timetuple())
                file = StringIO.StringIO()
                file.write(TEXT)
                file.seek(0)
                tarinfo.size = len(TEXT)
                tar.addfile(tarinfo, file)
            tar.close()
        """
        result = list(extract.extract(test_file, recurse=False))
        check_no_error(result)

        expected = (
            'somefilename-0.txt',
            'somefilename-1.txt',
        )
        test_dir = extractcode.get_extraction_path(test_file)
        check_files(test_dir, expected)
예제 #5
0
 def test_extract_with_empty_dir_and_small_files_ignores_empty_dirs(self):
     expected = (
         'empty_small.zip',
         'empty_small.zip-extract/empty_dirs_and_small_files/small_files/small_file.txt',)
     test_dir = self.get_test_loc('extract/small', copy=True)
     result = list(extract.extract(test_dir, recurse=True))
     check_no_error(result)
     check_files(test_dir, expected)
예제 #6
0
 def test_extract_zip_with_spaces_in_name(self):
     test_dir = self.get_test_loc('extract/space-zip', copy=True)
     expected = (
         'with spaces in name.zip',
         'with spaces in name.zip-extract/empty_dirs_and_small_files/small_files/small_file.txt'
     )
     result = list(extract.extract(test_dir, recurse=True))
     check_no_error(result)
     check_files(test_dir, expected)
예제 #7
0
 def test_extract_zip_with_spaces_in_name(self):
     test_dir = self.get_test_loc('extract/space-zip', copy=True)
     expected = (
         'with spaces in name.zip',
         'with spaces in name.zip-extract/empty_dirs_and_small_files/small_files/small_file.txt'
     )
     result = list(extract.extract(test_dir, recurse=True))
     check_no_error(result)
     check_files(test_dir, expected)
예제 #8
0
 def test_extract_dir_shallow_with_readonly_inside(self):
     test_dir = self.get_test_loc('extract/readonly', copy=True)
     result = list(extract.extract(test_dir, recurse=False))
     check_no_error(result)
     expected = [
         'read_only.tar.gz',
         'read_only.tar.gz-extract/somefilename-0.txt',
         'read_only.tar.gz-extract/somefilename-1.txt',
     ]
     check_files(test_dir, expected)
예제 #9
0
 def test_extract_nested_arch_with_corrupted_compressed_should_extract_inner_archives_only_once(self):
     test_file = self.get_test_loc('extract/nested_not_compressed/nested_with_not_compressed_gz_file.tgz', copy=True)
     expected = [
         'nested_with_not_compressed_gz_file.tgz',
         'nested_with_not_compressed_gz_file.tgz-extract/top/file',
         'nested_with_not_compressed_gz_file.tgz-extract/top/notcompressed.gz'
     ]
     result = list(extract.extract(test_file, recurse=True))
     check_no_error(result)
     check_files(test_file, expected)
예제 #10
0
 def test_extract_dir_shallow_with_readonly_inside(self):
     test_dir = self.get_test_loc('extract/readonly', copy=True)
     result = list(extract.extract(test_dir, recurse=False))
     check_no_error(result)
     expected = [
         'read_only.tar.gz',
         'read_only.tar.gz-extract/somefilename-0.txt',
         'read_only.tar.gz-extract/somefilename-1.txt',
     ]
     check_files(test_dir, expected)
예제 #11
0
 def test_extract_tar_gz_with_spaces_in_name(self):
     test_dir = self.get_test_loc('extract/space-tgz', copy=True)
     expected = (
         'with spaces in name.tar.gz',
         'with spaces in name.tar.gz-extract/a/b/a.txt',
         'with spaces in name.tar.gz-extract/a/b/b.txt',
         'with spaces in name.tar.gz-extract/a/c/c.txt',
     )
     result = list(extract.extract(test_dir, recurse=True))
     check_no_error(result)
     check_files(test_dir, expected)
예제 #12
0
 def test_extract_tar_gz_with_spaces_in_name(self):
     test_dir = self.get_test_loc('extract/space-tgz', copy=True)
     expected = (
         'with spaces in name.tar.gz',
         'with spaces in name.tar.gz-extract/a/b/a.txt',
         'with spaces in name.tar.gz-extract/a/b/b.txt',
         'with spaces in name.tar.gz-extract/a/c/c.txt',
     )
     result = list(extract.extract(test_dir, recurse=True))
     check_no_error(result)
     check_files(test_dir, expected)
예제 #13
0
 def test_extract_tree_recursive(self):
     expected = (
         'a/a.tar.gz',
         'a/a.txt',
         'a/a.tar.gz-extract/a/b/a.txt',
         'a/a.tar.gz-extract/a/b/b.txt',
         'a/a.tar.gz-extract/a/c/c.txt',
         'b/a.txt',
         'b/b.tar.gz',
         'b/b.tar.gz-extract/b/.svn/all-wcprops',
         'b/b.tar.gz-extract/b/.svn/entries',
         'b/b.tar.gz-extract/b/.svn/format',
         'b/b.tar.gz-extract/b/a/a.tar.gz',
         'b/b.tar.gz-extract/b/a/a.txt',
         'b/b.tar.gz-extract/b/a/.svn/all-wcprops',
         'b/b.tar.gz-extract/b/a/.svn/entries',
         'b/b.tar.gz-extract/b/a/.svn/format',
         'b/b.tar.gz-extract/b/a/.svn/prop-base/a.tar.gz.svn-base',
         'b/b.tar.gz-extract/b/a/.svn/text-base/a.tar.gz.svn-base',
         'b/b.tar.gz-extract/b/a/.svn/text-base/a.txt.svn-base',
         'b/b.tar.gz-extract/b/a/a.tar.gz-extract/a/b/a.txt',
         'b/b.tar.gz-extract/b/a/a.tar.gz-extract/a/b/b.txt',
         'b/b.tar.gz-extract/b/a/a.tar.gz-extract/a/c/c.txt',
         'b/b.tar.gz-extract/b/b/a.txt',
         'b/b.tar.gz-extract/b/b/.svn/all-wcprops',
         'b/b.tar.gz-extract/b/b/.svn/entries',
         'b/b.tar.gz-extract/b/b/.svn/format',
         'b/b.tar.gz-extract/b/b/.svn/text-base/a.txt.svn-base',
         'b/b.tar.gz-extract/b/c/a.tar.gz',
         'b/b.tar.gz-extract/b/c/a.txt',
         'b/b.tar.gz-extract/b/c/.svn/all-wcprops',
         'b/b.tar.gz-extract/b/c/.svn/entries',
         'b/b.tar.gz-extract/b/c/.svn/format',
         'b/b.tar.gz-extract/b/c/.svn/prop-base/a.tar.gz.svn-base',
         'b/b.tar.gz-extract/b/c/.svn/text-base/a.tar.gz.svn-base',
         'b/b.tar.gz-extract/b/c/.svn/text-base/a.txt.svn-base',
         'b/b.tar.gz-extract/b/c/a.tar.gz-extract/a/b/a.txt',
         'b/b.tar.gz-extract/b/c/a.tar.gz-extract/a/b/b.txt',
         'b/b.tar.gz-extract/b/c/a.tar.gz-extract/a/c/c.txt',
         'c/a.tar.gz',
         'c/a.txt',
         'c/a.tar.gz-extract/a/b/a.txt',
         'c/a.tar.gz-extract/a/b/b.txt',
         'c/a.tar.gz-extract/a/c/c.txt',
     )
     test_dir = self.get_test_loc('extract/tree', copy=True)
     result = list(extract.extract(test_dir, recurse=True))
     check_no_error(result)
     check_files(test_dir, expected)
     # again
     result = list(extract.extract(test_dir, recurse=True))
     check_no_error(result)
     check_files(test_dir, expected)
예제 #14
0
 def test_extract_tree_recursive(self):
     expected = (
         'a/a.tar.gz',
         'a/a.txt',
         'a/a.tar.gz-extract/a/b/a.txt',
         'a/a.tar.gz-extract/a/b/b.txt',
         'a/a.tar.gz-extract/a/c/c.txt',
         'b/a.txt',
         'b/b.tar.gz',
         'b/b.tar.gz-extract/b/.svn/all-wcprops',
         'b/b.tar.gz-extract/b/.svn/entries',
         'b/b.tar.gz-extract/b/.svn/format',
         'b/b.tar.gz-extract/b/a/a.tar.gz',
         'b/b.tar.gz-extract/b/a/a.txt',
         'b/b.tar.gz-extract/b/a/.svn/all-wcprops',
         'b/b.tar.gz-extract/b/a/.svn/entries',
         'b/b.tar.gz-extract/b/a/.svn/format',
         'b/b.tar.gz-extract/b/a/.svn/prop-base/a.tar.gz.svn-base',
         'b/b.tar.gz-extract/b/a/.svn/text-base/a.tar.gz.svn-base',
         'b/b.tar.gz-extract/b/a/.svn/text-base/a.txt.svn-base',
         'b/b.tar.gz-extract/b/a/a.tar.gz-extract/a/b/a.txt',
         'b/b.tar.gz-extract/b/a/a.tar.gz-extract/a/b/b.txt',
         'b/b.tar.gz-extract/b/a/a.tar.gz-extract/a/c/c.txt',
         'b/b.tar.gz-extract/b/b/a.txt',
         'b/b.tar.gz-extract/b/b/.svn/all-wcprops',
         'b/b.tar.gz-extract/b/b/.svn/entries',
         'b/b.tar.gz-extract/b/b/.svn/format',
         'b/b.tar.gz-extract/b/b/.svn/text-base/a.txt.svn-base',
         'b/b.tar.gz-extract/b/c/a.tar.gz',
         'b/b.tar.gz-extract/b/c/a.txt',
         'b/b.tar.gz-extract/b/c/.svn/all-wcprops',
         'b/b.tar.gz-extract/b/c/.svn/entries',
         'b/b.tar.gz-extract/b/c/.svn/format',
         'b/b.tar.gz-extract/b/c/.svn/prop-base/a.tar.gz.svn-base',
         'b/b.tar.gz-extract/b/c/.svn/text-base/a.tar.gz.svn-base',
         'b/b.tar.gz-extract/b/c/.svn/text-base/a.txt.svn-base',
         'b/b.tar.gz-extract/b/c/a.tar.gz-extract/a/b/a.txt',
         'b/b.tar.gz-extract/b/c/a.tar.gz-extract/a/b/b.txt',
         'b/b.tar.gz-extract/b/c/a.tar.gz-extract/a/c/c.txt',
         'c/a.tar.gz',
         'c/a.txt',
         'c/a.tar.gz-extract/a/b/a.txt',
         'c/a.tar.gz-extract/a/b/b.txt',
         'c/a.tar.gz-extract/a/c/c.txt',
     )
     test_dir = self.get_test_loc('extract/tree', copy=True)
     result = list(extract.extract(test_dir, recurse=True))
     check_no_error(result)
     check_files(test_dir, expected)
     # again
     result = list(extract.extract(test_dir, recurse=True))
     check_no_error(result)
     check_files(test_dir, expected)
 def test_extract_ignore_file(self):
     test_dir = self.get_test_loc('extract/ignore', copy=True)
     expected = [
         'alpha.zip', 'beta.tar', 'beta.tar-extract/a.txt',
         'beta.tar-extract/b.txt', 'beta.tar-extract/c.txt',
         'gamma/gamma.zip', 'gamma/gamma.zip-extract/c.txt'
     ]
     from extractcode import default_kinds
     result = list(
         extract.extract(test_dir,
                         recurse=True,
                         ignore_pattern=('alpha.zip', )))
     check_no_error(result)
     check_files(test_dir, expected)
예제 #16
0
    def test_extract_archive_non_nested(self):
        test_dir = self.get_test_loc('extract/basic_non_nested.tar.gz', copy=True)
        expected = (
            'a/b/a.txt',
            'a/b/b.txt',
            'a/c/c.txt',
        )
        result = extract.extract(test_dir, recurse=False)
        check_no_error(result)
        check_files(extractcode.get_extraction_path(test_dir), expected)

        result = extract.extract(test_dir, recurse=True)
        check_no_error(result)
        check_files(extractcode.get_extraction_path(test_dir), expected)
 def test_extract_directory_of_windows_ar_archives(self):
     test_dir = self.get_test_loc('extract/ar_tree/winlib', copy=True)
     result = list(extract.extract(test_dir, recurse=True))
     expected = self.get_test_loc('extract/ar_tree/winlib-expected.json')
     check_files(test_dir, expected, regen=False)
     check_no_error(result)
예제 #18
0
 def test_extract_directory_with_office_docs(self):
     test_dir = self.get_test_loc('extract/office_docs', copy=True)
     result = list(
         extract.extract(test_dir, kinds=(extractcode.docs, ),
                         recurse=True))
     expected = [
         'abc.docx', 'abc.docx-extract/[Content_Types].xml',
         'abc.docx-extract/docProps/app.xml',
         'abc.docx-extract/docProps/core.xml',
         'abc.docx-extract/_rels/.rels',
         'abc.docx-extract/word/fontTable.xml',
         'abc.docx-extract/word/document.xml',
         'abc.docx-extract/word/settings.xml',
         'abc.docx-extract/word/numbering.xml',
         'abc.docx-extract/word/activeX/activeX1.xml',
         'abc.docx-extract/word/activeX/activeX2.xml',
         'abc.docx-extract/word/activeX/activeX3.xml',
         'abc.docx-extract/word/activeX/_rels/activeX1.xml.rels',
         'abc.docx-extract/word/activeX/_rels/activeX2.xml.rels',
         'abc.docx-extract/word/activeX/_rels/activeX3.xml.rels',
         'abc.docx-extract/word/activeX/activeX1.bin',
         'abc.docx-extract/word/activeX/activeX3.bin',
         'abc.docx-extract/word/activeX/activeX2.bin',
         'abc.docx-extract/word/webSettings.xml',
         'abc.docx-extract/word/styles.xml',
         'abc.docx-extract/word/theme/theme1.xml',
         'abc.docx-extract/word/_rels/document.xml.rels',
         'abc.docx-extract/word/stylesWithEffects.xml',
         'abc.docx-extract/word/media/image1.gif',
         'abc.docx-extract/word/media/image4.wmf',
         'abc.docx-extract/word/media/image2.wmf',
         'abc.docx-extract/word/media/image3.wmf', 'excel.xlsx',
         'excel.xlsx-extract/[Content_Types].xml',
         'excel.xlsx-extract/docProps/app.xml',
         'excel.xlsx-extract/docProps/core.xml',
         'excel.xlsx-extract/_rels/.rels',
         'excel.xlsx-extract/xl/workbook.xml',
         'excel.xlsx-extract/xl/worksheets/sheet2.xml',
         'excel.xlsx-extract/xl/worksheets/sheet3.xml',
         'excel.xlsx-extract/xl/worksheets/sheet1.xml',
         'excel.xlsx-extract/xl/styles.xml',
         'excel.xlsx-extract/xl/theme/theme1.xml',
         'excel.xlsx-extract/xl/_rels/workbook.xml.rels',
         'excel.xlsx-extract/xl/sharedStrings.xml', 'ppt.pptx',
         'ppt.pptx-extract/[Content_Types].xml',
         'ppt.pptx-extract/docProps/app.xml',
         'ppt.pptx-extract/docProps/thumbnail.jpeg',
         'ppt.pptx-extract/docProps/core.xml',
         'ppt.pptx-extract/_rels/.rels',
         'ppt.pptx-extract/ppt/viewProps.xml',
         'ppt.pptx-extract/ppt/slideLayouts/slideLayout9.xml',
         'ppt.pptx-extract/ppt/slideLayouts/slideLayout8.xml',
         'ppt.pptx-extract/ppt/slideLayouts/_rels/slideLayout5.xml.rels',
         'ppt.pptx-extract/ppt/slideLayouts/_rels/slideLayout4.xml.rels',
         'ppt.pptx-extract/ppt/slideLayouts/_rels/slideLayout2.xml.rels',
         'ppt.pptx-extract/ppt/slideLayouts/_rels/slideLayout3.xml.rels',
         'ppt.pptx-extract/ppt/slideLayouts/_rels/slideLayout8.xml.rels',
         'ppt.pptx-extract/ppt/slideLayouts/_rels/slideLayout9.xml.rels',
         'ppt.pptx-extract/ppt/slideLayouts/_rels/slideLayout11.xml.rels',
         'ppt.pptx-extract/ppt/slideLayouts/_rels/slideLayout10.xml.rels',
         'ppt.pptx-extract/ppt/slideLayouts/_rels/slideLayout6.xml.rels',
         'ppt.pptx-extract/ppt/slideLayouts/_rels/slideLayout7.xml.rels',
         'ppt.pptx-extract/ppt/slideLayouts/_rels/slideLayout1.xml.rels',
         'ppt.pptx-extract/ppt/slideLayouts/slideLayout3.xml',
         'ppt.pptx-extract/ppt/slideLayouts/slideLayout2.xml',
         'ppt.pptx-extract/ppt/slideLayouts/slideLayout1.xml',
         'ppt.pptx-extract/ppt/slideLayouts/slideLayout5.xml',
         'ppt.pptx-extract/ppt/slideLayouts/slideLayout4.xml',
         'ppt.pptx-extract/ppt/slideLayouts/slideLayout6.xml',
         'ppt.pptx-extract/ppt/slideLayouts/slideLayout10.xml',
         'ppt.pptx-extract/ppt/slideLayouts/slideLayout11.xml',
         'ppt.pptx-extract/ppt/slideLayouts/slideLayout7.xml',
         'ppt.pptx-extract/ppt/presentation.xml',
         'ppt.pptx-extract/ppt/slideMasters/slideMaster1.xml',
         'ppt.pptx-extract/ppt/slideMasters/_rels/slideMaster1.xml.rels',
         'ppt.pptx-extract/ppt/slides/slide1.xml',
         'ppt.pptx-extract/ppt/slides/_rels/slide1.xml.rels',
         'ppt.pptx-extract/ppt/theme/theme1.xml',
         'ppt.pptx-extract/ppt/_rels/presentation.xml.rels',
         'ppt.pptx-extract/ppt/presProps.xml',
         'ppt.pptx-extract/ppt/tableStyles.xml',
         'ppt.pptx-extract/ppt/media/image1.png'
     ]
     check_files(test_dir, expected)
     check_no_error(result)
예제 #19
0
 def test_extract_directory_of_windows_ar_archives(self):
     # this does not pass yet with libarchive and fails too with 7z
     test_dir = self.get_test_loc('extract/ar_tree/winlib', copy=True)
     result = list(extract.extract(test_dir, recurse=True))
     expected = [
         'freetype.lib', 'freetype.lib-extract/1.txt',
         'freetype.lib-extract/2.txt',
         'freetype.lib-extract/objs/debug_mt/autofit.obj',
         'freetype.lib-extract/objs/debug_mt/bdf.obj',
         'freetype.lib-extract/objs/debug_mt/cff.obj',
         'freetype.lib-extract/objs/debug_mt/ftbase.obj',
         'freetype.lib-extract/objs/debug_mt/ftbbox.obj',
         'freetype.lib-extract/objs/debug_mt/ftbitmap.obj',
         'freetype.lib-extract/objs/debug_mt/ftcache.obj',
         'freetype.lib-extract/objs/debug_mt/ftdebug.obj',
         'freetype.lib-extract/objs/debug_mt/ftgasp.obj',
         'freetype.lib-extract/objs/debug_mt/ftglyph.obj',
         'freetype.lib-extract/objs/debug_mt/ftgzip.obj',
         'freetype.lib-extract/objs/debug_mt/ftinit.obj',
         'freetype.lib-extract/objs/debug_mt/ftlzw.obj',
         'freetype.lib-extract/objs/debug_mt/ftmm.obj',
         'freetype.lib-extract/objs/debug_mt/ftpfr.obj',
         'freetype.lib-extract/objs/debug_mt/ftstroke.obj',
         'freetype.lib-extract/objs/debug_mt/ftsynth.obj',
         'freetype.lib-extract/objs/debug_mt/ftsystem.obj',
         'freetype.lib-extract/objs/debug_mt/fttype1.obj',
         'freetype.lib-extract/objs/debug_mt/ftwinfnt.obj',
         'freetype.lib-extract/objs/debug_mt/pcf.obj',
         'freetype.lib-extract/objs/debug_mt/pfr.obj',
         'freetype.lib-extract/objs/debug_mt/psaux.obj',
         'freetype.lib-extract/objs/debug_mt/pshinter.obj',
         'freetype.lib-extract/objs/debug_mt/psmodule.obj',
         'freetype.lib-extract/objs/debug_mt/raster.obj',
         'freetype.lib-extract/objs/debug_mt/sfnt.obj',
         'freetype.lib-extract/objs/debug_mt/smooth.obj',
         'freetype.lib-extract/objs/debug_mt/truetype.obj',
         'freetype.lib-extract/objs/debug_mt/type1.obj',
         'freetype.lib-extract/objs/debug_mt/type1cid.obj',
         'freetype.lib-extract/objs/debug_mt/type42.obj',
         'freetype.lib-extract/objs/debug_mt/winfnt.obj', 'gsdll32.lib',
         'gsdll32.lib-extract/1.GSDLL32.dll', 'gsdll32.lib-extract/1.txt',
         'gsdll32.lib-extract/10.GSDLL32.dll',
         'gsdll32.lib-extract/11.GSDLL32.dll',
         'gsdll32.lib-extract/12.GSDLL32.dll',
         'gsdll32.lib-extract/13.GSDLL32.dll',
         'gsdll32.lib-extract/14.GSDLL32.dll',
         'gsdll32.lib-extract/15.GSDLL32.dll',
         'gsdll32.lib-extract/16.GSDLL32.dll',
         'gsdll32.lib-extract/17.GSDLL32.dll',
         'gsdll32.lib-extract/18.GSDLL32.dll',
         'gsdll32.lib-extract/19.GSDLL32.dll',
         'gsdll32.lib-extract/2.GSDLL32.dll', 'gsdll32.lib-extract/2.txt',
         'gsdll32.lib-extract/20.GSDLL32.dll',
         'gsdll32.lib-extract/21.GSDLL32.dll',
         'gsdll32.lib-extract/22.GSDLL32.dll',
         'gsdll32.lib-extract/23.GSDLL32.dll',
         'gsdll32.lib-extract/24.GSDLL32.dll',
         'gsdll32.lib-extract/25.GSDLL32.dll',
         'gsdll32.lib-extract/26.GSDLL32.dll',
         'gsdll32.lib-extract/27.GSDLL32.dll',
         'gsdll32.lib-extract/28.GSDLL32.dll',
         'gsdll32.lib-extract/29.GSDLL32.dll',
         'gsdll32.lib-extract/3.GSDLL32.dll',
         'gsdll32.lib-extract/30.GSDLL32.dll',
         'gsdll32.lib-extract/31.GSDLL32.dll',
         'gsdll32.lib-extract/4.GSDLL32.dll',
         'gsdll32.lib-extract/5.GSDLL32.dll',
         'gsdll32.lib-extract/6.GSDLL32.dll',
         'gsdll32.lib-extract/7.GSDLL32.dll',
         'gsdll32.lib-extract/8.GSDLL32.dll',
         'gsdll32.lib-extract/9.GSDLL32.dll', 'htmlhelp.lib',
         'htmlhelp.lib-extract/1.txt', 'htmlhelp.lib-extract/2.txt',
         'htmlhelp.lib-extract/release/init.obj', 'libmysql.lib',
         'libmysql.lib-extract/1.LIBMYSQL.dll',
         'libmysql.lib-extract/1.txt',
         'libmysql.lib-extract/10.LIBMYSQL.dll',
         'libmysql.lib-extract/100.LIBMYSQL.dll',
         'libmysql.lib-extract/101.LIBMYSQL.dll',
         'libmysql.lib-extract/102.LIBMYSQL.dll',
         'libmysql.lib-extract/103.LIBMYSQL.dll',
         'libmysql.lib-extract/104.LIBMYSQL.dll',
         'libmysql.lib-extract/105.LIBMYSQL.dll',
         'libmysql.lib-extract/106.LIBMYSQL.dll',
         'libmysql.lib-extract/107.LIBMYSQL.dll',
         'libmysql.lib-extract/108.LIBMYSQL.dll',
         'libmysql.lib-extract/109.LIBMYSQL.dll',
         'libmysql.lib-extract/11.LIBMYSQL.dll',
         'libmysql.lib-extract/110.LIBMYSQL.dll',
         'libmysql.lib-extract/111.LIBMYSQL.dll',
         'libmysql.lib-extract/112.LIBMYSQL.dll',
         'libmysql.lib-extract/113.LIBMYSQL.dll',
         'libmysql.lib-extract/114.LIBMYSQL.dll',
         'libmysql.lib-extract/115.LIBMYSQL.dll',
         'libmysql.lib-extract/116.LIBMYSQL.dll',
         'libmysql.lib-extract/117.LIBMYSQL.dll',
         'libmysql.lib-extract/118.LIBMYSQL.dll',
         'libmysql.lib-extract/119.LIBMYSQL.dll',
         'libmysql.lib-extract/12.LIBMYSQL.dll',
         'libmysql.lib-extract/120.LIBMYSQL.dll',
         'libmysql.lib-extract/121.LIBMYSQL.dll',
         'libmysql.lib-extract/122.LIBMYSQL.dll',
         'libmysql.lib-extract/123.LIBMYSQL.dll',
         'libmysql.lib-extract/124.LIBMYSQL.dll',
         'libmysql.lib-extract/125.LIBMYSQL.dll',
         'libmysql.lib-extract/126.LIBMYSQL.dll',
         'libmysql.lib-extract/127.LIBMYSQL.dll',
         'libmysql.lib-extract/128.LIBMYSQL.dll',
         'libmysql.lib-extract/129.LIBMYSQL.dll',
         'libmysql.lib-extract/13.LIBMYSQL.dll',
         'libmysql.lib-extract/130.LIBMYSQL.dll',
         'libmysql.lib-extract/131.LIBMYSQL.dll',
         'libmysql.lib-extract/132.LIBMYSQL.dll',
         'libmysql.lib-extract/133.LIBMYSQL.dll',
         'libmysql.lib-extract/134.LIBMYSQL.dll',
         'libmysql.lib-extract/135.LIBMYSQL.dll',
         'libmysql.lib-extract/136.LIBMYSQL.dll',
         'libmysql.lib-extract/137.LIBMYSQL.dll',
         'libmysql.lib-extract/138.LIBMYSQL.dll',
         'libmysql.lib-extract/139.LIBMYSQL.dll',
         'libmysql.lib-extract/14.LIBMYSQL.dll',
         'libmysql.lib-extract/140.LIBMYSQL.dll',
         'libmysql.lib-extract/141.LIBMYSQL.dll',
         'libmysql.lib-extract/142.LIBMYSQL.dll',
         'libmysql.lib-extract/143.LIBMYSQL.dll',
         'libmysql.lib-extract/144.LIBMYSQL.dll',
         'libmysql.lib-extract/145.LIBMYSQL.dll',
         'libmysql.lib-extract/146.LIBMYSQL.dll',
         'libmysql.lib-extract/147.LIBMYSQL.dll',
         'libmysql.lib-extract/148.LIBMYSQL.dll',
         'libmysql.lib-extract/149.LIBMYSQL.dll',
         'libmysql.lib-extract/15.LIBMYSQL.dll',
         'libmysql.lib-extract/150.LIBMYSQL.dll',
         'libmysql.lib-extract/151.LIBMYSQL.dll',
         'libmysql.lib-extract/152.LIBMYSQL.dll',
         'libmysql.lib-extract/153.LIBMYSQL.dll',
         'libmysql.lib-extract/16.LIBMYSQL.dll',
         'libmysql.lib-extract/17.LIBMYSQL.dll',
         'libmysql.lib-extract/18.LIBMYSQL.dll',
         'libmysql.lib-extract/19.LIBMYSQL.dll',
         'libmysql.lib-extract/2.LIBMYSQL.dll',
         'libmysql.lib-extract/2.txt',
         'libmysql.lib-extract/20.LIBMYSQL.dll',
         'libmysql.lib-extract/21.LIBMYSQL.dll',
         'libmysql.lib-extract/22.LIBMYSQL.dll',
         'libmysql.lib-extract/23.LIBMYSQL.dll',
         'libmysql.lib-extract/24.LIBMYSQL.dll',
         'libmysql.lib-extract/25.LIBMYSQL.dll',
         'libmysql.lib-extract/26.LIBMYSQL.dll',
         'libmysql.lib-extract/27.LIBMYSQL.dll',
         'libmysql.lib-extract/28.LIBMYSQL.dll',
         'libmysql.lib-extract/29.LIBMYSQL.dll',
         'libmysql.lib-extract/3.LIBMYSQL.dll',
         'libmysql.lib-extract/30.LIBMYSQL.dll',
         'libmysql.lib-extract/31.LIBMYSQL.dll',
         'libmysql.lib-extract/32.LIBMYSQL.dll',
         'libmysql.lib-extract/33.LIBMYSQL.dll',
         'libmysql.lib-extract/34.LIBMYSQL.dll',
         'libmysql.lib-extract/35.LIBMYSQL.dll',
         'libmysql.lib-extract/36.LIBMYSQL.dll',
         'libmysql.lib-extract/37.LIBMYSQL.dll',
         'libmysql.lib-extract/38.LIBMYSQL.dll',
         'libmysql.lib-extract/39.LIBMYSQL.dll',
         'libmysql.lib-extract/4.LIBMYSQL.dll',
         'libmysql.lib-extract/40.LIBMYSQL.dll',
         'libmysql.lib-extract/41.LIBMYSQL.dll',
         'libmysql.lib-extract/42.LIBMYSQL.dll',
         'libmysql.lib-extract/43.LIBMYSQL.dll',
         'libmysql.lib-extract/44.LIBMYSQL.dll',
         'libmysql.lib-extract/45.LIBMYSQL.dll',
         'libmysql.lib-extract/46.LIBMYSQL.dll',
         'libmysql.lib-extract/47.LIBMYSQL.dll',
         'libmysql.lib-extract/48.LIBMYSQL.dll',
         'libmysql.lib-extract/49.LIBMYSQL.dll',
         'libmysql.lib-extract/5.LIBMYSQL.dll',
         'libmysql.lib-extract/50.LIBMYSQL.dll',
         'libmysql.lib-extract/51.LIBMYSQL.dll',
         'libmysql.lib-extract/52.LIBMYSQL.dll',
         'libmysql.lib-extract/53.LIBMYSQL.dll',
         'libmysql.lib-extract/54.LIBMYSQL.dll',
         'libmysql.lib-extract/55.LIBMYSQL.dll',
         'libmysql.lib-extract/56.LIBMYSQL.dll',
         'libmysql.lib-extract/57.LIBMYSQL.dll',
         'libmysql.lib-extract/58.LIBMYSQL.dll',
         'libmysql.lib-extract/59.LIBMYSQL.dll',
         'libmysql.lib-extract/6.LIBMYSQL.dll',
         'libmysql.lib-extract/60.LIBMYSQL.dll',
         'libmysql.lib-extract/61.LIBMYSQL.dll',
         'libmysql.lib-extract/62.LIBMYSQL.dll',
         'libmysql.lib-extract/63.LIBMYSQL.dll',
         'libmysql.lib-extract/64.LIBMYSQL.dll',
         'libmysql.lib-extract/65.LIBMYSQL.dll',
         'libmysql.lib-extract/66.LIBMYSQL.dll',
         'libmysql.lib-extract/67.LIBMYSQL.dll',
         'libmysql.lib-extract/68.LIBMYSQL.dll',
         'libmysql.lib-extract/69.LIBMYSQL.dll',
         'libmysql.lib-extract/7.LIBMYSQL.dll',
         'libmysql.lib-extract/70.LIBMYSQL.dll',
         'libmysql.lib-extract/71.LIBMYSQL.dll',
         'libmysql.lib-extract/72.LIBMYSQL.dll',
         'libmysql.lib-extract/73.LIBMYSQL.dll',
         'libmysql.lib-extract/74.LIBMYSQL.dll',
         'libmysql.lib-extract/75.LIBMYSQL.dll',
         'libmysql.lib-extract/76.LIBMYSQL.dll',
         'libmysql.lib-extract/77.LIBMYSQL.dll',
         'libmysql.lib-extract/78.LIBMYSQL.dll',
         'libmysql.lib-extract/79.LIBMYSQL.dll',
         'libmysql.lib-extract/8.LIBMYSQL.dll',
         'libmysql.lib-extract/80.LIBMYSQL.dll',
         'libmysql.lib-extract/81.LIBMYSQL.dll',
         'libmysql.lib-extract/82.LIBMYSQL.dll',
         'libmysql.lib-extract/83.LIBMYSQL.dll',
         'libmysql.lib-extract/84.LIBMYSQL.dll',
         'libmysql.lib-extract/85.LIBMYSQL.dll',
         'libmysql.lib-extract/86.LIBMYSQL.dll',
         'libmysql.lib-extract/87.LIBMYSQL.dll',
         'libmysql.lib-extract/88.LIBMYSQL.dll',
         'libmysql.lib-extract/89.LIBMYSQL.dll',
         'libmysql.lib-extract/9.LIBMYSQL.dll',
         'libmysql.lib-extract/90.LIBMYSQL.dll',
         'libmysql.lib-extract/91.LIBMYSQL.dll',
         'libmysql.lib-extract/92.LIBMYSQL.dll',
         'libmysql.lib-extract/93.LIBMYSQL.dll',
         'libmysql.lib-extract/94.LIBMYSQL.dll',
         'libmysql.lib-extract/95.LIBMYSQL.dll',
         'libmysql.lib-extract/96.LIBMYSQL.dll',
         'libmysql.lib-extract/97.LIBMYSQL.dll',
         'libmysql.lib-extract/98.LIBMYSQL.dll',
         'libmysql.lib-extract/99.LIBMYSQL.dll', 'php4embed.lib',
         'php4embed.lib-extract/1.txt', 'php4embed.lib-extract/2.txt',
         'php4embed.lib-extract/Release_TS/php_embed.obj', 'pyexpat.lib',
         'pyexpat.lib-extract/1.pyexpat.pyd', 'pyexpat.lib-extract/1.txt',
         'pyexpat.lib-extract/2.pyexpat.pyd', 'pyexpat.lib-extract/2.txt',
         'pyexpat.lib-extract/3.pyexpat.pyd',
         'pyexpat.lib-extract/4.pyexpat.pyd', 'zlib.lib',
         'zlib.lib-extract/1.txt', 'zlib.lib-extract/1.zlib.pyd',
         'zlib.lib-extract/2.txt', 'zlib.lib-extract/2.zlib.pyd',
         'zlib.lib-extract/3.zlib.pyd', 'zlib.lib-extract/4.zlib.pyd'
     ]
     check_files(test_dir, expected)
     check_no_error(result)
예제 #20
0
 def test_extract_directory_of_windows_ar_archives(self):
     # this does not pass yet with libarchive and fails too with 7z
     test_dir = self.get_test_loc('extract/ar_tree/winlib', copy=True)
     result = list(extract.extract(test_dir, recurse=True))
     expected = [
         'freetype.lib',
         'freetype.lib-extract/1.txt',
         'freetype.lib-extract/2.txt',
         'freetype.lib-extract/objs/debug_mt/autofit.obj',
         'freetype.lib-extract/objs/debug_mt/bdf.obj',
         'freetype.lib-extract/objs/debug_mt/cff.obj',
         'freetype.lib-extract/objs/debug_mt/ftbase.obj',
         'freetype.lib-extract/objs/debug_mt/ftbbox.obj',
         'freetype.lib-extract/objs/debug_mt/ftbitmap.obj',
         'freetype.lib-extract/objs/debug_mt/ftcache.obj',
         'freetype.lib-extract/objs/debug_mt/ftdebug.obj',
         'freetype.lib-extract/objs/debug_mt/ftgasp.obj',
         'freetype.lib-extract/objs/debug_mt/ftglyph.obj',
         'freetype.lib-extract/objs/debug_mt/ftgzip.obj',
         'freetype.lib-extract/objs/debug_mt/ftinit.obj',
         'freetype.lib-extract/objs/debug_mt/ftlzw.obj',
         'freetype.lib-extract/objs/debug_mt/ftmm.obj',
         'freetype.lib-extract/objs/debug_mt/ftpfr.obj',
         'freetype.lib-extract/objs/debug_mt/ftstroke.obj',
         'freetype.lib-extract/objs/debug_mt/ftsynth.obj',
         'freetype.lib-extract/objs/debug_mt/ftsystem.obj',
         'freetype.lib-extract/objs/debug_mt/fttype1.obj',
         'freetype.lib-extract/objs/debug_mt/ftwinfnt.obj',
         'freetype.lib-extract/objs/debug_mt/pcf.obj',
         'freetype.lib-extract/objs/debug_mt/pfr.obj',
         'freetype.lib-extract/objs/debug_mt/psaux.obj',
         'freetype.lib-extract/objs/debug_mt/pshinter.obj',
         'freetype.lib-extract/objs/debug_mt/psmodule.obj',
         'freetype.lib-extract/objs/debug_mt/raster.obj',
         'freetype.lib-extract/objs/debug_mt/sfnt.obj',
         'freetype.lib-extract/objs/debug_mt/smooth.obj',
         'freetype.lib-extract/objs/debug_mt/truetype.obj',
         'freetype.lib-extract/objs/debug_mt/type1.obj',
         'freetype.lib-extract/objs/debug_mt/type1cid.obj',
         'freetype.lib-extract/objs/debug_mt/type42.obj',
         'freetype.lib-extract/objs/debug_mt/winfnt.obj',
         'gsdll32.lib',
         'gsdll32.lib-extract/1.GSDLL32.dll',
         'gsdll32.lib-extract/1.txt',
         'gsdll32.lib-extract/10.GSDLL32.dll',
         'gsdll32.lib-extract/11.GSDLL32.dll',
         'gsdll32.lib-extract/12.GSDLL32.dll',
         'gsdll32.lib-extract/13.GSDLL32.dll',
         'gsdll32.lib-extract/14.GSDLL32.dll',
         'gsdll32.lib-extract/15.GSDLL32.dll',
         'gsdll32.lib-extract/16.GSDLL32.dll',
         'gsdll32.lib-extract/17.GSDLL32.dll',
         'gsdll32.lib-extract/18.GSDLL32.dll',
         'gsdll32.lib-extract/19.GSDLL32.dll',
         'gsdll32.lib-extract/2.GSDLL32.dll',
         'gsdll32.lib-extract/2.txt',
         'gsdll32.lib-extract/20.GSDLL32.dll',
         'gsdll32.lib-extract/21.GSDLL32.dll',
         'gsdll32.lib-extract/22.GSDLL32.dll',
         'gsdll32.lib-extract/23.GSDLL32.dll',
         'gsdll32.lib-extract/24.GSDLL32.dll',
         'gsdll32.lib-extract/25.GSDLL32.dll',
         'gsdll32.lib-extract/26.GSDLL32.dll',
         'gsdll32.lib-extract/27.GSDLL32.dll',
         'gsdll32.lib-extract/28.GSDLL32.dll',
         'gsdll32.lib-extract/29.GSDLL32.dll',
         'gsdll32.lib-extract/3.GSDLL32.dll',
         'gsdll32.lib-extract/30.GSDLL32.dll',
         'gsdll32.lib-extract/31.GSDLL32.dll',
         'gsdll32.lib-extract/4.GSDLL32.dll',
         'gsdll32.lib-extract/5.GSDLL32.dll',
         'gsdll32.lib-extract/6.GSDLL32.dll',
         'gsdll32.lib-extract/7.GSDLL32.dll',
         'gsdll32.lib-extract/8.GSDLL32.dll',
         'gsdll32.lib-extract/9.GSDLL32.dll',
         'htmlhelp.lib',
         'htmlhelp.lib-extract/1.txt',
         'htmlhelp.lib-extract/2.txt',
         'htmlhelp.lib-extract/release/init.obj',
         'libmysql.lib',
         'libmysql.lib-extract/1.LIBMYSQL.dll',
         'libmysql.lib-extract/1.txt',
         'libmysql.lib-extract/10.LIBMYSQL.dll',
         'libmysql.lib-extract/100.LIBMYSQL.dll',
         'libmysql.lib-extract/101.LIBMYSQL.dll',
         'libmysql.lib-extract/102.LIBMYSQL.dll',
         'libmysql.lib-extract/103.LIBMYSQL.dll',
         'libmysql.lib-extract/104.LIBMYSQL.dll',
         'libmysql.lib-extract/105.LIBMYSQL.dll',
         'libmysql.lib-extract/106.LIBMYSQL.dll',
         'libmysql.lib-extract/107.LIBMYSQL.dll',
         'libmysql.lib-extract/108.LIBMYSQL.dll',
         'libmysql.lib-extract/109.LIBMYSQL.dll',
         'libmysql.lib-extract/11.LIBMYSQL.dll',
         'libmysql.lib-extract/110.LIBMYSQL.dll',
         'libmysql.lib-extract/111.LIBMYSQL.dll',
         'libmysql.lib-extract/112.LIBMYSQL.dll',
         'libmysql.lib-extract/113.LIBMYSQL.dll',
         'libmysql.lib-extract/114.LIBMYSQL.dll',
         'libmysql.lib-extract/115.LIBMYSQL.dll',
         'libmysql.lib-extract/116.LIBMYSQL.dll',
         'libmysql.lib-extract/117.LIBMYSQL.dll',
         'libmysql.lib-extract/118.LIBMYSQL.dll',
         'libmysql.lib-extract/119.LIBMYSQL.dll',
         'libmysql.lib-extract/12.LIBMYSQL.dll',
         'libmysql.lib-extract/120.LIBMYSQL.dll',
         'libmysql.lib-extract/121.LIBMYSQL.dll',
         'libmysql.lib-extract/122.LIBMYSQL.dll',
         'libmysql.lib-extract/123.LIBMYSQL.dll',
         'libmysql.lib-extract/124.LIBMYSQL.dll',
         'libmysql.lib-extract/125.LIBMYSQL.dll',
         'libmysql.lib-extract/126.LIBMYSQL.dll',
         'libmysql.lib-extract/127.LIBMYSQL.dll',
         'libmysql.lib-extract/128.LIBMYSQL.dll',
         'libmysql.lib-extract/129.LIBMYSQL.dll',
         'libmysql.lib-extract/13.LIBMYSQL.dll',
         'libmysql.lib-extract/130.LIBMYSQL.dll',
         'libmysql.lib-extract/131.LIBMYSQL.dll',
         'libmysql.lib-extract/132.LIBMYSQL.dll',
         'libmysql.lib-extract/133.LIBMYSQL.dll',
         'libmysql.lib-extract/134.LIBMYSQL.dll',
         'libmysql.lib-extract/135.LIBMYSQL.dll',
         'libmysql.lib-extract/136.LIBMYSQL.dll',
         'libmysql.lib-extract/137.LIBMYSQL.dll',
         'libmysql.lib-extract/138.LIBMYSQL.dll',
         'libmysql.lib-extract/139.LIBMYSQL.dll',
         'libmysql.lib-extract/14.LIBMYSQL.dll',
         'libmysql.lib-extract/140.LIBMYSQL.dll',
         'libmysql.lib-extract/141.LIBMYSQL.dll',
         'libmysql.lib-extract/142.LIBMYSQL.dll',
         'libmysql.lib-extract/143.LIBMYSQL.dll',
         'libmysql.lib-extract/144.LIBMYSQL.dll',
         'libmysql.lib-extract/145.LIBMYSQL.dll',
         'libmysql.lib-extract/146.LIBMYSQL.dll',
         'libmysql.lib-extract/147.LIBMYSQL.dll',
         'libmysql.lib-extract/148.LIBMYSQL.dll',
         'libmysql.lib-extract/149.LIBMYSQL.dll',
         'libmysql.lib-extract/15.LIBMYSQL.dll',
         'libmysql.lib-extract/150.LIBMYSQL.dll',
         'libmysql.lib-extract/151.LIBMYSQL.dll',
         'libmysql.lib-extract/152.LIBMYSQL.dll',
         'libmysql.lib-extract/153.LIBMYSQL.dll',
         'libmysql.lib-extract/16.LIBMYSQL.dll',
         'libmysql.lib-extract/17.LIBMYSQL.dll',
         'libmysql.lib-extract/18.LIBMYSQL.dll',
         'libmysql.lib-extract/19.LIBMYSQL.dll',
         'libmysql.lib-extract/2.LIBMYSQL.dll',
         'libmysql.lib-extract/2.txt',
         'libmysql.lib-extract/20.LIBMYSQL.dll',
         'libmysql.lib-extract/21.LIBMYSQL.dll',
         'libmysql.lib-extract/22.LIBMYSQL.dll',
         'libmysql.lib-extract/23.LIBMYSQL.dll',
         'libmysql.lib-extract/24.LIBMYSQL.dll',
         'libmysql.lib-extract/25.LIBMYSQL.dll',
         'libmysql.lib-extract/26.LIBMYSQL.dll',
         'libmysql.lib-extract/27.LIBMYSQL.dll',
         'libmysql.lib-extract/28.LIBMYSQL.dll',
         'libmysql.lib-extract/29.LIBMYSQL.dll',
         'libmysql.lib-extract/3.LIBMYSQL.dll',
         'libmysql.lib-extract/30.LIBMYSQL.dll',
         'libmysql.lib-extract/31.LIBMYSQL.dll',
         'libmysql.lib-extract/32.LIBMYSQL.dll',
         'libmysql.lib-extract/33.LIBMYSQL.dll',
         'libmysql.lib-extract/34.LIBMYSQL.dll',
         'libmysql.lib-extract/35.LIBMYSQL.dll',
         'libmysql.lib-extract/36.LIBMYSQL.dll',
         'libmysql.lib-extract/37.LIBMYSQL.dll',
         'libmysql.lib-extract/38.LIBMYSQL.dll',
         'libmysql.lib-extract/39.LIBMYSQL.dll',
         'libmysql.lib-extract/4.LIBMYSQL.dll',
         'libmysql.lib-extract/40.LIBMYSQL.dll',
         'libmysql.lib-extract/41.LIBMYSQL.dll',
         'libmysql.lib-extract/42.LIBMYSQL.dll',
         'libmysql.lib-extract/43.LIBMYSQL.dll',
         'libmysql.lib-extract/44.LIBMYSQL.dll',
         'libmysql.lib-extract/45.LIBMYSQL.dll',
         'libmysql.lib-extract/46.LIBMYSQL.dll',
         'libmysql.lib-extract/47.LIBMYSQL.dll',
         'libmysql.lib-extract/48.LIBMYSQL.dll',
         'libmysql.lib-extract/49.LIBMYSQL.dll',
         'libmysql.lib-extract/5.LIBMYSQL.dll',
         'libmysql.lib-extract/50.LIBMYSQL.dll',
         'libmysql.lib-extract/51.LIBMYSQL.dll',
         'libmysql.lib-extract/52.LIBMYSQL.dll',
         'libmysql.lib-extract/53.LIBMYSQL.dll',
         'libmysql.lib-extract/54.LIBMYSQL.dll',
         'libmysql.lib-extract/55.LIBMYSQL.dll',
         'libmysql.lib-extract/56.LIBMYSQL.dll',
         'libmysql.lib-extract/57.LIBMYSQL.dll',
         'libmysql.lib-extract/58.LIBMYSQL.dll',
         'libmysql.lib-extract/59.LIBMYSQL.dll',
         'libmysql.lib-extract/6.LIBMYSQL.dll',
         'libmysql.lib-extract/60.LIBMYSQL.dll',
         'libmysql.lib-extract/61.LIBMYSQL.dll',
         'libmysql.lib-extract/62.LIBMYSQL.dll',
         'libmysql.lib-extract/63.LIBMYSQL.dll',
         'libmysql.lib-extract/64.LIBMYSQL.dll',
         'libmysql.lib-extract/65.LIBMYSQL.dll',
         'libmysql.lib-extract/66.LIBMYSQL.dll',
         'libmysql.lib-extract/67.LIBMYSQL.dll',
         'libmysql.lib-extract/68.LIBMYSQL.dll',
         'libmysql.lib-extract/69.LIBMYSQL.dll',
         'libmysql.lib-extract/7.LIBMYSQL.dll',
         'libmysql.lib-extract/70.LIBMYSQL.dll',
         'libmysql.lib-extract/71.LIBMYSQL.dll',
         'libmysql.lib-extract/72.LIBMYSQL.dll',
         'libmysql.lib-extract/73.LIBMYSQL.dll',
         'libmysql.lib-extract/74.LIBMYSQL.dll',
         'libmysql.lib-extract/75.LIBMYSQL.dll',
         'libmysql.lib-extract/76.LIBMYSQL.dll',
         'libmysql.lib-extract/77.LIBMYSQL.dll',
         'libmysql.lib-extract/78.LIBMYSQL.dll',
         'libmysql.lib-extract/79.LIBMYSQL.dll',
         'libmysql.lib-extract/8.LIBMYSQL.dll',
         'libmysql.lib-extract/80.LIBMYSQL.dll',
         'libmysql.lib-extract/81.LIBMYSQL.dll',
         'libmysql.lib-extract/82.LIBMYSQL.dll',
         'libmysql.lib-extract/83.LIBMYSQL.dll',
         'libmysql.lib-extract/84.LIBMYSQL.dll',
         'libmysql.lib-extract/85.LIBMYSQL.dll',
         'libmysql.lib-extract/86.LIBMYSQL.dll',
         'libmysql.lib-extract/87.LIBMYSQL.dll',
         'libmysql.lib-extract/88.LIBMYSQL.dll',
         'libmysql.lib-extract/89.LIBMYSQL.dll',
         'libmysql.lib-extract/9.LIBMYSQL.dll',
         'libmysql.lib-extract/90.LIBMYSQL.dll',
         'libmysql.lib-extract/91.LIBMYSQL.dll',
         'libmysql.lib-extract/92.LIBMYSQL.dll',
         'libmysql.lib-extract/93.LIBMYSQL.dll',
         'libmysql.lib-extract/94.LIBMYSQL.dll',
         'libmysql.lib-extract/95.LIBMYSQL.dll',
         'libmysql.lib-extract/96.LIBMYSQL.dll',
         'libmysql.lib-extract/97.LIBMYSQL.dll',
         'libmysql.lib-extract/98.LIBMYSQL.dll',
         'libmysql.lib-extract/99.LIBMYSQL.dll',
         'php4embed.lib',
         'php4embed.lib-extract/1.txt',
         'php4embed.lib-extract/2.txt',
         'php4embed.lib-extract/Release_TS/php_embed.obj',
         'pyexpat.lib',
         'pyexpat.lib-extract/1.pyexpat.pyd',
         'pyexpat.lib-extract/1.txt',
         'pyexpat.lib-extract/2.pyexpat.pyd',
         'pyexpat.lib-extract/2.txt',
         'pyexpat.lib-extract/3.pyexpat.pyd',
         'pyexpat.lib-extract/4.pyexpat.pyd',
         'zlib.lib',
         'zlib.lib-extract/1.txt',
         'zlib.lib-extract/1.zlib.pyd',
         'zlib.lib-extract/2.txt',
         'zlib.lib-extract/2.zlib.pyd',
         'zlib.lib-extract/3.zlib.pyd',
         'zlib.lib-extract/4.zlib.pyd'
     ]
     check_files(test_dir, expected)
     check_no_error(result)