Test fails with ImageMagick 7.1.1-35
NixOS has migrated to ImageMagick 7.1.1-35 (both in `nixos-unstable` and `nixos-24.05`, presumably because ImageMagick 6 is plagued with a number of [vulnerabilities](https://github.com/NixOS/nixpkgs/blob/5b76cd9646fc4bf5df8a219fd21dc5d091afe45e/pkgs/applications/graphics/ImageMagick/6.x.nix#L123), and with it comes a change in the cli interface of ImageMagick that breaks a test on diffoscope. Namely, the venerable `convert` command is no more, replaced by `magick convert`, apparently. Tracking issue on nixpkgs: [#328350](https://github.com/NixOS/nixpkgs/issues/328350). Here is the breakage: ``` ❯ nix build github:NixOS/nixpkgs/nixos-24.05#diffoscope error: builder for '/nix/store/faz288wg8vwa1qvdjc8y88c4y53by9sr-diffoscope-267.drv' failed with exit code 1; last 10 log lines: > E + where [<Difference Image content -- Image content []>] = <Difference /build/diffoscope-267/tests/data/test1.jpg -- /build/diffoscope-267/tests/data/test2.jpg [<Difference Image content -- Image content []>]>.details > > tests/comparators/test_jpeg_image.py:87: AssertionError > ----------------------------- Captured stderr call ----------------------------- > WARNING: The convert command is deprecated in IMv7, use "magick" instead of "convert" or "magick convert" > > =========================== short test summary info ============================ > FAILED tests/comparators/test_jpeg_image.py::test_has_visuals - assert 1 == 2 > = 1 failed, 680 passed, 37 skipped, 5 deselected, 1 xfailed, 1 xpassed in 47.67s = > /nix/store/dd7nxjnni7nzm0846fq5xrm89ais5lwz-stdenv-linux/setup: line 1579: pop_var_context: head of shell_variables not a function context For full logs, run 'nix log /nix/store/faz288wg8vwa1qvdjc8y88c4y53by9sr-diffoscope-267.drv'. xenon in ~ took 2m16s ❯ ``` And the full log: <details><summary>Click to expand</summary> Sourcing python-remove-tests-dir-hook Sourcing python-catch-conflicts-hook.sh Sourcing python-remove-bin-bytecode-hook.sh Sourcing setuptools-build-hook Using setuptoolsBuildPhase Sourcing pypa-install-hook Using pypaInstallPhase Sourcing python-imports-check-hook.sh Using pythonImportsCheckPhase Sourcing python-namespaces-hook Sourcing python-catch-conflicts-hook.sh Sourcing setuptools-check-hook Using setuptoolsCheckPhase Sourcing pytest-check-hook Using pytestCheckPhase Removing setuptoolsCheckPhase @nix { "action": "setPhase", "phase": "unpackPhase" } Running phase: unpackPhase unpacking source archive /nix/store/jhj9xc702c15ja09ry6pg8i1fcskfj0m-diffoscope-267.tar.bz2 source root is diffoscope-267 setting SOURCE_DATE_EPOCH to timestamp 1715931446 of file diffoscope-267/tests/utils/versions.py @nix { "action": "setPhase", "phase": "patchPhase" } Running phase: patchPhase applying patch /nix/store/k3rsi5di3hg85jkachv8fbkmdjvdkjix-ignore_links.patch patching file diffoscope/comparators/directory.py Hunk #1 succeeded at 59 (offset -18 lines). Hunk #2 succeeded at 69 (offset -18 lines). applying patch /nix/store/jr0q34yyvk240aadg1486d0nhm68v629-openssh-no-dsa.patch patching file tests/comparators/test_openssh_pub_key.py patching file tests/data/openssh_pub_key_expected_diff patching file tests/data/test_openssh_pub_key1.pub substituteStream() in derivation diffoscope-267: WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. (file 'doc/Makefile') @nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" } Running phase: updateAutotoolsGnuConfigScriptsPhase @nix { "action": "setPhase", "phase": "configurePhase" } Running phase: configurePhase no configure script, doing nothing @nix { "action": "setPhase", "phase": "buildPhase" } Running phase: buildPhase Executing setuptoolsBuildPhase running bdist_wheel running build running build_py creating build creating build/lib creating build/lib/diffoscope copying diffoscope/__init__.py -> build/lib/diffoscope copying diffoscope/changes.py -> build/lib/diffoscope copying diffoscope/config.py -> build/lib/diffoscope copying diffoscope/diff.py -> build/lib/diffoscope copying diffoscope/difference.py -> build/lib/diffoscope copying diffoscope/environ.py -> build/lib/diffoscope copying diffoscope/exc.py -> build/lib/diffoscope copying diffoscope/excludes.py -> build/lib/diffoscope copying diffoscope/external_tools.py -> build/lib/diffoscope copying diffoscope/feeders.py -> build/lib/diffoscope copying diffoscope/logging.py -> build/lib/diffoscope copying diffoscope/main.py -> build/lib/diffoscope copying diffoscope/path.py -> build/lib/diffoscope copying diffoscope/profiling.py -> build/lib/diffoscope copying diffoscope/progress.py -> build/lib/diffoscope copying diffoscope/tempfiles.py -> build/lib/diffoscope copying diffoscope/tools.py -> build/lib/diffoscope copying diffoscope/utils.py -> build/lib/diffoscope creating build/lib/diffoscope/comparators copying diffoscope/comparators/__init__.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/android.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/apk.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/ar.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/arsc.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/berkeley_db.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/binary.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/binwalk.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/bzip2.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/cbfs.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/cpio.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/deb.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/debian.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/debian_fallback.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/decompile.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/device.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/dex.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/docx.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/dtb.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/elf.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/ffprobe.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/fit.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/fontconfig.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/fonts.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/fsimage.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/gettext.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/gif.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/git.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/gnumeric.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/gzip.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/haskell.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/hdf.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/html.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/icc.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/image.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/ipk.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/iso9660.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/java.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/javascript.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/json.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/kbx.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/llvm.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/lz4.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/lzip.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/macho.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/missing_file.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/mono.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/ocaml.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/odt.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/ogg.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/openssh.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/openssl.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/pcap.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/pdf.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/pe32.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/pgp.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/png.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/ppu.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/ps.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/python.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/rdata.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/rpm.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/rpm_fallback.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/rust.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/sevenz.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/socket_or_fifo.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/sphinx.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/sqlite.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/squashfs.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/symlink.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/tar.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/text.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/uimage.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/vmlinuz.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/wasm.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/xar.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/xml.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/xmlb.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/xsb.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/xz.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/zip.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/zst.py -> build/lib/diffoscope/comparators copying diffoscope/comparators/directory.py -> build/lib/diffoscope/comparators creating build/lib/diffoscope/presenters copying diffoscope/presenters/__init__.py -> build/lib/diffoscope/presenters copying diffoscope/presenters/formats.py -> build/lib/diffoscope/presenters copying diffoscope/presenters/icon.py -> build/lib/diffoscope/presenters copying diffoscope/presenters/json.py -> build/lib/diffoscope/presenters copying diffoscope/presenters/markdown.py -> build/lib/diffoscope/presenters copying diffoscope/presenters/restructuredtext.py -> build/lib/diffoscope/presenters copying diffoscope/presenters/text.py -> build/lib/diffoscope/presenters copying diffoscope/presenters/utils.py -> build/lib/diffoscope/presenters creating build/lib/diffoscope/readers copying diffoscope/readers/__init__.py -> build/lib/diffoscope/readers copying diffoscope/readers/json.py -> build/lib/diffoscope/readers copying diffoscope/readers/utils.py -> build/lib/diffoscope/readers creating build/lib/diffoscope/comparators/utils copying diffoscope/comparators/utils/__init__.py -> build/lib/diffoscope/comparators/utils copying diffoscope/comparators/utils/archive.py -> build/lib/diffoscope/comparators/utils copying diffoscope/comparators/utils/command.py -> build/lib/diffoscope/comparators/utils copying diffoscope/comparators/utils/compare.py -> build/lib/diffoscope/comparators/utils copying diffoscope/comparators/utils/container.py -> build/lib/diffoscope/comparators/utils copying diffoscope/comparators/utils/file.py -> build/lib/diffoscope/comparators/utils copying diffoscope/comparators/utils/fuzzy.py -> build/lib/diffoscope/comparators/utils copying diffoscope/comparators/utils/libarchive.py -> build/lib/diffoscope/comparators/utils copying diffoscope/comparators/utils/operation.py -> build/lib/diffoscope/comparators/utils copying diffoscope/comparators/utils/specialize.py -> build/lib/diffoscope/comparators/utils creating build/lib/diffoscope/presenters/html copying diffoscope/presenters/html/__init__.py -> build/lib/diffoscope/presenters/html copying diffoscope/presenters/html/html.py -> build/lib/diffoscope/presenters/html copying diffoscope/presenters/html/templates.py -> build/lib/diffoscope/presenters/html creating build/lib/diffoscope/scripts copying diffoscope/scripts/extract-vmlinux -> build/lib/diffoscope/scripts /nix/store/29cxr91478z6ivzv7rkanh0an7s6b0zh-python3.11-setuptools-69.5.1/lib/python3.11/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated. !! ******************************************************************************** Please avoid running ``setup.py`` directly. Instead, use pypa/build, pypa/installer or other standards-based tools. See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details. ******************************************************************************** !! self.initialize_options() installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/__init__.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/changes.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/config.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/diff.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/difference.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/environ.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/exc.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/excludes.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/external_tools.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/feeders.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/logging.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/main.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/path.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/profiling.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/progress.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/tempfiles.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/tools.py -> build/bdist.linux-x86_64/wheel/diffoscope copying build/lib/diffoscope/utils.py -> build/bdist.linux-x86_64/wheel/diffoscope creating build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/__init__.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/android.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/apk.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/ar.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/arsc.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/berkeley_db.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/binary.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/binwalk.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/bzip2.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/cbfs.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/cpio.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/deb.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/debian.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/debian_fallback.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/decompile.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/device.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/dex.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/docx.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/dtb.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/elf.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/ffprobe.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/fit.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/fontconfig.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/fonts.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/fsimage.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/gettext.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/gif.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/git.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/gnumeric.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/gzip.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/haskell.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/hdf.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/html.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/icc.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/image.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/ipk.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/iso9660.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/java.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/javascript.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/json.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/kbx.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/llvm.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/lz4.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/lzip.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/macho.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/missing_file.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/mono.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/ocaml.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/odt.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/ogg.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/openssh.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/openssl.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/pcap.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/pdf.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/pe32.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/pgp.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/png.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/ppu.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/ps.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/python.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/rdata.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/rpm.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/rpm_fallback.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/rust.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/sevenz.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/socket_or_fifo.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/sphinx.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/sqlite.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/squashfs.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/symlink.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/tar.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/text.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/uimage.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/vmlinuz.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/wasm.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/xar.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/xml.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/xmlb.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/xsb.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/xz.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/zip.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/zst.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators copying build/lib/diffoscope/comparators/directory.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators creating build/bdist.linux-x86_64/wheel/diffoscope/comparators/utils copying build/lib/diffoscope/comparators/utils/__init__.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators/utils copying build/lib/diffoscope/comparators/utils/archive.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators/utils copying build/lib/diffoscope/comparators/utils/command.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators/utils copying build/lib/diffoscope/comparators/utils/compare.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators/utils copying build/lib/diffoscope/comparators/utils/container.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators/utils copying build/lib/diffoscope/comparators/utils/file.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators/utils copying build/lib/diffoscope/comparators/utils/fuzzy.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators/utils copying build/lib/diffoscope/comparators/utils/libarchive.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators/utils copying build/lib/diffoscope/comparators/utils/operation.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators/utils copying build/lib/diffoscope/comparators/utils/specialize.py -> build/bdist.linux-x86_64/wheel/diffoscope/comparators/utils creating build/bdist.linux-x86_64/wheel/diffoscope/presenters copying build/lib/diffoscope/presenters/__init__.py -> build/bdist.linux-x86_64/wheel/diffoscope/presenters copying build/lib/diffoscope/presenters/formats.py -> build/bdist.linux-x86_64/wheel/diffoscope/presenters copying build/lib/diffoscope/presenters/icon.py -> build/bdist.linux-x86_64/wheel/diffoscope/presenters copying build/lib/diffoscope/presenters/json.py -> build/bdist.linux-x86_64/wheel/diffoscope/presenters copying build/lib/diffoscope/presenters/markdown.py -> build/bdist.linux-x86_64/wheel/diffoscope/presenters copying build/lib/diffoscope/presenters/restructuredtext.py -> build/bdist.linux-x86_64/wheel/diffoscope/presenters copying build/lib/diffoscope/presenters/text.py -> build/bdist.linux-x86_64/wheel/diffoscope/presenters copying build/lib/diffoscope/presenters/utils.py -> build/bdist.linux-x86_64/wheel/diffoscope/presenters creating build/bdist.linux-x86_64/wheel/diffoscope/presenters/html copying build/lib/diffoscope/presenters/html/__init__.py -> build/bdist.linux-x86_64/wheel/diffoscope/presenters/html copying build/lib/diffoscope/presenters/html/html.py -> build/bdist.linux-x86_64/wheel/diffoscope/presenters/html copying build/lib/diffoscope/presenters/html/templates.py -> build/bdist.linux-x86_64/wheel/diffoscope/presenters/html creating build/bdist.linux-x86_64/wheel/diffoscope/readers copying build/lib/diffoscope/readers/__init__.py -> build/bdist.linux-x86_64/wheel/diffoscope/readers copying build/lib/diffoscope/readers/json.py -> build/bdist.linux-x86_64/wheel/diffoscope/readers copying build/lib/diffoscope/readers/utils.py -> build/bdist.linux-x86_64/wheel/diffoscope/readers creating build/bdist.linux-x86_64/wheel/diffoscope/scripts copying build/lib/diffoscope/scripts/extract-vmlinux -> build/bdist.linux-x86_64/wheel/diffoscope/scripts running install_egg_info running egg_info creating diffoscope.egg-info writing diffoscope.egg-info/PKG-INFO writing dependency_links to diffoscope.egg-info/dependency_links.txt writing entry points to diffoscope.egg-info/entry_points.txt writing requirements to diffoscope.egg-info/requires.txt writing top-level names to diffoscope.egg-info/top_level.txt writing manifest file 'diffoscope.egg-info/SOURCES.txt' reading manifest file 'diffoscope.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'COPYING' writing manifest file 'diffoscope.egg-info/SOURCES.txt' Copying diffoscope.egg-info to build/bdist.linux-x86_64/wheel/diffoscope-267-py3.11.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/diffoscope-267.dist-info/WHEEL creating 'dist/diffoscope-267-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'diffoscope/__init__.py' adding 'diffoscope/changes.py' adding 'diffoscope/config.py' adding 'diffoscope/diff.py' adding 'diffoscope/difference.py' adding 'diffoscope/environ.py' adding 'diffoscope/exc.py' adding 'diffoscope/excludes.py' adding 'diffoscope/external_tools.py' adding 'diffoscope/feeders.py' adding 'diffoscope/logging.py' adding 'diffoscope/main.py' adding 'diffoscope/path.py' adding 'diffoscope/profiling.py' adding 'diffoscope/progress.py' adding 'diffoscope/tempfiles.py' adding 'diffoscope/tools.py' adding 'diffoscope/utils.py' adding 'diffoscope/comparators/__init__.py' adding 'diffoscope/comparators/android.py' adding 'diffoscope/comparators/apk.py' adding 'diffoscope/comparators/ar.py' adding 'diffoscope/comparators/arsc.py' adding 'diffoscope/comparators/berkeley_db.py' adding 'diffoscope/comparators/binary.py' adding 'diffoscope/comparators/binwalk.py' adding 'diffoscope/comparators/bzip2.py' adding 'diffoscope/comparators/cbfs.py' adding 'diffoscope/comparators/cpio.py' adding 'diffoscope/comparators/deb.py' adding 'diffoscope/comparators/debian.py' adding 'diffoscope/comparators/debian_fallback.py' adding 'diffoscope/comparators/decompile.py' adding 'diffoscope/comparators/device.py' adding 'diffoscope/comparators/dex.py' adding 'diffoscope/comparators/directory.py' adding 'diffoscope/comparators/docx.py' adding 'diffoscope/comparators/dtb.py' adding 'diffoscope/comparators/elf.py' adding 'diffoscope/comparators/ffprobe.py' adding 'diffoscope/comparators/fit.py' adding 'diffoscope/comparators/fontconfig.py' adding 'diffoscope/comparators/fonts.py' adding 'diffoscope/comparators/fsimage.py' adding 'diffoscope/comparators/gettext.py' adding 'diffoscope/comparators/gif.py' adding 'diffoscope/comparators/git.py' adding 'diffoscope/comparators/gnumeric.py' adding 'diffoscope/comparators/gzip.py' adding 'diffoscope/comparators/haskell.py' adding 'diffoscope/comparators/hdf.py' adding 'diffoscope/comparators/html.py' adding 'diffoscope/comparators/icc.py' adding 'diffoscope/comparators/image.py' adding 'diffoscope/comparators/ipk.py' adding 'diffoscope/comparators/iso9660.py' adding 'diffoscope/comparators/java.py' adding 'diffoscope/comparators/javascript.py' adding 'diffoscope/comparators/json.py' adding 'diffoscope/comparators/kbx.py' adding 'diffoscope/comparators/llvm.py' adding 'diffoscope/comparators/lz4.py' adding 'diffoscope/comparators/lzip.py' adding 'diffoscope/comparators/macho.py' adding 'diffoscope/comparators/missing_file.py' adding 'diffoscope/comparators/mono.py' adding 'diffoscope/comparators/ocaml.py' adding 'diffoscope/comparators/odt.py' adding 'diffoscope/comparators/ogg.py' adding 'diffoscope/comparators/openssh.py' adding 'diffoscope/comparators/openssl.py' adding 'diffoscope/comparators/pcap.py' adding 'diffoscope/comparators/pdf.py' adding 'diffoscope/comparators/pe32.py' adding 'diffoscope/comparators/pgp.py' adding 'diffoscope/comparators/png.py' adding 'diffoscope/comparators/ppu.py' adding 'diffoscope/comparators/ps.py' adding 'diffoscope/comparators/python.py' adding 'diffoscope/comparators/rdata.py' adding 'diffoscope/comparators/rpm.py' adding 'diffoscope/comparators/rpm_fallback.py' adding 'diffoscope/comparators/rust.py' adding 'diffoscope/comparators/sevenz.py' adding 'diffoscope/comparators/socket_or_fifo.py' adding 'diffoscope/comparators/sphinx.py' adding 'diffoscope/comparators/sqlite.py' adding 'diffoscope/comparators/squashfs.py' adding 'diffoscope/comparators/symlink.py' adding 'diffoscope/comparators/tar.py' adding 'diffoscope/comparators/text.py' adding 'diffoscope/comparators/uimage.py' adding 'diffoscope/comparators/vmlinuz.py' adding 'diffoscope/comparators/wasm.py' adding 'diffoscope/comparators/xar.py' adding 'diffoscope/comparators/xml.py' adding 'diffoscope/comparators/xmlb.py' adding 'diffoscope/comparators/xsb.py' adding 'diffoscope/comparators/xz.py' adding 'diffoscope/comparators/zip.py' adding 'diffoscope/comparators/zst.py' adding 'diffoscope/comparators/utils/__init__.py' adding 'diffoscope/comparators/utils/archive.py' adding 'diffoscope/comparators/utils/command.py' adding 'diffoscope/comparators/utils/compare.py' adding 'diffoscope/comparators/utils/container.py' adding 'diffoscope/comparators/utils/file.py' adding 'diffoscope/comparators/utils/fuzzy.py' adding 'diffoscope/comparators/utils/libarchive.py' adding 'diffoscope/comparators/utils/operation.py' adding 'diffoscope/comparators/utils/specialize.py' adding 'diffoscope/presenters/__init__.py' adding 'diffoscope/presenters/formats.py' adding 'diffoscope/presenters/icon.py' adding 'diffoscope/presenters/json.py' adding 'diffoscope/presenters/markdown.py' adding 'diffoscope/presenters/restructuredtext.py' adding 'diffoscope/presenters/text.py' adding 'diffoscope/presenters/utils.py' adding 'diffoscope/presenters/html/__init__.py' adding 'diffoscope/presenters/html/html.py' adding 'diffoscope/presenters/html/templates.py' adding 'diffoscope/readers/__init__.py' adding 'diffoscope/readers/json.py' adding 'diffoscope/readers/utils.py' adding 'diffoscope/scripts/extract-vmlinux' adding 'diffoscope-267.dist-info/COPYING' adding 'diffoscope-267.dist-info/METADATA' adding 'diffoscope-267.dist-info/WHEEL' adding 'diffoscope-267.dist-info/entry_points.txt' adding 'diffoscope-267.dist-info/top_level.txt' adding 'diffoscope-267.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel Finished executing setuptoolsBuildPhase @nix { "action": "setPhase", "phase": "glibPreInstallPhase" } Running phase: glibPreInstallPhase @nix { "action": "setPhase", "phase": "glibPreInstallPhase" } Running phase: glibPreInstallPhase @nix { "action": "setPhase", "phase": "installPhase" } Running phase: installPhase Executing pypaInstallPhase Successfully installed diffoscope-267-py3-none-any.whl make: Entering directory '/build/diffoscope-267/doc' { cat diffoscope.h2m.0; cat ../README.rst | \ sed -e '/^\.\. raw:: /d' -e '/^\.\. image:: /d' -e '/ :target: /d' | tee out.txt | \ rst2man -q --no-doc-title | \ sed -e 's,^ \\- ,,' -e 's,^\[,\\[char91],g' -e 's,\.TH *"" "" "",,g' \ -e 's,bin/diffoscope,diffoscope,g' \ -e 's,\.SH \(.*\),[\1],g' -e 's,\[diffoscope\],[DESCRIPTION],gi'; } > "diffoscope.h2m" help2man --version-string=$(cd .. && python3 setup.py -V) /nix/store/9xx23qw6mm1lwvqmxvsazcmnpjr1mh51-diffoscope-267/bin/diffoscope -N --include="diffoscope.h2m" | \ sed -e '/end_of_description_header/,/positional arguments/{d}' > "diffoscope.1" make: Leaving directory '/build/diffoscope-267/doc' Finished executing pypaInstallPhase @nix { "action": "setPhase", "phase": "pythonOutputDistPhase" } Running phase: pythonOutputDistPhase Executing pythonOutputDistPhase Finished executing pythonOutputDistPhase @nix { "action": "setPhase", "phase": "glibPreFixupPhase" } Running phase: glibPreFixupPhase @nix { "action": "setPhase", "phase": "glibPreFixupPhase" } Running phase: glibPreFixupPhase @nix { "action": "setPhase", "phase": "fixupPhase" } Running phase: fixupPhase shrinking RPATHs of ELF executables and libraries in /nix/store/9xx23qw6mm1lwvqmxvsazcmnpjr1mh51-diffoscope-267 checking for references to /build/ in /nix/store/9xx23qw6mm1lwvqmxvsazcmnpjr1mh51-diffoscope-267... patching script interpreter paths in /nix/store/9xx23qw6mm1lwvqmxvsazcmnpjr1mh51-diffoscope-267 stripping (with command strip and flags -S -p) in /nix/store/9xx23qw6mm1lwvqmxvsazcmnpjr1mh51-diffoscope-267/lib /nix/store/9xx23qw6mm1lwvqmxvsazcmnpjr1mh51-diffoscope-267/bin shrinking RPATHs of ELF executables and libraries in /nix/store/964pdn1fpn28br6ysd0xn2fb0arkj02v-diffoscope-267-man checking for references to /build/ in /nix/store/964pdn1fpn28br6ysd0xn2fb0arkj02v-diffoscope-267-man... gzipping man pages under /nix/store/964pdn1fpn28br6ysd0xn2fb0arkj02v-diffoscope-267-man/share/man/ patching script interpreter paths in /nix/store/964pdn1fpn28br6ysd0xn2fb0arkj02v-diffoscope-267-man shrinking RPATHs of ELF executables and libraries in /nix/store/vn1vffc1xmk84xcxdx4dks811jpvs4kg-diffoscope-267-dist checking for references to /build/ in /nix/store/vn1vffc1xmk84xcxdx4dks811jpvs4kg-diffoscope-267-dist... patching script interpreter paths in /nix/store/vn1vffc1xmk84xcxdx4dks811jpvs4kg-diffoscope-267-dist Rewriting #!/nix/store/pfv4raslwhi3101k342752v65zxkwrxq-python3-3.11.9/bin/python3.11 to #!/nix/store/pfv4raslwhi3101k342752v65zxkwrxq-python3-3.11.9 wrapping `/nix/store/9xx23qw6mm1lwvqmxvsazcmnpjr1mh51-diffoscope-267/bin/diffoscope'... Executing pythonRemoveTestsDir Finished executing pythonRemoveTestsDir @nix { "action": "setPhase", "phase": "installCheckPhase" } Running phase: installCheckPhase no Makefile or custom installCheckPhase, doing nothing @nix { "action": "setPhase", "phase": "pythonCatchConflictsPhase" } Running phase: pythonCatchConflictsPhase @nix { "action": "setPhase", "phase": "pythonRemoveBinBytecodePhase" } Running phase: pythonRemoveBinBytecodePhase @nix { "action": "setPhase", "phase": "pythonImportsCheckPhase" } Running phase: pythonImportsCheckPhase Executing pythonImportsCheckPhase @nix { "action": "setPhase", "phase": "pytestCheckPhase" } Running phase: pytestCheckPhase Executing pytestCheckPhase ============================= test session starts ============================== platform linux -- Python 3.11.9, pytest-8.1.1, pluggy-1.4.0 -- /nix/store/pfv4raslwhi3101k342752v65zxkwrxq-python3-3.11.9/bin/python3.11 cachedir: .pytest_cache rootdir: /build/diffoscope-267 configfile: pytest.ini collecting ... collecting 109 items collecting 339 items collected 725 items / 5 deselected / 720 selected tests/comparators/test_android.py::test_identification PASSED [ 0%] tests/comparators/test_android.py::test_no_differences PASSED [ 0%] tests/comparators/test_android.py::test_diff PASSED [ 0%] tests/comparators/test_android.py::test_compare_non_existing PASSED [ 0%] tests/comparators/test_apk.py::test_identification PASSED [ 0%] tests/comparators/test_apk.py::test_no_differences PASSED [ 0%] tests/comparators/test_apk.py::test_compare_non_existing PASSED [ 0%] tests/comparators/test_apk.py::test_zipinfo PASSED [ 1%] tests/comparators/test_apk.py::test_android_manifest XFAIL [ 1%] tests/comparators/test_apk.py::test_apk_metadata_source PASSED [ 1%] tests/comparators/test_apk.py::test_skip_undecoded_android_manifest PASSED [ 1%] tests/comparators/test_apk.py::test_no_android_manifest PASSED [ 1%] tests/comparators/test_archive.py::test_compressed_content_name PASSED [ 1%] tests/comparators/test_arsc.py::test_identification PASSED [ 1%] tests/comparators/test_arsc.py::test_no_differences PASSED [ 2%] tests/comparators/test_arsc.py::test_differences SKIPPED (requires aapt2) [ 2%] tests/comparators/test_arsc.py::test_compare_non_existing SKIPPED [ 2%] tests/comparators/test_berkeley_db.py::test_identification PASSED [ 2%] tests/comparators/test_berkeley_db.py::test_no_differences PASSED [ 2%] tests/comparators/test_berkeley_db.py::test_diff PASSED [ 2%] tests/comparators/test_berkeley_db.py::test_diff6 SKIPPED (requires db_dump >= 6.0; 5.3.28 detected) [ 2%] tests/comparators/test_berkeley_db.py::test_compare_non_existing PASSED [ 3%] tests/comparators/test_binary.py::test_same_content PASSED [ 3%] tests/comparators/test_binary.py::test_not_same_content PASSED [ 3%] tests/comparators/test_binary.py::test_guess_file_type PASSED [ 3%] tests/comparators/test_binary.py::test_guess_encoding_binary PASSED [ 3%] tests/comparators/test_binary.py::test_guess_encoding_ascii PASSED [ 3%] tests/comparators/test_binary.py::test_guess_encoding_unicode PASSED [ 3%] tests/comparators/test_binary.py::test_guess_encoding_iso8859 PASSED [ 4%] tests/comparators/test_binary.py::test_no_differences_with_xxd PASSED [ 4%] tests/comparators/test_binary.py::test_compare_with_xxd PASSED [ 4%] tests/comparators/test_binary.py::test_compare_non_existing_with_xxd PASSED [ 4%] tests/comparators/test_binary.py::test_no_differences_without_xxd PASSED [ 4%] tests/comparators/test_binary.py::test_compare_without_xxd PASSED [ 4%] tests/comparators/test_binary.py::test_with_compare_details PASSED [ 4%] tests/comparators/test_binary.py::test_with_compare_details_and_fallback PASSED [ 5%] tests/comparators/test_binary.py::test_with_compare_details_and_no_actual_differences PASSED [ 5%] tests/comparators/test_binary.py::test_with_compare_details_and_failed_process PASSED [ 5%] tests/comparators/test_binary.py::test_with_compare_details_and_parsing_error PASSED [ 5%] tests/comparators/test_binary.py::test_with_compare_details_and_extraction_error PASSED [ 5%] tests/comparators/test_binary.py::test_with_compare_details_and_tool_not_found SKIPPED [ 5%] tests/comparators/test_binary.py::test_compare_two_nonexisting_files PASSED [ 5%] tests/comparators/test_binary.py::test_symlink_to_dir PASSED [ 5%] tests/comparators/test_binwalk.py::test_identification PASSED [ 6%] tests/comparators/test_binwalk.py::test_no_differences PASSED [ 6%] tests/comparators/test_binwalk.py::test_listing PASSED [ 6%] tests/comparators/test_binwalk.py::test_symlink PASSED [ 6%] tests/comparators/test_binwalk.py::test_compare_non_existing PASSED [ 6%] tests/comparators/test_bzip2.py::test_identification PASSED [ 6%] tests/comparators/test_bzip2.py::test_no_differences PASSED [ 6%] tests/comparators/test_bzip2.py::test_content_source PASSED [ 7%] tests/comparators/test_bzip2.py::test_content_source_without_extension PASSED [ 7%] tests/comparators/test_bzip2.py::test_content_diff PASSED [ 7%] tests/comparators/test_bzip2.py::test_compare_non_existing PASSED [ 7%] tests/comparators/test_cbfs.py::test_identification_using_offset PASSED [ 7%] tests/comparators/test_cbfs.py::test_identification_without_offset PASSED [ 7%] tests/comparators/test_cbfs.py::test_no_differences PASSED [ 7%] tests/comparators/test_cbfs.py::test_listing PASSED [ 8%] tests/comparators/test_cbfs.py::test_content PASSED [ 8%] tests/comparators/test_cbfs.py::test_compare_non_existing PASSED [ 8%] tests/comparators/test_containers.py::test_equal PASSED [ 8%] tests/comparators/test_containers.py::test_different PASSED [ 8%] tests/comparators/test_cpio.py::test_identification PASSED [ 8%] tests/comparators/test_cpio.py::test_no_differences PASSED [ 8%] tests/comparators/test_cpio.py::test_listing PASSED [ 9%] tests/comparators/test_cpio.py::test_symlink PASSED [ 9%] tests/comparators/test_cpio.py::test_compressed_files PASSED [ 9%] tests/comparators/test_cpio.py::test_compare_non_existing PASSED [ 9%] tests/comparators/test_deb.py::test_identification PASSED [ 9%] tests/comparators/test_deb.py::test_no_differences PASSED [ 9%] tests/comparators/test_deb.py::test_metadata PASSED [ 9%] tests/comparators/test_deb.py::test_compressed_files PASSED [ 10%] tests/comparators/test_deb.py::test_identification_of_md5sums_outside_deb PASSED [ 10%] tests/comparators/test_deb.py::test_identification_of_md5sums_in_deb PASSED [ 10%] tests/comparators/test_deb.py::test_md5sums PASSED [ 10%] tests/comparators/test_deb.py::test_identical_files_in_md5sums PASSED [ 10%] tests/comparators/test_deb.py::test_identification_of_data_tar PASSED [ 10%] tests/comparators/test_deb.py::test_skip_comparison_of_known_identical_files PASSED [ 10%] tests/comparators/test_deb.py::test_compare_non_existing PASSED [ 10%] tests/comparators/test_deb.py::test_compare_different_compression PASSED [ 11%] tests/comparators/test_deb.py::test_uncompressed_data_tar PASSED [ 11%] tests/comparators/test_deb.py::test_uncompressed_control_tar PASSED [ 11%] tests/comparators/test_deb.py::test_compare_different_compression_multiple_files PASSED [ 11%] tests/comparators/test_debian.py::test_dot_changes_identification PASSED [ 11%] tests/comparators/test_debian.py::test_dot_changes_invalid PASSED [ 11%] tests/comparators/test_debian.py::test_dot_changes_no_differences PASSED [ 11%] tests/comparators/test_debian.py::test_dot_changes_no_differences_exclude_buildinfo PASSED [ 12%] tests/comparators/test_debian.py::test_dot_changes_identical_contents_and_different_files PASSED [ 12%] tests/comparators/test_debian.py::test_dot_changes_different_contents_and_identical_files PASSED [ 12%] tests/comparators/test_debian.py::test_dot_dsc_identification PASSED [ 12%] tests/comparators/test_debian.py::test_dot_dsc_no_associated_tar_gz PASSED [ 12%] tests/comparators/test_debian.py::test_dot_dsc_no_differences PASSED [ 12%] tests/comparators/test_debian.py::test_dot_dsc_internal_diff PASSED [ 12%] tests/comparators/test_debian.py::test_dot_dsc_compare_non_existing PASSED [ 13%] tests/comparators/test_debian.py::test_dot_buildinfo_identification PASSED [ 13%] tests/comparators/test_debian.py::test_dot_buildinfo_no_deb PASSED [ 13%] tests/comparators/test_debian.py::test_dot_buildinfo_no_differences PASSED [ 13%] tests/comparators/test_debian.py::test_dot_buildinfo_internal_diff PASSED [ 13%] tests/comparators/test_debian.py::test_dot_buildinfo_compare_non_existing PASSED [ 13%] tests/comparators/test_debian.py::test_fallback_comparisons PASSED [ 13%] tests/comparators/test_debian.py::test_unicode_identification PASSED [ 14%] tests/comparators/test_device.py::test_identification PASSED [ 14%] tests/comparators/test_device.py::test_diff PASSED [ 14%] tests/comparators/test_device.py::test_diff_reverse PASSED [ 14%] tests/comparators/test_dex.py::test_identification PASSED [ 14%] tests/comparators/test_dex.py::test_no_differences PASSED [ 14%] tests/comparators/test_dex.py::test_differences SKIPPED (requires javap min 9.0.4 >= 14.0; 1.8.0_362 detected) [ 14%] tests/comparators/test_dex.py::test_javap_14_differences SKIPPED [ 15%] tests/comparators/test_dex.py::test_compare_non_existing XPASS [ 15%] tests/comparators/test_directory.py::test_no_differences PASSED [ 15%] tests/comparators/test_directory.py::test_no_differences_with_extra_slash PASSED [ 15%] tests/comparators/test_directory.py::test_content PASSED [ 15%] tests/comparators/test_directory.py::test_stat PASSED [ 15%] tests/comparators/test_directory.py::test_compare_to_file PASSED [ 15%] tests/comparators/test_directory.py::test_compare_to_device PASSED [ 15%] tests/comparators/test_directory.py::test_compare_to_symlink PASSED [ 16%] tests/comparators/test_directory.py::test_compare_to_dangling_symlink PASSED [ 16%] tests/comparators/test_directory.py::test_compare_both_ways PASSED [ 16%] tests/comparators/test_docx.py::test_identification PASSED [ 16%] tests/comparators/test_docx.py::test_no_differences PASSED [ 16%] tests/comparators/test_docx.py::test_diff SKIPPED (requires docx2txt) [ 16%] tests/comparators/test_docx.py::test_compare_non_existing SKIPPED [ 16%] tests/comparators/test_dtb.py::test_identification PASSED [ 17%] tests/comparators/test_dtb.py::test_no_differences PASSED [ 17%] tests/comparators/test_dtb.py::test_diff PASSED [ 17%] tests/comparators/test_dtb.py::test_compare_non_existing PASSED [ 17%] tests/comparators/test_elf.py::test_obj_identification PASSED [ 17%] tests/comparators/test_elf.py::test_obj_no_differences PASSED [ 17%] tests/comparators/test_elf.py::test_obj_compare_non_existing PASSED [ 17%] tests/comparators/test_elf.py::test_diff PASSED [ 18%] tests/comparators/test_elf.py::test_lib_identification PASSED [ 18%] tests/comparators/test_elf.py::test_lib_no_differences PASSED [ 18%] tests/comparators/test_elf.py::test_lib_differences PASSED [ 18%] tests/comparators/test_elf.py::test_lib_compare_non_existing PASSED [ 18%] tests/comparators/test_elf.py::test_libmix_differences PASSED [ 18%] tests/comparators/test_elf.py::test_differences_with_dbgsym PASSED [ 18%] tests/comparators/test_elf.py::test_original_gnu_debuglink PASSED [ 19%] tests/comparators/test_elf.py::test_ignore_readelf_errors1_identify PASSED [ 19%] tests/comparators/test_elf.py::test_ignore_readelf_errors2_identify PASSED [ 19%] tests/comparators/test_elf.py::test_ignore_readelf_errors PASSED [ 19%] tests/comparators/test_elf_decompiler.py::test_obj_compare_non_existing SKIPPED [ 19%] tests/comparators/test_elf_decompiler.py::test_ghidra_diff SKIPPED [ 19%] tests/comparators/test_elf_decompiler.py::test_radare2_diff SKIPPED [ 19%] tests/comparators/test_epub.py::test_identification PASSED [ 20%] tests/comparators/test_epub.py::test_no_differences PASSED [ 20%] tests/comparators/test_epub.py::test_differences SKIPPED (requires zipdetails) [ 20%] tests/comparators/test_epub.py::test_compare_non_existing PASSED [ 20%] tests/comparators/test_ffprobe.py::test_identification PASSED [ 20%] tests/comparators/test_ffprobe.py::test_no_differences PASSED [ 20%] tests/comparators/test_ffprobe.py::test_diff PASSED [ 20%] tests/comparators/test_ffprobe.py::test_compare_non_existing PASSED [ 20%] tests/comparators/test_fit.py::test_identification PASSED [ 21%] tests/comparators/test_fit.py::test_no_differences PASSED [ 21%] tests/comparators/test_fit.py::test_file_differences PASSED [ 21%] tests/comparators/test_fit.py::test_nested_listing PASSED [ 21%] tests/comparators/test_fit.py::test_nested_symlink PASSED [ 21%] tests/comparators/test_fit.py::test_nested_compressed_files PASSED [ 21%] tests/comparators/test_fit.py::test_compare_non_existing PASSED [ 21%] tests/comparators/test_fontconfig.py::test_identification PASSED [ 22%] tests/comparators/test_fontconfig.py::test_no_differences PASSED [ 22%] tests/comparators/test_fontconfig.py::test_diff PASSED [ 22%] tests/comparators/test_fonts.py::test_identification PASSED [ 22%] tests/comparators/test_fonts.py::test_no_differences PASSED [ 22%] tests/comparators/test_fonts.py::test_diff PASSED [ 22%] tests/comparators/test_fonts.py::test_compare_non_existing PASSED [ 22%] tests/comparators/test_fsimage.py::test_identification PASSED [ 23%] tests/comparators/test_fsimage.py::test_identification_fat12 PASSED [ 23%] tests/comparators/test_fsimage.py::test_identification_fat16 PASSED [ 23%] tests/comparators/test_fsimage.py::test_identification_fat32 PASSED [ 23%] tests/comparators/test_fsimage.py::test_no_differences SKIPPED (guestfs not working on the system: RuntimeError('cannot find any suitable libguestfs supermin, fixed or old-style appliance on LIBGUESTFS_PATH (search path: /nix/store/q4vxkp3fqajg23cqfwmd9gh13fvily9i-libguestfs- 1.50.1/lib/guestfs)')) [ 23%] tests/comparators/test_fsimage.py::test_differences SKIPPED (guestfs not working on the system: RuntimeError('cannot find any suitable libguestfs supermin, fixed or old-style appliance on LIBGUESTFS_PATH (search path: /nix/store/q4vxkp3fqajg23cqfwmd9gh13fvily9i-libguestfs- 1.50.1/lib/guestfs)')) [ 23%] tests/comparators/test_fsimage.py::test_compare_non_existing SKIPPEDitable libguestfs supermin, fixed or old-style appliance on LIBGUESTFS_PATH (search path: /nix/store/q4vxkp3fqajg23cqfwmd9gh13fvily9 i-libguestfs-1.50.1/lib/guestfs)')) [ 23%] tests/comparators/test_fsimage.py::test_differences_fat SKIPPED (guestfs not working on the system: RuntimeError('cannot find any suitable libguestfs supermin, fixed or old-style appliance on LIBGUESTFS_PATH (search path: /nix/store/q4vxkp3fqajg23cqfwmd9gh13fvily9i-libguestfs- 1.50.1/lib/guestfs)')) [ 24%] tests/comparators/test_gettext.py::test_identification PASSED [ 24%] tests/comparators/test_gettext.py::test_no_differences PASSED [ 24%] tests/comparators/test_gettext.py::test_diff PASSED [ 24%] tests/comparators/test_gettext.py::test_charsets PASSED [ 24%] tests/comparators/test_gettext.py::test_compare_non_existing PASSED [ 24%] tests/comparators/test_gif.py::test_identification PASSED [ 24%] tests/comparators/test_gif.py::test_no_differences PASSED [ 25%] tests/comparators/test_gif.py::test_diff PASSED [ 25%] tests/comparators/test_gif.py::test_compare_non_existing PASSED [ 25%] tests/comparators/test_gif.py::test_has_visuals PASSED [ 25%] tests/comparators/test_gif.py::test_no_visuals_different_size PASSED [ 25%] tests/comparators/test_git.py::test_identification PASSED [ 25%] tests/comparators/test_git.py::test_no_differences PASSED [ 25%] tests/comparators/test_git.py::test_diff PASSED [ 25%] tests/comparators/test_gnumeric.py::test_identification PASSED [ 26%] tests/comparators/test_gnumeric.py::test_no_differences PASSED [ 26%] tests/comparators/test_gnumeric.py::test_diff PASSED [ 26%] tests/comparators/test_gnumeric.py::test_compare_non_existing PASSED [ 26%] tests/comparators/test_gzip.py::test_identification PASSED [ 26%] tests/comparators/test_gzip.py::test_fallback_recognizes PASSED [ 26%] tests/comparators/test_gzip.py::test_no_differences PASSED [ 26%] tests/comparators/test_gzip.py::test_metadata PASSED [ 27%] tests/comparators/test_gzip.py::test_content_source PASSED [ 27%] tests/comparators/test_gzip.py::test_content_source_without_extension PASSED [ 27%] tests/comparators/test_gzip.py::test_content_diff PASSED [ 27%] tests/comparators/test_gzip.py::test_compare_non_existing PASSED [ 27%] tests/comparators/test_haskell.py::test_identification SKIPPED (mismatch between system ghc and fixture) [ 27%] tests/comparators/test_haskell.py::test_no_differences PASSED [ 27%] tests/comparators/test_haskell.py::test_diff SKIPPED (mismatch between system ghc and fixture) [ 28%] tests/comparators/test_hdf.py::test_identification PASSED [ 28%] tests/comparators/test_hdf.py::test_no_differences PASSED [ 28%] tests/comparators/test_hdf.py::test_diff PASSED [ 28%] tests/comparators/test_hdf.py::test_compare_non_existing PASSED [ 28%] tests/comparators/test_html.py::test_identification PASSED [ 28%] tests/comparators/test_html.py::test_no_differences PASSED [ 28%] tests/comparators/test_html.py::test_diff PASSED [ 29%] tests/comparators/test_icc.py::test_identification PASSED [ 29%] tests/comparators/test_icc.py::test_no_differences PASSED [ 29%] tests/comparators/test_icc.py::test_diff PASSED [ 29%] tests/comparators/test_icc.py::test_compare_non_existing PASSED [ 29%] tests/comparators/test_ico_image.py::test_identification PASSED [ 29%] tests/comparators/test_ico_image.py::test_no_differences PASSED [ 29%] tests/comparators/test_ico_image.py::test_diff PASSED [ 30%] tests/comparators/test_ico_image.py::test_has_visuals PASSED [ 30%] tests/comparators/test_ipk.py::test_identification PASSED [ 30%] tests/comparators/test_ipk.py::test_no_differences PASSED [ 30%] tests/comparators/test_ipk.py::test_metadata PASSED [ 30%] tests/comparators/test_ipk.py::test_compressed_files PASSED [ 30%] tests/comparators/test_ipk.py::test_compare_non_existing PASSED [ 30%] tests/comparators/test_iso9660.py::test_identification PASSED [ 30%] tests/comparators/test_iso9660.py::test_no_differences PASSED [ 31%] tests/comparators/test_iso9660.py::test_iso9660_content PASSED [ 31%] tests/comparators/test_iso9660.py::test_iso9660_rockridge PASSED [ 31%] tests/comparators/test_iso9660.py::test_symlink PASSED [ 31%] tests/comparators/test_iso9660.py::test_compressed_files PASSED [ 31%] tests/comparators/test_iso9660.py::test_compare_non_existing PASSED [ 31%] tests/comparators/test_java.py::test_identification PASSED [ 31%] tests/comparators/test_java.py::test_no_differences PASSED [ 32%] tests/comparators/test_java.py::test_diff_procyon PASSED [ 32%] tests/comparators/test_java.py::test_diff_javap SKIPPED (requires javap min 9.0.4 >= 14.0; 1.8.0_362 detected) [ 32%] tests/comparators/test_java.py::test_diff_javap_14 SKIPPED (requires javap >= 14.0; 1.8.0_362 detected) [ 32%] tests/comparators/test_java.py::test_compare_non_existing_procyon PASSED [ 32%] tests/comparators/test_java.py::test_compare_non_existing_javap PASSED [ 32%] tests/comparators/test_javascript.py::test_identification PASSED [ 32%] tests/comparators/test_javascript.py::test_no_differences PASSED [ 33%] tests/comparators/test_javascript.py::test_diff PASSED [ 33%] tests/comparators/test_javascript.py::test_compare_non_existing PASSED [ 33%] tests/comparators/test_jpeg_image.py::test_identification PASSED [ 33%] tests/comparators/test_jpeg_image.py::test_no_differences PASSED [ 33%] tests/comparators/test_jpeg_image.py::test_diff PASSED [ 33%] tests/comparators/test_jpeg_image.py::test_compare_non_existing PASSED [ 33%] tests/comparators/test_jpeg_image.py::test_has_visuals FAILED [ 34%] tests/comparators/test_json.py::test_identification PASSED [ 34%] tests/comparators/test_json.py::test_invalid PASSED [ 34%] tests/comparators/test_json.py::test_no_differences PASSED [ 34%] tests/comparators/test_json.py::test_diff PASSED [ 34%] tests/comparators/test_json.py::test_compare_non_existing PASSED [ 34%] tests/comparators/test_json.py::test_ordering_differences PASSED [ 34%] tests/comparators/test_kbx.py::test_identification PASSED [ 35%] tests/comparators/test_kbx.py::test_no_differences PASSED [ 35%] tests/comparators/test_kbx.py::test_diff PASSED [ 35%] tests/comparators/test_kbx.py::test_compare_non_existing PASSED [ 35%] tests/comparators/test_lz4.py::test_identification PASSED [ 35%] tests/comparators/test_lz4.py::test_no_differences PASSED [ 35%] tests/comparators/test_lz4.py::test_content_source PASSED [ 35%] tests/comparators/test_lz4.py::test_content_source_without_extension PASSED [ 35%] tests/comparators/test_lz4.py::test_content_diff PASSED [ 36%] tests/comparators/test_lz4.py::test_compare_non_existing PASSED [ 36%] tests/comparators/test_lzip.py::test_identification PASSED [ 36%] tests/comparators/test_lzip.py::test_no_differences PASSED [ 36%] tests/comparators/test_lzip.py::test_content_source PASSED [ 36%] tests/comparators/test_lzip.py::test_content_source_without_extension PASSED [ 36%] tests/comparators/test_lzip.py::test_content_diff PASSED [ 36%] tests/comparators/test_lzip.py::test_compare_non_existing PASSED [ 37%] tests/comparators/test_macho.py::test_obj_identification PASSED [ 37%] tests/comparators/test_macho.py::test_obj_no_differences PASSED [ 37%] tests/comparators/test_macho.py::test_otool_obj_compare_non_existing SKIPPED [ 37%] tests/comparators/test_macho.py::test_otool_diff SKIPPED (requires otool and lipo) [ 37%] tests/comparators/test_macho.py::test_llvm_obj_compare_non_existing PASSED [ 37%] tests/comparators/test_macho.py::test_llvm_diff PASSED [ 37%] tests/comparators/test_macho_decompiler.py::test_obj_compare_non_existing SKIPPED [ 38%] tests/comparators/test_macho_decompiler.py::test_ghidra_diff SKIPPED [ 38%] tests/comparators/test_macho_decompiler.py::test_radare2_diff SKIPPED [ 38%] tests/comparators/test_mono.py::test_identification PASSED [ 38%] tests/comparators/test_mono.py::test_no_differences PASSED [ 38%] tests/comparators/test_mono.py::test_diff PASSED [ 38%] tests/comparators/test_mono.py::test_compare_non_existing PASSED [ 38%] tests/comparators/test_ocaml.py::test_identification PASSED [ 39%] tests/comparators/test_ocaml.py::test_no_differences PASSED [ 39%] tests/comparators/test_ocaml.py::test_diff PASSED [ 39%] tests/comparators/test_ocaml.py::test_compare_non_existing PASSED [ 39%] tests/comparators/test_odt.py::test_identification PASSED [ 39%] tests/comparators/test_odt.py::test_no_differences PASSED [ 39%] tests/comparators/test_odt.py::test_diff PASSED [ 39%] tests/comparators/test_odt.py::test_compare_non_existing PASSED [ 40%] tests/comparators/test_ogg.py::test_identification PASSED [ 40%] tests/comparators/test_ogg.py::test_no_differences PASSED [ 40%] tests/comparators/test_ogg.py::test_diff PASSED [ 40%] tests/comparators/test_ogg.py::test_compare_non_existing PASSED [ 40%] tests/comparators/test_openssh_pub_key.py::test_identification PASSED [ 40%] tests/comparators/test_openssh_pub_key.py::test_no_differences PASSED [ 40%] tests/comparators/test_openssh_pub_key.py::test_diff PASSED [ 40%] tests/comparators/test_openssh_pub_key.py::test_compare_non_existing PASSED [ 41%] tests/comparators/test_openssl.py::test_identification PASSED [ 41%] tests/comparators/test_openssl.py::test_no_differences PASSED [ 41%] tests/comparators/test_openssl.py::test_differences PASSED [ 41%] tests/comparators/test_pcap.py::test_identification PASSED [ 41%] tests/comparators/test_pcap.py::test_no_differences PASSED [ 41%] tests/comparators/test_pcap.py::test_diff PASSED [ 41%] tests/comparators/test_pcap.py::test_compare_non_existing PASSED [ 42%] tests/comparators/test_pdf.py::test_identification PASSED [ 42%] tests/comparators/test_pdf.py::test_no_differences PASSED [ 42%] tests/comparators/test_pdf.py::test_differences_found_with_weird_encoding PASSED [ 42%] tests/comparators/test_pdf.py::test_text_diff PASSED [ 42%] tests/comparators/test_pdf.py::test_compare_non_existing PASSED [ 42%] tests/comparators/test_pdf.py::test_metadata SKIPPED (pypdf not installed or not version 3.x+) [ 42%] tests/comparators/test_pdf.py::test_annotations SKIPPED (pypdf not installed or not version 3.x+) [ 43%] tests/comparators/test_pgp.py::test_identification PASSED [ 43%] tests/comparators/test_pgp.py::test_no_differences PASSED [ 43%] tests/comparators/test_pgp.py::test_diff PASSED [ 43%] tests/comparators/test_pgp.py::test_compare_non_existing PASSED [ 43%] tests/comparators/test_pgp.py::test_pgp_signature_identification PASSED [ 43%] tests/comparators/test_pgp.py::test_pgp_signature PASSED [ 43%] tests/comparators/test_pgp.py::test_signed_identification PASSED [ 44%] tests/comparators/test_pgp.py::test_signed_diff PASSED [ 44%] tests/comparators/test_png.py::test_identification PASSED [ 44%] tests/comparators/test_png.py::test_no_differences PASSED [ 44%] tests/comparators/test_png.py::test_diff PASSED [ 44%] tests/comparators/test_png.py::test_compare_non_existing PASSED [ 44%] tests/comparators/test_png.py::test_has_visuals PASSED [ 44%] tests/comparators/test_ppu.py::test_identification PASSED [ 45%] tests/comparators/test_ppu.py::test_no_differences PASSED [ 45%] tests/comparators/test_ppu.py::test_diff PASSED [ 45%] tests/comparators/test_ppu.py::test_compare_non_existing PASSED [ 45%] tests/comparators/test_ps.py::test_identification PASSED [ 45%] tests/comparators/test_ps.py::test_no_differences PASSED [ 45%] tests/comparators/test_ps.py::test_internal_diff PASSED [ 45%] tests/comparators/test_ps.py::test_text_diff PASSED [ 45%] tests/comparators/test_ps.py::test_compare_non_existing PASSED [ 46%] tests/comparators/test_python.py::test_identification PASSED [ 46%] tests/comparators/test_python.py::test_no_differences SKIPPED (Unstable on 3.10+) [ 46%] tests/comparators/test_python.py::test_diff SKIPPED (Only Python 3.9 and 3.10 can de-marshal test1.pyc-renamed) [ 46%] tests/comparators/test_python.py::test_compare_non_existing PASSED [ 46%] tests/comparators/test_rdata.py::test_identification PASSED [ 46%] tests/comparators/test_rdata.py::test_no_differences PASSED [ 46%] tests/comparators/test_rdata.py::test_num_items_rdb PASSED [ 47%] tests/comparators/test_rdata.py::test_item_rdb PASSED [ 47%] tests/comparators/test_rdata.py::test_num_items_rdx PASSED [ 47%] tests/comparators/test_rdata.py::test_item_rdx PASSED [ 47%] tests/comparators/test_rlib.py::test_identification PASSED [ 47%] tests/comparators/test_rlib.py::test_no_differences PASSED [ 47%] tests/comparators/test_rlib.py::test_num_items PASSED [ 47%] tests/comparators/test_rlib.py::test_item0_armap PASSED [ 48%] tests/comparators/test_rlib.py::test_item1_elf PASSED [ 48%] tests/comparators/test_rlib.py::test_item2_rust_metadata_bin PASSED [ 48%] tests/comparators/test_rlib.py::test_compare_non_existing PASSED [ 48%] tests/comparators/test_rpm.py::test_identification PASSED [ 48%] tests/comparators/test_rpm.py::test_no_differences PASSED [ 48%] tests/comparators/test_rpm.py::test_header PASSED [ 48%] tests/comparators/test_rpm.py::test_listing PASSED [ 49%] tests/comparators/test_rpm.py::test_content PASSED [ 49%] tests/comparators/test_rpm.py::test_compare_non_existing PASSED [ 49%] tests/comparators/test_rpm.py::test_fallback_comparison PASSED [ 49%] tests/comparators/test_sevenz.py::test_identification PASSED [ 49%] tests/comparators/test_sevenz.py::test_no_differences PASSED [ 49%] tests/comparators/test_sevenz.py::test_content_source PASSED [ 49%] tests/comparators/test_sevenz.py::test_content_source_without_extension PASSED [ 50%] tests/comparators/test_sevenz.py::test_metadata_diff PASSED [ 50%] tests/comparators/test_sevenz.py::test_compare_non_existing PASSED [ 50%] tests/comparators/test_sockets.py::test_sockets PASSED [ 50%] tests/comparators/test_sphinx.py::test_identification PASSED [ 50%] tests/comparators/test_sphinx.py::test_no_differences PASSED [ 50%] tests/comparators/test_sphinx.py::test_diff PASSED [ 50%] tests/comparators/test_sqlite.py::test_identification PASSED [ 50%] tests/comparators/test_sqlite.py::test_no_differences PASSED [ 51%] tests/comparators/test_sqlite.py::test_diff PASSED [ 51%] tests/comparators/test_sqlite.py::test_compare_non_existing PASSED [ 51%] tests/comparators/test_squashfs.py::test_identification PASSED [ 51%] tests/comparators/test_squashfs.py::test_no_differences PASSED [ 51%] tests/comparators/test_squashfs.py::test_no_warnings PASSED [ 51%] tests/comparators/test_squashfs.py::test_superblock PASSED [ 51%] tests/comparators/test_squashfs.py::test_symlink PASSED [ 52%] tests/comparators/test_squashfs.py::test_compressed_files PASSED [ 52%] tests/comparators/test_squashfs.py::test_compare_non_existing PASSED [ 52%] tests/comparators/test_squashfs.py::test_symlink_root PASSED [ 52%] tests/comparators/test_symlink.py::test_destination PASSED [ 52%] tests/comparators/test_tar.py::test_identification PASSED [ 52%] tests/comparators/test_tar.py::test_no_differences PASSED [ 52%] tests/comparators/test_tar.py::test_listing PASSED [ 53%] tests/comparators/test_tar.py::test_symlinks PASSED [ 53%] tests/comparators/test_tar.py::test_text_file PASSED [ 53%] tests/comparators/test_tar.py::test_compare_non_existing PASSED [ 53%] tests/comparators/test_tar.py::test_no_permissions_dir_in_tarball PASSED [ 53%] tests/comparators/test_text.py::test_no_differences PASSED [ 53%] tests/comparators/test_text.py::test_difference_in_ascii PASSED [ 53%] tests/comparators/test_text.py::test_difference_in_unicode PASSED [ 54%] tests/comparators/test_text.py::test_difference_between_iso88591_and_unicode PASSED [ 54%] tests/comparators/test_text.py::test_difference_between_iso88591_and_unicode_only PASSED [ 54%] tests/comparators/test_text.py::test_compare_non_existing PASSED [ 54%] tests/comparators/test_text.py::test_ordering_differences PASSED [ 54%] tests/comparators/test_text.py::test_text_fallback PASSED [ 54%] tests/comparators/test_uimage.py::test_identification PASSED [ 54%] tests/comparators/test_uimage.py::test_no_differences PASSED [ 55%] tests/comparators/test_uimage.py::test_file_differences PASSED [ 55%] tests/comparators/test_uimage.py::test_nested_listing PASSED [ 55%] tests/comparators/test_uimage.py::test_nested_symlink PASSED [ 55%] tests/comparators/test_uimage.py::test_nested_compressed_files PASSED [ 55%] tests/comparators/test_uimage.py::test_compare_non_existing PASSED [ 55%] tests/comparators/test_utils.py::test_tools_missing PASSED [ 55%] tests/comparators/test_utils.py::test_skip_unless_tools_exist_empty SKIPPED [ 55%] tests/comparators/test_utils.py::test_skip_unless_tools_exist_missing SKIPPED [ 56%] tests/comparators/test_utils.py::test_fuzzy_matching PASSED [ 56%] tests/comparators/test_utils.py::test_fuzzy_matching_only_once PASSED [ 56%] tests/comparators/test_utils.py::test_no_fuzzy_matching PASSED [ 56%] tests/comparators/test_utils.py::test_no_fuzzy_matching_new_file PASSED [ 56%] tests/comparators/test_utils.py::test_trim_stderr_in_command PASSED [ 56%] tests/comparators/test_wasm.py::test_identification PASSED [ 56%] tests/comparators/test_wasm.py::test_no_differences PASSED [ 57%] tests/comparators/test_wasm.py::test_diff PASSED [ 57%] tests/comparators/test_wasm.py::test_compare_non_existing PASSED [ 57%] tests/comparators/test_xml.py::test_identification PASSED [ 57%] tests/comparators/test_xml.py::test_invalid PASSED [ 57%] tests/comparators/test_xml.py::test_no_differences PASSED [ 57%] tests/comparators/test_xml.py::test_diff PASSED [ 57%] tests/comparators/test_xml.py::test_ordering_differences PASSED [ 58%] tests/comparators/test_xsb.py::test_identification PASSED [ 58%] tests/comparators/test_xsb.py::test_no_differences PASSED [ 58%] tests/comparators/test_xsb.py::test_diff PASSED [ 58%] tests/comparators/test_xsb.py::test_compare_non_existing PASSED [ 58%] tests/comparators/test_xz.py::test_identification PASSED [ 58%] tests/comparators/test_xz.py::test_no_differences PASSED [ 58%] tests/comparators/test_xz.py::test_content_source PASSED [ 59%] tests/comparators/test_xz.py::test_content_source_without_extension PASSED [ 59%] tests/comparators/test_xz.py::test_content_diff PASSED [ 59%] tests/comparators/test_xz.py::test_compare_non_existing PASSED [ 59%] tests/comparators/test_xz.py::test_content_source_verbose PASSED [ 59%] tests/comparators/test_zip.py::test_identification PASSED [ 59%] tests/comparators/test_zip.py::test_no_differences PASSED [ 59%] tests/comparators/test_zip.py::test_metadata SKIPPED (requires zipdetails) [ 60%] tests/comparators/test_zip.py::test_compressed_files SKIPPED (requires zipdetails) [ 60%] tests/comparators/test_zip.py::test_extra_fields SKIPPED (requires zipdetails) [ 60%] tests/comparators/test_zip.py::test_compare_non_existing PASSED [ 60%] tests/comparators/test_zip.py::test_mozzip_identification PASSED [ 60%] tests/comparators/test_zip.py::test_mozzip_no_differences PASSED [ 60%] tests/comparators/test_zip.py::test_mozzip_metadata PASSED [ 60%] tests/comparators/test_zip.py::test_mozzip_compressed_files PASSED [ 60%] tests/comparators/test_zip.py::test_mozzip_compare_non_existing PASSED [ 61%] tests/comparators/test_zip.py::test_jmod_identification PASSED [ 61%] tests/comparators/test_zip.py::test_jmod_no_differences PASSED [ 61%] tests/comparators/test_zip.py::test_jmod_metadata SKIPPED (requires zipdetails) [ 61%] tests/comparators/test_zip.py::test_encrypted PASSED [ 61%] tests/comparators/test_zip.py::test_commented SKIPPED (requires zipdetails) [ 61%] tests/comparators/test_zst.py::test_identification PASSED [ 61%] tests/comparators/test_zst.py::test_no_differences PASSED [ 62%] tests/comparators/test_zst.py::test_content_source PASSED [ 62%] tests/test_diff_mask.py::test_none PASSED [ 62%] tests/test_diff_mask.py::test_all PASSED [ 62%] tests/test_diff_mask.py::test_specific PASSED [ 62%] tests/test_difference.py::test_too_much_input_for_diff PASSED [ 62%] tests/test_difference.py::test_too_long_diff_block_lines PASSED [ 62%] tests/test_difference.py::test_size_updates PASSED [ 63%] tests/test_difference.py::test_traverse_heapq PASSED [ 63%] tests/test_difference.py::test_non_str_arguments_to_source1_source2 PASSED [ 63%] tests/test_difference.py::test_adjust_diff_context PASSED [ 63%] tests/test_excludes.py::test_none PASSED [ 63%] tests/test_excludes.py::test_all PASSED [ 63%] tests/test_excludes.py::test_specific PASSED [ 63%] tests/test_excludes.py::test_specific_case PASSED [ 64%] tests/test_excludes.py::test_multiple PASSED [ 64%] tests/test_excludes.py::test_nomatch PASSED [ 64%] tests/test_excludes.py::test_wildcard PASSED [ 64%] tests/test_main.py::test_non_existing_files PASSED [ 64%] tests/test_main.py::test_non_existing_left_with_new_file PASSED [ 64%] tests/test_main.py::test_non_existing_right_with_new_file PASSED [ 64%] tests/test_main.py::test_non_existing_files_with_new_file PASSED [ 65%] tests/test_main.py::test_remove_temp_files_on_sigterm PASSED [ 65%] tests/test_main.py::test_ctrl_c_handling PASSED [ 65%] tests/test_main.py::test_no_differences PASSED [ 65%] tests/test_main.py::test_no_differences_directories PASSED [ 65%] tests/test_main.py::test_list_tools PASSED [ 65%] tests/test_main.py::test_list_missing_tools PASSED [ 65%] tests/test_main.py::test_profiling PASSED [ 65%] tests/test_main.py::test_non_unicode_filename PASSED [ 66%] tests/test_main.py::test_help PASSED [ 66%] tests/test_main.py::test_usage PASSED [ 66%] tests/test_presenters.py::test_text_option_is_default PASSED [ 66%] tests/test_presenters.py::test_text_proper_indentation PASSED [ 66%] tests/test_presenters.py::test_text_option_color PASSED [ 66%] tests/test_presenters.py::test_text_option_with_file PASSED [ 66%] tests/test_presenters.py::test_text_option_with_stdout PASSED [ 67%] tests/test_presenters.py::test_markdown PASSED [ 67%] tests/test_presenters.py::test_restructuredtext PASSED [ 67%] tests/test_presenters.py::test_json PASSED [ 67%] tests/test_presenters.py::test_no_report_option PASSED [ 67%] tests/test_presenters.py::test_html_option_with_file PASSED [ 67%] tests/test_presenters.py::test_html_visuals PASSED [ 67%] tests/test_presenters.py::test_htmldir_option PASSED [ 68%] tests/test_presenters.py::test_html_option_with_stdout PASSED [ 68%] tests/test_presenters.py::test_html_regression_875281 PASSED [ 68%] tests/test_presenters.py::test_html_presentation_issue_363 PASSED [ 68%] tests/test_presenters.py::test_html_presentation_issue_372 PASSED [ 68%] tests/test_presenters.py::test_limited_print PASSED [ 68%] tests/test_presenters.py::test_partial_string PASSED [ 68%] tests/test_presenters.py::test_partial_string_cont PASSED [ 69%] tests/test_presenters.py::test_partial_string_numl PASSED [ 69%] tests/test_presenters.py::test_partial_string_escape PASSED [ 69%] tests/test_progress.py::test_progress PASSED [ 69%] tests/test_progress.py::test_status_fd PASSED [ 69%] tests/test_quines.py::test_identification PASSED [ 69%] tests/test_quines.py::test_no_differences PASSED [ 69%] tests/test_quines.py::test_difference PASSED [ 70%] tests/test_quines.py::test_identification_deb PASSED [ 70%] tests/test_quines.py::test_differences_deb PASSED [ 70%] tests/test_readers.py::test_json PASSED [ 70%] tests/test_source.py::test_code_is_black_clean SKIPPED (requires black) [ 70%] tests/test_tools.py::test_all_tools_are_listed PASSED [ 70%] tests/test_tools.py::test_get_tools PASSED [ 70%] tests/test_tools.py::test_required_tool_not_found PASSED [ 70%] tests/test_versions.py::test_version_comparisons[1.0-1.0-0] PASSED [ 71%] tests/test_versions.py::test_version_comparisons[1.0-2.0--1] PASSED [ 71%] tests/test_versions.py::test_version_comparisons[2.0-1.0-1] PASSED [ 71%] tests/test_versions.py::test_version_comparisons[2.0.1-2.0.1-0] PASSED [ 71%] tests/test_versions.py::test_version_comparisons[2.0-2.0.1--1] PASSED [ 71%] tests/test_versions.py::test_version_comparisons[2.0.1-2.0-1] PASSED [ 71%] tests/test_versions.py::test_version_comparisons[2.0.1a-2.0.1a-0] PASSED [ 71%] tests/test_versions.py::test_version_comparisons[2.0.1a-2.0.1-1] PASSED [ 72%] tests/test_versions.py::test_version_comparisons[2.0.1-2.0.1a--1] PASSED [ 72%] tests/test_versions.py::test_version_comparisons[5.5p1-5.5p1-0] PASSED [ 72%] tests/test_versions.py::test_version_comparisons[5.5p1-5.5p2--1] PASSED [ 72%] tests/test_versions.py::test_version_comparisons[5.5p2-5.5p1-1] PASSED [ 72%] tests/test_versions.py::test_version_comparisons[5.5p10-5.5p10-0] PASSED [ 72%] tests/test_versions.py::test_version_comparisons[5.5p1-5.5p10--1] PASSED [ 72%] tests/test_versions.py::test_version_comparisons[5.5p10-5.5p1-1] PASSED [ 73%] tests/test_versions.py::test_version_comparisons[10xyz-10.1xyz--1] PASSED [ 73%] tests/test_versions.py::test_version_comparisons[10.1xyz-10xyz-1] PASSED [ 73%] tests/test_versions.py::test_version_comparisons[xyz10-xyz10-0] PASSED [ 73%] tests/test_versions.py::test_version_comparisons[xyz10-xyz10.1--1] PASSED [ 73%] tests/test_versions.py::test_version_comparisons[xyz10.1-xyz10-1] PASSED [ 73%] tests/test_versions.py::test_version_comparisons[xyz.4-xyz.4-0] PASSED [ 73%] tests/test_versions.py::test_version_comparisons[xyz.4-8--1] PASSED [ 74%] tests/test_versions.py::test_version_comparisons[8-xyz.4-1] PASSED [ 74%] tests/test_versions.py::test_version_comparisons[xyz.4-2--1] PASSED [ 74%] tests/test_versions.py::test_version_comparisons[2-xyz.4-1] PASSED [ 74%] tests/test_versions.py::test_version_comparisons[5.5p2-5.6p1--1] PASSED [ 74%] tests/test_versions.py::test_version_comparisons[5.6p1-5.5p2-1] PASSED [ 74%] tests/test_versions.py::test_version_comparisons[5.6p1-6.5p1--1] PASSED [ 74%] tests/test_versions.py::test_version_comparisons[6.5p1-5.6p1-1] PASSED [ 75%] tests/test_versions.py::test_version_comparisons[6.0.rc1-6.0-1] PASSED [ 75%] tests/test_versions.py::test_version_comparisons[6.0-6.0.rc1--1] PASSED [ 75%] tests/test_versions.py::test_version_comparisons[10b2-10a1-1] PASSED [ 75%] tests/test_versions.py::test_version_comparisons[10a2-10b2--1] PASSED [ 75%] tests/test_versions.py::test_version_comparisons[1.0aa-1.0aa-0] PASSED [ 75%] tests/test_versions.py::test_version_comparisons[1.0a-1.0aa--1] PASSED [ 75%] tests/test_versions.py::test_version_comparisons[1.0aa-1.0a-1] PASSED [ 75%] tests/test_versions.py::test_version_comparisons[10.0001-10.0001-0] PASSED [ 76%] tests/test_versions.py::test_version_comparisons[10.0001-10.1-0] PASSED [ 76%] tests/test_versions.py::test_version_comparisons[10.1-10.0001-0] PASSED [ 76%] tests/test_versions.py::test_version_comparisons[10.0001-10.0039--1] PASSED [ 76%] tests/test_versions.py::test_version_comparisons[10.0039-10.0001-1] PASSED [ 76%] tests/test_versions.py::test_version_comparisons[4.999.9-5.0--1] PASSED [ 76%] tests/test_versions.py::test_version_comparisons[5.0-4.999.9-1] PASSED [ 76%] tests/test_versions.py::test_version_comparisons[20101121-20101121-0] PASSED [ 77%] tests/test_versions.py::test_version_comparisons[20101121-20101122--1] PASSED [ 77%] tests/test_versions.py::test_version_comparisons[20101122-20101121-1] PASSED [ 77%] tests/test_versions.py::test_version_comparisons[2_0-2_0-0] PASSED [ 77%] tests/test_versions.py::test_version_comparisons[2.0-2_0-0] PASSED [ 77%] tests/test_versions.py::test_version_comparisons[2_0-2.0-0] PASSED [ 77%] tests/test_versions.py::test_version_comparisons[2_0.-2_0-0] PASSED [ 77%] tests/test_versions.py::test_version_comparisons[2..0-2_0__-0] PASSED [ 78%] tests/test_versions.py::test_version_comparisons[2_0-__2.0-0] PASSED [ 78%] tests/test_versions.py::test_version_comparisons[2_1.-2_0-1] PASSED [ 78%] tests/test_versions.py::test_version_comparisons[2..1-2_0__-1] PASSED [ 78%] tests/test_versions.py::test_version_comparisons[2_1-__2.0-1] PASSED [ 78%] tests/test_versions.py::test_version_comparisons[2_1.-2_2--1] PASSED [ 78%] tests/test_versions.py::test_version_comparisons[2..1-2_2__--1] PASSED [ 78%] tests/test_versions.py::test_version_comparisons[2_1-__2.2--1] PASSED [ 79%] tests/test_versions.py::test_version_comparisons[a-a-0_0] PASSED [ 79%] tests/test_versions.py::test_version_comparisons[a+-a+-0] PASSED [ 79%] tests/test_versions.py::test_version_comparisons[a+-a_-0] PASSED [ 79%] tests/test_versions.py::test_version_comparisons[a_-a+-0] PASSED [ 79%] tests/test_versions.py::test_version_comparisons[+a-+a-0] PASSED [ 79%] tests/test_versions.py::test_version_comparisons[+a-_a-0] PASSED [ 79%] tests/test_versions.py::test_version_comparisons[_a-+a-0] PASSED [ 80%] tests/test_versions.py::test_version_comparisons[+_-+_-0] PASSED [ 80%] tests/test_versions.py::test_version_comparisons[_+-+_-0] PASSED [ 80%] tests/test_versions.py::test_version_comparisons[_+-_+-0] PASSED [ 80%] tests/test_versions.py::test_version_comparisons[+-_-0] PASSED [ 80%] tests/test_versions.py::test_version_comparisons[_-+-0] PASSED [ 80%] tests/test_versions.py::test_version_comparisons[1.0~rc1-1.0~rc1-0] PASSED [ 80%] tests/test_versions.py::test_version_comparisons[1.0~rc1-1.0--1] PASSED [ 80%] tests/test_versions.py::test_version_comparisons[1.0-1.0~rc1-1] PASSED [ 81%] tests/test_versions.py::test_version_comparisons[1.0~rc1-1.0~rc2--1] PASSED [ 81%] tests/test_versions.py::test_version_comparisons[1.0~rc2-1.0~rc1-1] PASSED [ 81%] tests/test_versions.py::test_version_comparisons[1.0~rc1~git123-1.0~rc1~git123-0] PASSED [ 81%] tests/test_versions.py::test_version_comparisons[1.0~rc1~git123-1.0~rc1--1] PASSED [ 81%] tests/test_versions.py::test_version_comparisons[1.0~rc1-1.0~rc1~git123-1] PASSED [ 81%] tests/test_versions.py::test_version_comparisons[a-a-0_1] PASSED [ 81%] tests/test_versions.py::test_version_comparisons[a~-a--1] PASSED [ 82%] tests/test_versions.py::test_version_comparisons[a~~-a--1] PASSED [ 82%] tests/test_versions.py::test_version_comparisons[a~~~-a--1] PASSED [ 82%] tests/test_versions.py::test_version_comparisons[a~~~^-a--1] PASSED [ 82%] tests/test_versions.py::test_version_comparisons[a^-a-1_0] PASSED [ 82%] tests/test_versions.py::test_version_comparisons[a^-a-1_1] PASSED [ 82%] tests/test_versions.py::test_version_comparisons[a^-a^-0] PASSED [ 82%] tests/test_versions.py::test_version_comparisons[a^-a^^--1] PASSED [ 83%] tests/test_versions.py::test_version_comparisons[a^b-a^^-1] PASSED [ 83%] tests/test_versions.py::test_version_comparisons[1.0^-1.0^-0] PASSED [ 83%] tests/test_versions.py::test_version_comparisons[1.0^-1.0-1] PASSED [ 83%] tests/test_versions.py::test_version_comparisons[1.0-1.0^--1] PASSED [ 83%] tests/test_versions.py::test_version_comparisons[1.0^git1-1.0^git1-0] PASSED [ 83%] tests/test_versions.py::test_version_comparisons[1.0^git1-1.0-1] PASSED [ 83%] tests/test_versions.py::test_version_comparisons[1.0-1.0^git1--1] PASSED [ 84%] tests/test_versions.py::test_version_comparisons[1.0^git1-1.0^git2--1] PASSED [ 84%] tests/test_versions.py::test_version_comparisons[1.0^git2-1.0^git1-1] PASSED [ 84%] tests/test_versions.py::test_version_comparisons[1.0^git1-1.01--1] PASSED [ 84%] tests/test_versions.py::test_version_comparisons[1.01-1.0^git1-1] PASSED [ 84%] tests/test_versions.py::test_version_comparisons[1.0^20160101-1.0^20160101-0] PASSED [ 84%] tests/test_versions.py::test_version_comparisons[1.0^20160101-1.0.1--1] PASSED [ 84%] tests/test_versions.py::test_version_comparisons[1.0.1-1.0^20160101-1] PASSED [ 85%] tests/test_versions.py::test_version_comparisons[1.0^20160101^git1-1.0^20160101^git1-0] PASSED [ 85%] tests/test_versions.py::test_version_comparisons[1.0^20160102-1.0^20160101^git1-1] PASSED [ 85%] tests/test_versions.py::test_version_comparisons[1.0^20160101^git1-1.0^20160102--1] PASSED [ 85%] tests/test_versions.py::test_version_comparisons[1.0~rc1^git1-1.0~rc1^git1-0] PASSED [ 85%] tests/test_versions.py::test_version_comparisons[1.0~rc1^git1-1.0~rc1-1] PASSED [ 85%] tests/test_versions.py::test_version_comparisons[1.0~rc1-1.0~rc1^git1--1] PASSED [ 85%] tests/test_versions.py::test_version_comparisons[1.0^git1~pre-1.0^git1~pre-0] PASSED [ 85%] tests/test_versions.py::test_version_comparisons[1.0^git1-1.0^git1~pre-1] PASSED [ 86%] tests/test_versions.py::test_version_comparisons[1.0^git1~pre-1.0^git1--1] PASSED [ 86%] tests/test_versions.py::test_version_comparisons[0-0-0] PASSED [ 86%] tests/test_versions.py::test_version_comparisons[0-00-0] PASSED [ 86%] tests/test_versions.py::test_version_comparisons[0-000-0] PASSED [ 86%] tests/test_versions.py::test_version_comparisons[00-000-0] PASSED [ 86%] tests/test_versions.py::test_version_comparisons[000-000-0] PASSED [ 86%] tests/test_versions.py::test_version_comparisons[00-0-0] PASSED [ 87%] tests/test_versions.py::test_version_comparisons[000-0-0] PASSED [ 87%] tests/test_versions.py::test_version_comparisons[0-0.0--1] PASSED [ 87%] tests/test_versions.py::test_version_comparisons[0.0-0-1] PASSED [ 87%] tests/test_versions.py::test_version_comparisons[0~-0--1] PASSED [ 87%] tests/test_versions.py::test_version_comparisons[0^-0-1] PASSED [ 87%] tests/test_versions.py::test_version_comparisons[0^-0^-0] PASSED [ 87%] tests/test_versions.py::test_version_comparisons[0^-0^~-1] PASSED [ 88%] tests/test_versions.py::test_version_lt[1.0-2.0] PASSED [ 88%] tests/test_versions.py::test_version_lt[2.0-2.0.1] PASSED [ 88%] tests/test_versions.py::test_version_lt[2.0.1-2.0.1a] PASSED [ 88%] tests/test_versions.py::test_version_lt[5.5p1-5.5p2] PASSED [ 88%] tests/test_versions.py::test_version_lt[5.5p1-5.5p10] PASSED [ 88%] tests/test_versions.py::test_version_lt[10xyz-10.1xyz] PASSED [ 88%] tests/test_versions.py::test_version_lt[xyz10-xyz10.1] PASSED [ 89%] tests/test_versions.py::test_version_lt[xyz.4-8] PASSED [ 89%] tests/test_versions.py::test_version_lt[xyz.4-2] PASSED [ 89%] tests/test_versions.py::test_version_lt[5.5p2-5.6p1] PASSED [ 89%] tests/test_versions.py::test_version_lt[5.6p1-6.5p1] PASSED [ 89%] tests/test_versions.py::test_version_lt[6.0-6.0.rc1] PASSED [ 89%] tests/test_versions.py::test_version_lt[10a2-10b2] PASSED [ 89%] tests/test_versions.py::test_version_lt[1.0a-1.0aa] PASSED [ 90%] tests/test_versions.py::test_version_lt[10.0001-10.0039] PASSED [ 90%] tests/test_versions.py::test_version_lt[4.999.9-5.0] PASSED [ 90%] tests/test_versions.py::test_version_lt[20101121-20101122] PASSED [ 90%] tests/test_versions.py::test_version_lt[2_1.-2_2] PASSED [ 90%] tests/test_versions.py::test_version_lt[2..1-2_2__] PASSED [ 90%] tests/test_versions.py::test_version_lt[2_1-__2.2] PASSED [ 90%] tests/test_versions.py::test_version_lt[1.0~rc1-1.0] PASSED [ 90%] tests/test_versions.py::test_version_lt[1.0~rc1-1.0~rc2] PASSED [ 91%] tests/test_versions.py::test_version_lt[1.0~rc1~git123-1.0~rc1] PASSED [ 91%] tests/test_versions.py::test_version_lt[a~-a] PASSED [ 91%] tests/test_versions.py::test_version_lt[a~~-a] PASSED [ 91%] tests/test_versions.py::test_version_lt[a~~~-a] PASSED [ 91%] tests/test_versions.py::test_version_lt[a~~~^-a] PASSED [ 91%] tests/test_versions.py::test_version_lt[a^-a^^] PASSED [ 91%] tests/test_versions.py::test_version_lt[1.0-1.0^] PASSED [ 92%] tests/test_versions.py::test_version_lt[1.0-1.0^git1] PASSED [ 92%] tests/test_versions.py::test_version_lt[1.0^git1-1.0^git2] PASSED [ 92%] tests/test_versions.py::test_version_lt[1.0^git1-1.01] PASSED [ 92%] tests/test_versions.py::test_version_lt[1.0^20160101-1.0.1] PASSED [ 92%] tests/test_versions.py::test_version_lt[1.0^20160101^git1-1.0^20160102] PASSED [ 92%] tests/test_versions.py::test_version_lt[1.0~rc1-1.0~rc1^git1] PASSED [ 92%] tests/test_versions.py::test_version_lt[1.0^git1~pre-1.0^git1] PASSED [ 93%] tests/test_versions.py::test_version_lt[0-0.0] PASSED [ 93%] tests/test_versions.py::test_version_lt[0~-0] PASSED [ 93%] tests/test_versions.py::test_version_gt[1.0-1.0] PASSED [ 93%] tests/test_versions.py::test_version_gt[2.0.1-2.0.1] PASSED [ 93%] tests/test_versions.py::test_version_gt[2.0.1a-2.0.1a] PASSED [ 93%] tests/test_versions.py::test_version_gt[5.5p1-5.5p1] PASSED [ 93%] tests/test_versions.py::test_version_gt[5.5p10-5.5p10] PASSED [ 94%] tests/test_versions.py::test_version_gt[xyz10-xyz10] PASSED [ 94%] tests/test_versions.py::test_version_gt[xyz.4-xyz.4] PASSED [ 94%] tests/test_versions.py::test_version_gt[1.0aa-1.0aa] PASSED [ 94%] tests/test_versions.py::test_version_gt[10.0001-10.0001] PASSED [ 94%] tests/test_versions.py::test_version_gt[10.0001-10.1] PASSED [ 94%] tests/test_versions.py::test_version_gt[10.1-10.0001] PASSED [ 94%] tests/test_versions.py::test_version_gt[20101121-20101121] PASSED [ 95%] tests/test_versions.py::test_version_gt[2_0-2_0] PASSED [ 95%] tests/test_versions.py::test_version_gt[2.0-2_0] PASSED [ 95%] tests/test_versions.py::test_version_gt[2_0-2.0] PASSED [ 95%] tests/test_versions.py::test_version_gt[2_0.-2_0] PASSED [ 95%] tests/test_versions.py::test_version_gt[2..0-2_0__] PASSED [ 95%] tests/test_versions.py::test_version_gt[2_0-__2.0] PASSED [ 95%] tests/test_versions.py::test_version_gt[a-a0] PASSED [ 95%] tests/test_versions.py::test_version_gt[a+-a+] PASSED [ 96%] tests/test_versions.py::test_version_gt[a+-a_] PASSED [ 96%] tests/test_versions.py::test_version_gt[a_-a+] PASSED [ 96%] tests/test_versions.py::test_version_gt[+a-+a] PASSED [ 96%] tests/test_versions.py::test_version_gt[+a-_a] PASSED [ 96%] tests/test_versions.py::test_version_gt[_a-+a] PASSED [ 96%] tests/test_versions.py::test_version_gt[+_-+_] PASSED [ 96%] tests/test_versions.py::test_version_gt[_+-+_] PASSED [ 97%] tests/test_versions.py::test_version_gt[_+-_+] PASSED [ 97%] tests/test_versions.py::test_version_gt[+-_] PASSED [ 97%] tests/test_versions.py::test_version_gt[_-+] PASSED [ 97%] tests/test_versions.py::test_version_gt[1.0~rc1-1.0~rc1] PASSED [ 97%] tests/test_versions.py::test_version_gt[1.0~rc1~git123-1.0~rc1~git123] PASSED [ 97%] tests/test_versions.py::test_version_gt[a-a1] PASSED [ 97%] tests/test_versions.py::test_version_gt[a^-a^] PASSED [ 98%] tests/test_versions.py::test_version_gt[1.0^-1.0^] PASSED [ 98%] tests/test_versions.py::test_version_gt[1.0^git1-1.0^git1] PASSED [ 98%] tests/test_versions.py::test_version_gt[1.0^20160101-1.0^20160101] PASSED [ 98%] tests/test_versions.py::test_version_gt[1.0^20160101^git1-1.0^20160101^git1] PASSED [ 98%] tests/test_versions.py::test_version_gt[1.0~rc1^git1-1.0~rc1^git1] PASSED [ 98%] tests/test_versions.py::test_version_gt[1.0^git1~pre-1.0^git1~pre] PASSED [ 98%] tests/test_versions.py::test_version_gt[0-0] PASSED [ 99%] tests/test_versions.py::test_version_gt[0-00] PASSED [ 99%] tests/test_versions.py::test_version_gt[0-000] PASSED [ 99%] tests/test_versions.py::test_version_gt[00-000] PASSED [ 99%] tests/test_versions.py::test_version_gt[000-000] PASSED [ 99%] tests/test_versions.py::test_version_gt[00-0] PASSED [ 99%] tests/test_versions.py::test_version_gt[000-0] PASSED [ 99%] tests/test_versions.py::test_version_gt[0^-0^] PASSED [100%] =================================== FAILURES =================================== _______________________________ test_has_visuals _______________________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7fff6c43b250> image1 = <<class 'abc.JPEGImageFile'> /build/diffoscope-267/tests/data/test1.jpg> image2 = <<class 'abc.JPEGImageFile'> /build/diffoscope-267/tests/data/test2.jpg> @skip_unless_tools_exist("img2txt", "convert", "identify") def test_has_visuals(monkeypatch, image1, image2): monkeypatch.setattr(Config(), "compute_visual_diffs", True) jpg_diff = image1.compare(image2) > assert len(jpg_diff.details) == 2 E assert 1 == 2 E + where 1 = len([<Difference Image content -- Image content []>]) E + where [<Difference Image content -- Image content []>] = <Difference /build/diffoscope-267/tests/data/test1.jpg -- /build/diffoscope-267/tests/data/test2.jpg [<Difference Image content -- Image content []>]>.details tests/comparators/test_jpeg_image.py:87: AssertionError ----------------------------- Captured stderr call ----------------------------- WARNING: The convert command is deprecated in IMv7, use "magick" instead of "convert" or "magick convert" =========================== short test summary info ============================ FAILED tests/comparators/test_jpeg_image.py::test_has_visuals - assert 1 == 2 = 1 failed, 680 passed, 37 skipped, 5 deselected, 1 xfailed, 1 xpassed in 47.67s = /nix/store/dd7nxjnni7nzm0846fq5xrm89ais5lwz-stdenv-linux/setup: line 1579: pop_var_context: head of shell_variables not a function context </details> I see you are amenable to adjustments of this kind, as can be seen on #330. Thanks in advance for your support and this wonderful piece of software!
issue