Пример #1
0
    def _find_package_in_package_files(self, package_name, package_files):
        downloaded_package_prefix = []
        for package_file in package_files:
            match = re.match('^(.*)Packages\.*([a-z2]{1,3})$',
                             package_file['name'])
            if not match or not len(match.groups()) <= 2:
                raise FatalError(
                    'Error parsing package name string {}.'.format(
                        package_file['name']))

            prefix = match.group(1).replace('/', '_')

            if prefix in downloaded_package_prefix:
                continue

            package_url = '{}/dists/{}/{}'.format(self._source.uri,
                                                  self._source.dist,
                                                  package_file['name'])
            package_file_data = self._try_fetch_archive_element(package_url)
            if package_file_data:
                self._verify_checksum(package_file_data, package_file)
                downloaded_package_prefix.append(prefix)
                decompressed_package_data = decompress(package_file_data)

                with tempfile.SpooledTemporaryFile() as f:
                    f.write(decompressed_package_data)
                    f.seek(0)
                    for section in debian.deb822.Packages.iter_paragraphs(f):
                        if section['Package'] == package_name:
                            return section

        return None
Пример #2
0
def test_decompression():
    for algorithm, compressed_data in archives:
        expected_data = '{0}-file\n'.format(algorithm)
        data = decompress(compressed_data).decode('utf-8')
        assert data == expected_data