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
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