Package: diffoscope
Version: 78
Severity: minor

hi,

when diffoscope hits ENOSPACE this is excepted, but sadly not really:

$ diffoscope doc/debian-edu-doc_1.923~20170823_amd64.changes 
debian-edu-doc_1.923~20170823_amd64.changes
Traceback (most recent call last):###########################|  100%            
                 ETA:  0:00:00 
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/libarchive.py", 
line 232, in ensure_unpacked
    f.write(block)
OSError: [Errno 28] No space left on device

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 285, in main
    sys.exit(run_diffoscope(parsed_args))
  File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 261, in 
run_diffoscope
    parsed_args.path1, parsed_args.path2)
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 
64, in compare_root_paths
    return compare_files(file1, file2)
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 
91, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/debian.py", line 
185, in compare
    differences = super().compare(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", 
line 237, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", 
line 194, in _compare_using_details
    details.extend(filter(None, self.as_container.compare(other.as_container)))
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 
94, in compare_commented_files
    difference = compare_files(file1, file2, source=source)
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 
91, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", 
line 237, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", 
line 194, in _compare_using_details
    details.extend(filter(None, self.as_container.compare(other.as_container)))
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 
94, in compare_commented_files
    difference = compare_files(file1, file2, source=source)
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 
91, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", 
line 237, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", 
line 194, in _compare_using_details
    details.extend(filter(None, self.as_container.compare(other.as_container)))
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 
94, in compare_commented_files
    difference = compare_files(file1, file2, source=source)
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 
91, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", 
line 237, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", 
line 194, in _compare_using_details
    details.extend(filter(None, self.as_container.compare(other.as_container)))
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 
94, in compare_commented_files
    difference = compare_files(file1, file2, source=source)
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 
79, in compare_files
    if file1.has_same_content_as(file2):
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", 
line 203, in has_same_content_as
    if os.path.isdir(self.path) or os.path.isdir(other.path):
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/archive.py", line 
88, in path
    self._path = self.container.extract(self._name, self._temp_dir.name)
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/libarchive.py", 
line 176, in extract
    self.ensure_unpacked()
  File 
"/usr/lib/python3/dist-packages/diffoscope/comparators/utils/libarchive.py", 
line 232, in ensure_unpacked
    f.write(block)
OSError: [Errno 28] No space left on device


Please make diffoscope fail more gracefully, that is, without showing all this 
traceback to the user.

-- 
cheers,
        Holger

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

Reply via email to