Skip to content

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, 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.

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:

Click to expand 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 (closed) 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.0rc1-1.0rc1-0] PASSED [ 80%] tests/test_versions.py::test_version_comparisons[1.0rc1-1.0--1] PASSED [ 80%] tests/test_versions.py::test_version_comparisons[1.0-1.0rc1-1] PASSED [ 81%] tests/test_versions.py::test_version_comparisons[1.0rc1-1.0rc2--1] PASSED [ 81%] tests/test_versions.py::test_version_comparisons[1.0rc2-1.0rc1-1] PASSED [ 81%] tests/test_versions.py::test_version_comparisons[1.0rc1git123-1.0rc1git123-0] PASSED [ 81%] tests/test_versions.py::test_version_comparisons[1.0rc1git123-1.0rc1--1] PASSED [ 81%] tests/test_versions.py::test_version_comparisons[1.0rc1-1.0rc1git123-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

I see you are amenable to adjustments of this kind, as can be seen on #330 (closed).

Thanks in advance for your support and this wonderful piece of software!

Edited by pancho horrillo
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information