Crash when comparing two ZIP files [with embedded .buildinfo files]
This bug was originally reported by Hans-Christoph Steiner (hans@eds.org) in Debian bug #987994:
Package: diffoscope
Version: 168~bpo10+1
Severity: important
I downloaded the job artifact files from two related GitLab CI jobs and compared them:
https://gitlab.com/guardianproject/tor-android/-/jobs/1231242475/artifacts/download
https://gitlab.com/eighthave/tor-android/-/jobs/1227385382/artifacts/download
diffoscope --html jobzip.html \
tor-android_release_0.4.5.7_044c580d3aeed61b315cd1c22520bbba3137acfb.zip \
tor-android_release_0.4.5.7_044c580d3aeed61b315cd1c22520bbba3137acfb\(1\).zip
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 771, in main
sys.exit(run_diffoscope(parsed_args))
File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 725, in run_diffoscope
difference = compare_root_paths(path1, path2)
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 69, in compare_root_paths
difference = compare_files(file1, file2)
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 125, in compare_files
return file1.compare(file2, source)
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 499, in compare
difference = self._compare_using_details(other, source)
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 436, in _compare_using_details
other.as_container, no_recurse=no_recurse
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/container.py", line 192, in compare_pair
file1, file2, source=None, diff_content_only=no_recurse
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 125, in compare_files
return file1.compare(file2, source)
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 499, in compare
difference = self._compare_using_details(other, source)
File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 406, in _compare_using_details
details.extend(self.compare_details(other, source))
File "/usr/lib/python3/dist-packages/diffoscope/comparators/debian.py", line 195, in compare_details
self._deb822.get_as_string("Checksums-Sha256"),
File "/usr/lib/python3/dist-packages/debian/deb822.py", line 1657, in get_as_string
if hasattr(self[key], 'keys'): # single-line
File "/usr/lib/python3/dist-packages/debian/deb822.py", line 500, in __getitem__
value = self.__dict[keyi]
KeyError: 'Checksums-Sha256'