Bug#1078883: diffoscope: FTBFS: failing tests
Santiago Vila
sanvila at debian.org
Sat Aug 17 14:39:47 BST 2024
Package: src:diffoscope
Version: 240
Severity: serious
Control: close -1 274
Tags: ftbfs bookworm
Dear maintainer:
During a rebuild of all packages in bookworm, your package failed to build:
--------------------------------------------------------------------------------
[...]
debian/rules binary
dh binary --with python3 --with bash-completion --buildsystem=pybuild
dh_update_autotools_config -O--buildsystem=pybuild
dh_autoreconf -O--buildsystem=pybuild
dh_auto_configure -O--buildsystem=pybuild
I: pybuild base:240: python3.11 setup.py config
running config
dh_auto_build -O--buildsystem=pybuild
I: pybuild base:240: /usr/bin/python3 setup.py build
running build
running build_py
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/diffoscope
copying diffoscope/config.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/diffoscope
[... snipped ...]
self = <zipfile.ZipFile filename='/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip' mode='r'>
zef_file = <zipfile._SharedFile object at 0x7f3060577e90>
zinfo = <ZipInfo filename='dir/text' compress_type=deflate filemode='-rw-r--r--' file_size=446 compress_size=269>
/usr/lib/python3.11/zipfile.py:1600: BadZipFile
=================================== FAILURES ===================================
__________________________ test_mozzip_no_differences __________________________
mozzip1 = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
def test_mozzip_no_differences(mozzip1):
> difference = mozzip1.compare(mozzip1)
mozzip1 = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
tests/comparators/test_zip.py:88:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
diffoscope/comparators/zip.py:217: in compare
x = super().compare(other, source)
__class__ = <class 'diffoscope.comparators.zip.ZipFileBase'>
other = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
self = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
source = None
diffoscope/comparators/utils/file.py:515: in compare
difference = self._compare_using_details(other, source)
other = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
self = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
source = None
diffoscope/comparators/utils/file.py:450: in _compare_using_details
details.extend(
depth = 1
details = [None, None, None]
difference = <Difference /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip -- /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip []>
no_recurse = False
other = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
self = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
source = None
diffoscope/comparators/utils/container.py:130: in comparisons
my_members = OrderedDict(self.get_adjusted_members_sizes())
other = <diffoscope.comparators.zip.MozillaZipContainer object at 0x7f3066ec6850>
self = <diffoscope.comparators.zip.MozillaZipContainer object at 0x7f3066ec6850>
diffoscope/comparators/utils/container.py:126: in get_adjusted_members_sizes
size = path_apparent_size(member.path)
member = <<class 'diffoscope.comparators.utils.archive.ArchiveMember'> dir/text>
name = 'dir/text'
self = <diffoscope.comparators.zip.MozillaZipContainer object at 0x7f3066ec6850>
diffoscope/comparators/utils/archive.py:114: in path
self._path = self.container.extract(
self = <<class 'diffoscope.comparators.utils.archive.ArchiveMember'> dir/text>
diffoscope/comparators/zip.py:196: in extract
with self.archive.open(member_name) as source, open(
dest_dir = '/tmp/diffoscope_kq5ljc2x_/tmpv1u01aow_MozillaZipContainer'
member_name = 'dir/text'
self = <diffoscope.comparators.zip.MozillaZipContainer object at 0x7f3066ec6850>
targetpath = b'/tmp/diffoscope_kq5ljc2x_/tmpv1u01aow_MozillaZipContainer/text'
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <zipfile.ZipFile filename='/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip' mode='r'>
name = 'dir/text', mode = 'r', pwd = None
def open(self, name, mode="r", pwd=None, *, force_zip64=False):
"""Return file-like object for 'name'.
name is a string for the file name within the ZIP file, or a ZipInfo
object.
mode should be 'r' to read a file already in the ZIP file, or 'w' to
write to a file newly added to the archive.
pwd is the password to decrypt files (only used for reading).
When writing, if the file size is not known in advance but may exceed
2 GiB, pass force_zip64 to use the ZIP64 format, which can handle large
files. If the size is known in advance, it is best to pass a ZipInfo
instance for name, with zinfo.file_size set.
"""
if mode not in {"r", "w"}:
raise ValueError('open() requires mode "r" or "w"')
if pwd and (mode == "w"):
raise ValueError("pwd is only supported for reading files")
if not self.fp:
raise ValueError(
"Attempt to use ZIP archive that was already closed")
# Make sure we have an info object
if isinstance(name, ZipInfo):
# 'name' is already an info object
zinfo = name
elif mode == 'w':
zinfo = ZipInfo(name)
zinfo.compress_type = self.compression
zinfo._compresslevel = self.compresslevel
else:
# Get info object for name
zinfo = self.getinfo(name)
if mode == 'w':
return self._open_to_write(zinfo, force_zip64=force_zip64)
if self._writing:
raise ValueError("Can't read from the ZIP file while there "
"is an open writing handle on it. "
"Close the writing handle before trying to read.")
# Open for reading:
self._fileRefCnt += 1
zef_file = _SharedFile(self.fp, zinfo.header_offset,
self._fpclose, self._lock, lambda: self._writing)
try:
# Skip the file header:
fheader = zef_file.read(sizeFileHeader)
if len(fheader) != sizeFileHeader:
raise BadZipFile("Truncated file header")
fheader = struct.unpack(structFileHeader, fheader)
if fheader[_FH_SIGNATURE] != stringFileHeader:
raise BadZipFile("Bad magic number for file header")
fname = zef_file.read(fheader[_FH_FILENAME_LENGTH])
if fheader[_FH_EXTRA_FIELD_LENGTH]:
zef_file.read(fheader[_FH_EXTRA_FIELD_LENGTH])
if zinfo.flag_bits & _MASK_COMPRESSED_PATCH:
# Zip 2.7: compressed patched data
raise NotImplementedError("compressed patched data (flag bit 5)")
if zinfo.flag_bits & _MASK_STRONG_ENCRYPTION:
# strong encryption
raise NotImplementedError("strong encryption (flag bit 6)")
if fheader[_FH_GENERAL_PURPOSE_FLAG_BITS] & _MASK_UTF_FILENAME:
# UTF-8 filename
fname_str = fname.decode("utf-8")
else:
fname_str = fname.decode(self.metadata_encoding or "cp437")
if fname_str != zinfo.orig_filename:
raise BadZipFile(
'File name in directory %r and header %r differ.'
% (zinfo.orig_filename, fname))
if (zinfo._end_offset is not None and
zef_file.tell() + zinfo.compress_size > zinfo._end_offset):
> raise BadZipFile(f"Overlapped entries: {zinfo.orig_filename!r} (possible zip bomb)")
E zipfile.BadZipFile: Overlapped entries: 'dir/text' (possible zip bomb)
fheader = (b'PK\x03\x04', 20, 0, 2, 8, 0, 15393, 1139091176, 269, 446, 8, 0)
fname = b'dir/text'
fname_str = 'dir/text'
force_zip64 = False
mode = 'r'
name = 'dir/text'
pwd = None
self = <zipfile.ZipFile filename='/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip' mode='r'>
zef_file = <zipfile._SharedFile object at 0x7f306f28cd10>
zinfo = <ZipInfo filename='dir/text' compress_type=deflate filemode='-rw-r--r--' file_size=446 compress_size=269>
/usr/lib/python3.11/zipfile.py:1600: BadZipFile
_______________________ test_mozzip_compare_non_existing _______________________
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f30646cbd10>
mozzip1 = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
@skip_unless_tools_exist("zipinfo")
def test_mozzip_compare_non_existing(monkeypatch, mozzip1):
> assert_non_existing(monkeypatch, mozzip1)
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f30646cbd10>
mozzip1 = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
tests/comparators/test_zip.py:111:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/utils/nonexisting.py:31: in assert_non_existing
difference = fixture.compare(MissingFile("/nonexisting", fixture))
fixture = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
has_details = True
has_null_source = True
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f30646cbd10>
diffoscope/comparators/zip.py:217: in compare
x = super().compare(other, source)
__class__ = <class 'diffoscope.comparators.zip.ZipFileBase'>
other = <<class 'diffoscope.comparators.missing_file.MissingFile'> /nonexisting>
self = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
source = None
diffoscope/comparators/utils/file.py:515: in compare
difference = self._compare_using_details(other, source)
other = <<class 'diffoscope.comparators.missing_file.MissingFile'> /nonexisting>
self = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
source = None
diffoscope/comparators/utils/file.py:450: in _compare_using_details
details.extend(
depth = 1
details = [<Difference zipinfo {} -- zipinfo {} []>,
<Difference zipnote «TEMP»/diffoscope_kq5ljc2x_/tmpwtggrr29_.zip -- zipnote «TEMP»/diffoscope_kq5ljc2x_/tmpwtggrr29_.zip []>,
None,
<Difference filetype from diffoscope -- filetype from diffoscope []>]
difference = <Difference /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip -- /nonexisting []>
no_recurse = False
other = <<class 'diffoscope.comparators.missing_file.MissingFile'> /nonexisting>
self = <<class 'abc.MozillaZipFile'> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip>
source = None
diffoscope/comparators/utils/container.py:130: in comparisons
my_members = OrderedDict(self.get_adjusted_members_sizes())
other = <diffoscope.comparators.utils.archive.MissingArchive object at 0x7f30658f7310>
self = <diffoscope.comparators.zip.MozillaZipContainer object at 0x7f30646cae50>
diffoscope/comparators/utils/container.py:126: in get_adjusted_members_sizes
size = path_apparent_size(member.path)
member = <<class 'diffoscope.comparators.utils.archive.ArchiveMember'> dir/text>
name = 'dir/text'
self = <diffoscope.comparators.zip.MozillaZipContainer object at 0x7f30646cae50>
diffoscope/comparators/utils/archive.py:114: in path
self._path = self.container.extract(
self = <<class 'diffoscope.comparators.utils.archive.ArchiveMember'> dir/text>
diffoscope/comparators/zip.py:196: in extract
with self.archive.open(member_name) as source, open(
dest_dir = '/tmp/diffoscope_kq5ljc2x_/tmpx6_nmw3e_MozillaZipContainer'
member_name = 'dir/text'
self = <diffoscope.comparators.zip.MozillaZipContainer object at 0x7f30646cae50>
targetpath = b'/tmp/diffoscope_kq5ljc2x_/tmpx6_nmw3e_MozillaZipContainer/text'
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <zipfile.ZipFile filename='/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip' mode='r'>
name = 'dir/text', mode = 'r', pwd = None
def open(self, name, mode="r", pwd=None, *, force_zip64=False):
"""Return file-like object for 'name'.
name is a string for the file name within the ZIP file, or a ZipInfo
object.
mode should be 'r' to read a file already in the ZIP file, or 'w' to
write to a file newly added to the archive.
pwd is the password to decrypt files (only used for reading).
When writing, if the file size is not known in advance but may exceed
2 GiB, pass force_zip64 to use the ZIP64 format, which can handle large
files. If the size is known in advance, it is best to pass a ZipInfo
instance for name, with zinfo.file_size set.
"""
if mode not in {"r", "w"}:
raise ValueError('open() requires mode "r" or "w"')
if pwd and (mode == "w"):
raise ValueError("pwd is only supported for reading files")
if not self.fp:
raise ValueError(
"Attempt to use ZIP archive that was already closed")
# Make sure we have an info object
if isinstance(name, ZipInfo):
# 'name' is already an info object
zinfo = name
elif mode == 'w':
zinfo = ZipInfo(name)
zinfo.compress_type = self.compression
zinfo._compresslevel = self.compresslevel
else:
# Get info object for name
zinfo = self.getinfo(name)
if mode == 'w':
return self._open_to_write(zinfo, force_zip64=force_zip64)
if self._writing:
raise ValueError("Can't read from the ZIP file while there "
"is an open writing handle on it. "
"Close the writing handle before trying to read.")
# Open for reading:
self._fileRefCnt += 1
zef_file = _SharedFile(self.fp, zinfo.header_offset,
self._fpclose, self._lock, lambda: self._writing)
try:
# Skip the file header:
fheader = zef_file.read(sizeFileHeader)
if len(fheader) != sizeFileHeader:
raise BadZipFile("Truncated file header")
fheader = struct.unpack(structFileHeader, fheader)
if fheader[_FH_SIGNATURE] != stringFileHeader:
raise BadZipFile("Bad magic number for file header")
fname = zef_file.read(fheader[_FH_FILENAME_LENGTH])
if fheader[_FH_EXTRA_FIELD_LENGTH]:
zef_file.read(fheader[_FH_EXTRA_FIELD_LENGTH])
if zinfo.flag_bits & _MASK_COMPRESSED_PATCH:
# Zip 2.7: compressed patched data
raise NotImplementedError("compressed patched data (flag bit 5)")
if zinfo.flag_bits & _MASK_STRONG_ENCRYPTION:
# strong encryption
raise NotImplementedError("strong encryption (flag bit 6)")
if fheader[_FH_GENERAL_PURPOSE_FLAG_BITS] & _MASK_UTF_FILENAME:
# UTF-8 filename
fname_str = fname.decode("utf-8")
else:
fname_str = fname.decode(self.metadata_encoding or "cp437")
if fname_str != zinfo.orig_filename:
raise BadZipFile(
'File name in directory %r and header %r differ.'
% (zinfo.orig_filename, fname))
if (zinfo._end_offset is not None and
zef_file.tell() + zinfo.compress_size > zinfo._end_offset):
> raise BadZipFile(f"Overlapped entries: {zinfo.orig_filename!r} (possible zip bomb)")
E zipfile.BadZipFile: Overlapped entries: 'dir/text' (possible zip bomb)
fheader = (b'PK\x03\x04', 20, 0, 2, 8, 0, 15393, 1139091176, 269, 446, 8, 0)
fname = b'dir/text'
fname_str = 'dir/text'
force_zip64 = False
mode = 'r'
name = 'dir/text'
pwd = None
self = <zipfile.ZipFile filename='/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/tests/data/test1.mozzip' mode='r'>
zef_file = <zipfile._SharedFile object at 0x7f30658f6d10>
zinfo = <ZipInfo filename='dir/text' compress_type=deflate filemode='-rw-r--r--' file_size=446 compress_size=269>
/usr/lib/python3.11/zipfile.py:1600: BadZipFile
---------- coverage: platform linux, python 3.11.2-final-0 -----------
Name Stmts Miss Cover Missing
--------------------------------------------------------------------------
diffoscope/__init__.py 1 0 100%
diffoscope/changes.py 123 52 58% 84, 92, 95, 104, 111, 118, 139, 176, 182, 188, 194-198, 204, 210, 226-229, 232-235, 244, 256-288, 306-308, 313-316, 323, 335
diffoscope/comparators/__init__.py 47 13 72% 147-153, 158-167
diffoscope/comparators/android.py 43 1 98% 49
diffoscope/comparators/apk.py 179 27 85% 48-50, 56, 242, 253-256, 259, 271, 278-282, 290, 294-309, 322, 326
diffoscope/comparators/ar.py 27 0 100%
diffoscope/comparators/arsc.py 38 0 100%
diffoscope/comparators/berkeley_db.py 20 0 100%
diffoscope/comparators/binary.py 20 0 100%
diffoscope/comparators/binwalk.py 64 8 88% 32-33, 37-39, 74, 101-102
diffoscope/comparators/bzip2.py 25 0 100%
diffoscope/comparators/cbfs.py 89 1 99% 166
diffoscope/comparators/cpio.py 10 0 100%
diffoscope/comparators/deb.py 126 9 93% 37-39, 52, 77, 136, 189-191
diffoscope/comparators/debian.py 169 12 93% 26-30, 87-89, 116-121, 189, 258-262, 282, 358
diffoscope/comparators/debian_fallback.py 17 0 100%
diffoscope/comparators/decompile.py 192 99 48% 38-39, 58-59, 62-67, 71, 74, 78, 86-97, 101-109, 116, 119, 122, 132-133, 137, 140, 143, 156-159, 165, 169, 175, 178, 181, 184, 187, 193-204, 207-212, 224-231, 234, 241, 245, 249, 253, 257-260, 264-275, 279-284, 307-327, 330, 336, 339, 342-343, 346-347
diffoscope/comparators/device.py 48 6 88% 48-51, 86-89
diffoscope/comparators/dex.py 53 2 96% 38, 77
diffoscope/comparators/directory.py 159 43 73% 40-43, 98-106, 112-115, 119-143, 173-174, 177, 180-201, 256, 271
diffoscope/comparators/docx.py 14 0 100%
diffoscope/comparators/dtb.py 14 0 100%
diffoscope/comparators/elf.py 347 33 90% 77, 82-83, 221, 236, 243, 341, 385, 407-409, 417, 429-431, 439, 471, 511-520, 528-530, 535, 548, 559, 565, 578-582, 594-599, 688-691
diffoscope/comparators/ffprobe.py 27 0 100%
diffoscope/comparators/fit.py 57 2 96% 88, 118
diffoscope/comparators/fontconfig.py 27 0 100%
diffoscope/comparators/fonts.py 27 2 93% 55-56
diffoscope/comparators/fsimage.py 88 20 77% 34-36, 44, 51-52, 59-65, 69-71, 77, 82-83, 87, 132-134
diffoscope/comparators/gettext.py 37 0 100%
diffoscope/comparators/gif.py 42 4 90% 56-57, 100-101
diffoscope/comparators/git.py 29 0 100%
diffoscope/comparators/gnumeric.py 19 0 100%
diffoscope/comparators/gzip.py 27 0 100%
diffoscope/comparators/haskell.py 66 22 67% 37, 85-87, 96, 102-109, 120-145, 148-153
diffoscope/comparators/hdf.py 14 0 100%
diffoscope/comparators/html.py 24 2 92% 50-51
diffoscope/comparators/icc.py 14 0 100%
diffoscope/comparators/image.py 84 6 93% 135-136, 164-165, 184-185
diffoscope/comparators/ipk.py 4 0 100%
diffoscope/comparators/iso9660.py 52 20 62% 33, 51, 56-57, 61-68, 71-73, 95, 105-119
diffoscope/comparators/java.py 51 4 92% 94-97, 106
diffoscope/comparators/javascript.py 13 0 100%
diffoscope/comparators/json.py 56 9 84% 34-36, 54-55, 86, 95-96, 104
diffoscope/comparators/kbx.py 18 1 94% 35
diffoscope/comparators/llvm.py 22 0 100%
diffoscope/comparators/lz4.py 28 0 100%
diffoscope/comparators/lzip.py 27 0 100%
diffoscope/comparators/macho.py 305 57 81% 94-96, 100, 104, 107, 111-114, 119, 124, 129, 134, 148-151, 155, 159, 162, 166-169, 174-175, 181, 184-185, 190-191, 213, 324, 328, 332-349, 366, 472, 495, 509-512, 538, 559-562, 582, 586, 625, 637-645
diffoscope/comparators/missing_file.py 55 4 93% 71, 74, 77, 95
diffoscope/comparators/mono.py 14 0 100%
diffoscope/comparators/ocaml.py 19 0 100%
diffoscope/comparators/odt.py 24 3 88% 35, 43-44
diffoscope/comparators/ogg.py 14 0 100%
diffoscope/comparators/openssh.py 14 0 100%
diffoscope/comparators/openssl.py 26 5 81% 56-68, 71-77
diffoscope/comparators/pcap.py 14 0 100%
diffoscope/comparators/pdf.py 104 24 77% 43-45, 53-62, 67-77, 113-120, 148, 178-180
diffoscope/comparators/pe32.py 18 5 72% 31, 41-44, 52
diffoscope/comparators/pgp.py 59 13 78% 55-72, 75, 79, 82, 103-104, 110-112
diffoscope/comparators/png.py 32 2 94% 78-79
diffoscope/comparators/ppu.py 57 16 72% 73, 85-98, 101-107
diffoscope/comparators/ps.py 25 2 92% 50-51
diffoscope/comparators/python.py 67 43 36% 48-60, 64-65, 69-82, 86-117, 121-129, 133
diffoscope/comparators/rdata.py 58 4 93% 93, 104, 108, 170
diffoscope/comparators/rpm.py 73 1 99% 42
diffoscope/comparators/rpm_fallback.py 12 0 100%
diffoscope/comparators/rust.py 32 0 100%
diffoscope/comparators/socket_or_fifo.py 52 10 81% 45-63, 101
diffoscope/comparators/sphinx.py 23 2 91% 61-65
diffoscope/comparators/sqlite.py 14 0 100%
diffoscope/comparators/squashfs.py 204 34 83% 102, 120, 134, 142, 145, 159, 167, 193-194, 198-199, 205-206, 221, 235-247, 250-251, 254, 257, 286-287, 344, 360-362
diffoscope/comparators/symlink.py 35 2 94% 58-59
diffoscope/comparators/tar.py 12 0 100%
diffoscope/comparators/text.py 27 2 93% 69-71
diffoscope/comparators/uimage.py 24 0 100%
diffoscope/comparators/utils/__init__.py 0 0 100%
diffoscope/comparators/utils/archive.py 102 14 86% 67, 71, 75, 79, 125-126, 145, 148, 151, 160, 163, 170, 173, 178
diffoscope/comparators/utils/command.py 56 3 95% 63, 77, 105
diffoscope/comparators/utils/compare.py 101 13 87% 77, 85, 105, 124-125, 141, 160-168
diffoscope/comparators/utils/container.py 125 11 91% 66, 70, 115-119, 192-195, 211
diffoscope/comparators/utils/file.py 298 53 82% 39-40, 53-59, 80-94, 122, 296-297, 346-348, 358-360, 368, 372, 376, 380, 445-448, 473-476, 490-493, 501, 505-509, 538, 549-562, 581, 588, 611
diffoscope/comparators/utils/fuzzy.py 33 2 94% 27-28
diffoscope/comparators/utils/libarchive.py 197 32 84% 47-50, 54-57, 69-72, 76-79, 83-86, 134-137, 176, 208, 216, 219, 232, 246, 251-252, 255, 258, 272-273, 304, 347-348, 371-387
diffoscope/comparators/utils/operation.py 26 6 77% 33, 40, 48, 55, 62, 66
diffoscope/comparators/utils/specialize.py 32 2 94% 78, 81
diffoscope/comparators/vmlinuz.py 28 9 68% 35, 38, 41, 45-59
diffoscope/comparators/wasm.py 19 0 100%
diffoscope/comparators/xml.py 52 3 94% 69, 156-157
diffoscope/comparators/xmlb.py 19 3 84% 31, 43, 46
diffoscope/comparators/xsb.py 17 0 100%
diffoscope/comparators/xz.py 28 0 100%
diffoscope/comparators/zip.py 158 5 97% 171, 174, 206, 258-259
diffoscope/comparators/zst.py 26 0 100%
diffoscope/config.py 50 4 92% 83-98
diffoscope/diff.py 435 60 86% 103, 140, 199, 237, 239, 283-286, 299-327, 409, 555-560, 579-580, 591, 608, 610, 614, 630, 635, 668-669, 672-673, 695-696, 699-709, 717-720, 730-733, 748
diffoscope/difference.py 232 17 93% 116, 226-230, 249, 284, 291-292, 311, 346-349, 380, 396, 402, 457
diffoscope/environ.py 13 0 100%
diffoscope/exc.py 21 0 100%
diffoscope/excludes.py 24 5 79% 31-36, 43-45
diffoscope/external_tools.py 5 0 100%
diffoscope/feeders.py 83 3 96% 36, 116-117
diffoscope/logging.py 28 4 86% 29-30, 35-36
diffoscope/main.py 281 67 76% 59-61, 65-67, 73, 450, 458-465, 477-481, 529, 569-614, 631, 686, 700-701, 723, 730-734, 739, 744-752, 770, 772-775, 780-786, 804
diffoscope/path.py 15 2 87% 30-31
diffoscope/presenters/__init__.py 0 0 100%
diffoscope/presenters/formats.py 43 4 91% 99-102
diffoscope/presenters/html/__init__.py 1 0 100%
diffoscope/presenters/html/html.py 473 125 74% 82-89, 143-146, 150, 152-154, 268-269, 272, 307, 331, 348-359, 418, 429, 442-446, 451, 458-465, 476, 481-493, 496-511, 542-545, 549-554, 557, 563-567, 592-601, 606-618, 623-637, 652, 672-675, 750, 752, 816, 832, 843-875, 893
diffoscope/presenters/html/templates.py 11 0 100%
diffoscope/presenters/icon.py 1 0 100%
diffoscope/presenters/json.py 32 1 97% 55
diffoscope/presenters/markdown.py 21 0 100%
diffoscope/presenters/restructuredtext.py 25 0 100%
diffoscope/presenters/text.py 44 7 84% 61-66, 71-72, 81-82
diffoscope/presenters/utils.py 166 14 92% 42, 71, 153, 158, 165, 307, 343, 354, 357, 422-427
diffoscope/profiling.py 47 3 94% 70-72
diffoscope/progress.py 168 18 89% 34-36, 45-52, 78, 89-90, 95, 120, 225, 240-241, 249
diffoscope/readers/__init__.py 9 0 100%
diffoscope/readers/json.py 17 1 94% 34
diffoscope/readers/utils.py 2 0 100%
diffoscope/tempfiles.py 57 9 84% 83-84, 99-105, 123-124
diffoscope/tools.py 93 13 86% 26-27, 98-99, 109-110, 149, 162, 167, 182-185
diffoscope/utils.py 38 1 97% 45
--------------------------------------------------------------------------
TOTAL 7843 1141 85%
Coverage HTML written to dir htmlcov
=========================== short test summary info ============================
SKIPPED [1] tests/comparators/test_berkeley_db.py:64: requires >= 6.0 (5.3.28 detected)
SKIPPED [1] tests/comparators/test_dex.py:89: requires min 9.0.4 >= 14.0 (17.0.11 detected)
SKIPPED [1] tests/comparators/test_elf_decompiler.py:78: radare2 didn't recognize pdgj command
SKIPPED [1] tests/comparators/test_elf_decompiler.py:88: radare2 didn't recognize pdgj command
SKIPPED [1] tests/comparators/test_elf_decompiler.py:98: requires r2pipe Python module
SKIPPED [1] tests/comparators/test_iso9660.py:53: requires isoinfo (try installing genisoimage)
SKIPPED [1] tests/comparators/test_iso9660.py:62: requires isoinfo (try installing genisoimage)
SKIPPED [1] tests/comparators/test_iso9660.py:71: requires isoinfo (try installing genisoimage)
SKIPPED [1] tests/comparators/test_iso9660.py:78: requires isoinfo (try installing genisoimage)
SKIPPED [1] tests/comparators/test_iso9660.py:86: requires isoinfo (try installing genisoimage)
SKIPPED [1] tests/comparators/test_java.py:86: requires min 9.0.4 >= 14.0 (17.0.11 detected)
SKIPPED [1] tests/comparators/test_macho.py:59: requires otool and lipo
SKIPPED [1] tests/comparators/test_macho.py:67: requires otool and lipo
SKIPPED [1] tests/comparators/test_macho_decompiler.py:86: radare2 didn't recognize pdgj command
SKIPPED [1] tests/comparators/test_macho_decompiler.py:96: radare2 didn't recognize pdgj command
SKIPPED [1] tests/comparators/test_macho_decompiler.py:109: requires r2pipe Python module
SKIPPED [1] tests/comparators/test_odt.py:55: requires >= 0.7 (0.5 detected)
SKIPPED [1] tests/comparators/test_odt.py:60: requires >= 0.7 (0.5 detected)
SKIPPED [1] tests/comparators/test_python.py:41: Unstable on 3.10+
SKIPPED [1] tests/comparators/test_python.py:54: Only Python 3.9 and 3.10 can de-marshal test1.pyc-renamed
SKIPPED [1] tests/comparators/test_utils.py:49: requires
SKIPPED [1] tests/comparators/test_utils.py:54: requires /missing
XFAIL tests/comparators/test_apk.py::test_android_manifest
== 2 failed, 688 passed, 22 skipped, 1 xfailed, 2 errors in 185.35s (0:03:05) ==
E: pybuild pybuild:388: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build; python3.11 -m pytest -vv -r sxX -l --cov=diffoscope --cov-report=term-missing --cov-report=html
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11 returned exit code 13
make: *** [debian/rules:35: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here:
https://people.debian.org/~sanvila/build-logs/bookworm/
About the archive rebuild: The build was made on virtual machines
of type m6a.large and r6a.large from AWS, using sbuild and a
reduced chroot with only build-essential packages.
If you could not reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.
If this is really a bug in one of the build-depends, please use
reassign and affects, so that this is still visible in the BTS web
page for this package.
Thanks.
More information about the Reproducible-builds
mailing list