Bug#835641: diffoscope: traceback when comparing dangling symlink to directory

Chris Lamb lamby at debian.org
Sat Aug 27 21:51:49 UTC 2016


Package: diffoscope
Version: 59
Severity: normal

$ mkdir dir

$ ln -sf dst-file src-file

$ diffoscope dir src-file
cmp: dir: Is a directory
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 200, in main
    sys.exit(run_diffoscope(parsed_args))
  File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 171, in run_diffoscope
    parsed_args.path1, parsed_args.path2)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/__init__.py", line 102, in compare_root_paths
    return compare_files(file1, file2)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/__init__.py", line 117, in compare_files
    return file1.compare_bytes(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/binary.py", line 170, in compare_bytes
    return compare_binary_files(self, other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/binary.py", line 55, in compare_binary_files
    return Difference.from_command(diffoscope.comparators.utils.Xxd, file1.path, file2.path, source=[file1.name, file2.name])
  File "/usr/lib/python3/dist-packages/diffoscope/difference.py", line 356, in from_command
    difference = Difference.from_feeder(feeder1, feeder2, path1, path2, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/diffoscope/difference.py", line 306, in from_feeder
    unified_diff = diff(feeder1, feeder2)
  File "/usr/lib/python3/dist-packages/diffoscope/difference.py", line 270, in diff
    return run_diff(fd1, fd2, end_nl_q1, end_nl_q2)
  File "/usr/lib/python3.5/contextlib.py", line 66, in __exit__
    next(self.gen)
  File "/usr/lib/python3/dist-packages/diffoscope/difference.py", line 205, in fd_from_feeder
    t.join()
  File "/usr/lib/python3/dist-packages/diffoscope/difference.py", line 183, in join
    raise ex
  File "/usr/lib/python3/dist-packages/diffoscope/difference.py", line 169, in run
    super().run(*args, **kwargs)
  File "/usr/lib/python3.5/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python3/dist-packages/diffoscope/difference.py", line 190, in feed
    end_nl = feeder(f)
  File "/usr/lib/python3/dist-packages/diffoscope/difference.py", line 260, in feeder
    raise subprocess.CalledProcessError(returncode, command.cmdline(), output=command.stderr.getvalue())
subprocess.CalledProcessError: Command '['xxd', 'dir']' returned non-zero exit status 2
Exception ignored in: <bound method File.__del__ of <<class 'abc.Symlink'> src-file>>
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/binary.py", line 112, in __del__
    self.cleanup()
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/symlink.py", line 50, in cleanup
    os.remove(self._placeholder)
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpzvwrnvg4_diffoscope'

q(Tried writing a test but couldn't seem to reproduce there…)


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      lamby at debian.org / chris-lamb.co.uk
       `-



More information about the Reproducible-builds mailing list