diffoscope 284__tar.gz → 285__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {diffoscope-284/diffoscope.egg-info → diffoscope-285}/PKG-INFO +1 -1
- {diffoscope-284 → diffoscope-285}/diffoscope/__init__.py +1 -1
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/symlink.py +1 -4
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/xar.py +1 -4
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/xml.py +38 -1
- {diffoscope-284 → diffoscope-285}/diffoscope/main.py +14 -1
- {diffoscope-284 → diffoscope-285/diffoscope.egg-info}/PKG-INFO +1 -1
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_xml.py +11 -2
- {diffoscope-284 → diffoscope-285}/tests/test_main.py +29 -1
- {diffoscope-284 → diffoscope-285}/CONTRIBUTING.md +0 -0
- {diffoscope-284 → diffoscope-285}/COPYING +0 -0
- {diffoscope-284 → diffoscope-285}/MANIFEST.in +0 -0
- {diffoscope-284 → diffoscope-285}/README.rst +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/changes.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/__init__.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/android.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/apk.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ar.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/arsc.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/berkeley_db.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/binary.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/binwalk.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/bzip2.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/cbfs.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/cpio.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/deb.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/debian.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/debian_fallback.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/decompile.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/device.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/dex.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/directory.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/docx.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/dtb.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/elf.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ffprobe.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/fit.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/fontconfig.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/fonts.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/fsimage.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/gettext.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/gif.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/git.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/gnumeric.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/gzip.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/haskell.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/hdf.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/html.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/icc.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/image.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ipk.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/iso9660.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/java.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/javascript.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/json.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/kbx.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/llvm.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/lz4.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/lzip.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/macho.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/missing_file.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/mono.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ocaml.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/odt.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ogg.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/openssh.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/openssl.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/pcap.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/pdf.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/pe32.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/pgp.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/png.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ppu.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ps.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/python.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/rdata.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/rpm.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/rpm_fallback.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/rust.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/sevenz.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/socket_or_fifo.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/sphinx.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/sqlite.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/squashfs.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/tar.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/text.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/uimage.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/uki.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/__init__.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/archive.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/command.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/compare.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/container.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/file.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/fuzzy.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/libarchive.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/operation.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/specialize.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/vmlinuz.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/wasm.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/xmlb.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/xsb.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/xz.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/zip.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/comparators/zst.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/config.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/diff.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/difference.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/environ.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/exc.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/excludes.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/external_tools.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/feeders.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/logging.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/path.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/presenters/__init__.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/presenters/formats.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/presenters/html/__init__.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/presenters/html/html.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/presenters/html/templates.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/presenters/icon.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/presenters/json.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/presenters/markdown.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/presenters/restructuredtext.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/presenters/text.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/presenters/utils.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/profiling.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/progress.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/readers/__init__.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/readers/json.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/readers/utils.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/scripts/extract-vmlinux +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/tempfiles.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/tools.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope/utils.py +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope.egg-info/SOURCES.txt +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope.egg-info/dependency_links.txt +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope.egg-info/entry_points.txt +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope.egg-info/requires.txt +0 -0
- {diffoscope-284 → diffoscope-285}/diffoscope.egg-info/top_level.txt +0 -0
- {diffoscope-284 → diffoscope-285}/extras_require.json +0 -0
- {diffoscope-284 → diffoscope-285}/pyproject.toml +0 -0
- {diffoscope-284 → diffoscope-285}/setup.cfg +0 -0
- {diffoscope-284 → diffoscope-285}/setup.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/__init__.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/__init__.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_android.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_apk.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_archive.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_arsc.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_berkeley_db.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_binary.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_binwalk.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_bzip2.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_cbfs.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_containers.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_cpio.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_deb.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_debian.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_device.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_dex.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_directory.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_docx.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_dtb.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_elf.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_elf_decompiler.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_epub.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_ffprobe.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_fit.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_fontconfig.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_fonts.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_fsimage.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_gettext.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_gif.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_git.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_gnumeric.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_gzip.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_haskell.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_hdf.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_html.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_icc.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_ico_image.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_ipk.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_iso9660.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_java.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_javascript.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_jpeg_image.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_json.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_kbx.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_lz4.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_lzip.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_macho.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_macho_decompiler.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_mono.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_ocaml.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_odt.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_ogg.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_openssh_pub_key.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_openssl.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_pcap.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_pdf.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_pgp.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_png.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_ppu.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_ps.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_python.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_rdata.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_rlib.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_rpm.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_sevenz.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_sockets.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_sphinx.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_sqlite.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_squashfs.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_symlink.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_tar.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_text.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_uimage.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_uki.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_utils.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_wasm.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_xsb.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_xz.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_zip.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/comparators/test_zst.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/conftest.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/Samyak-Malayalam1.ttf +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/Samyak-Malayalam2.ttf +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/Test1.class +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/Test2.class +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/android1.img +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/android2.img +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/android_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/apk_manifest_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/apk_zipinfo_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/archive1.tar +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/archive12.diff.txt +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/archive2.tar +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/arsc_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/base-files_157-r45695_ar71xx.ipk +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/base-files_157-r45918_ar71xx.ipk +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/berkeley6_db_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/berkeley_db_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/binary1 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/binary2 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/binary_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/binary_hexdump_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/binwalk_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/bug881937_1.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/bug881937_2.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/bug881937_control_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/bug903391_1.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/bug903391_2.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/bug903401_1.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/bug903401_2.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/bug903565_1.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/bug903565_2.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/comment_zipdetails_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/comment_zipinfo_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/containers/a.tar.bz2 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/containers/a.tar.gz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/containers/a.tar.xz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/containers/b.tar.bz2 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/containers/b.tar.gz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/containers/b.tar.xz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/containers/different_files_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/cpio_listing_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dbgsym/add/test-dbgsym-dbgsym_1_amd64.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dbgsym/add/test-dbgsym_1_amd64.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dbgsym/mult/test-dbgsym-dbgsym_1_amd64.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dbgsym/mult/test-dbgsym_1_amd64.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dbgsym/test-dbgsym_1.dsc +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dbgsym/test-dbgsym_1.tar.gz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/deb_metadata_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/debian-bug-875281.collapsed-diff.json +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/debian-bug-876316-control.tar.gz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/device_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/device_expected_diff_freebsd +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/device_expected_diff_reverse +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/device_expected_diff_reverse_freebsd +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/devicetree1.dtb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/devicetree2.dtb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/devicetree_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dex_expected_diffs +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dex_javap_14_expected_diffs +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/docx_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dot_buildinfo_fallback_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dot_changes_description_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dot_changes_different_contents_and_identical_files_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dot_changes_fallback_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dot_changes_identical_contents_and_different_files_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dot_dsc_fallback_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/dummyx64.efi.stub +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elf_lib_metadata_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elf_lib_objdump_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elf_obj_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elf_obj_ghidra_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elf_obj_radare2_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elfmix1.not_a +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elfmix2.a +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elfmix_disassembly_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elfmix_mach_o_expected_diff__text +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elfmix_mach_o_expected_diff__text_16 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elfmix_src_c_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elfmix_x_obj_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/elfmix_x_obj_objdump_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/encrypted1.zip +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/encrypted2.zip +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/epub_expected_diffs +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ext4_expected_diffs +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/fat12_expected_diffs +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/fit_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/fontconfig_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/fuzzy-tar-in-tar1.tar +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/fuzzy-tar-in-tar2.tar +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/fuzzy1.tar +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/fuzzy2.tar +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/fuzzy3.tar +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/gif_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/git_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/git_expected_diff_freebsd +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/gnu_debuglink_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/gnumeric_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/gzip_metadata_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/haskell_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/hdf5_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/hello1.wasm +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/hello2.wasm +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/html_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/html_text_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/icc_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ico_image_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ico_image_meta_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ico_image_meta_expected_diff_v2 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ignore_readelf_errors_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/inv_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ipk_metadata_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/iso9660_content_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/iso9660_content_expected_diff_cdrtools +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/iso9660_rockridge_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/iso9660_rockridge_expected_diff_cdrtools +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/javap_14_class_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/javap_class_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/javascript_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/jmod_zipdetails_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/jmod_zipinfo_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/jpeg_image_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/jpeg_image_meta_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/json_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/json_expected_ordering_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/kbx_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__cstring +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__eh_frame +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__la_symbol_ptr +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__stub_helper +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__stub_helper_16 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__stubs +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__stubs_16 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__text +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__text_16 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__unwind_info +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_dyn_relocations +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_dyn_symbols +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_file_headers +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_needed_libs +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_relocations +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_strings +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_symbols +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_symbols_llvm_11 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_obj_ghidra_expected_diff_main +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_obj_radare2_expected_diff_main +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_obj_radare2_expected_diff_printf +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff__cstring +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff__data +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff__text +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff_headers +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff_indirect_symbols +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff_libraries +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff_strings +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/mo_charsets_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/mo_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/mozzip_zipinfo_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/mp3_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/no-perms.tar +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ocaml_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/odt_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ogg_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/openssh_pub_key_expected_diff_12 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/openssh_pub_key_expected_diff_23 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/order1a.json +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/order1b.json +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/output.colored.txt +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/output.json +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/output.md +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/output.rst +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/output.txt +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/output_expected_363.html +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/output_expected_372.html +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/output_regression_875281.html +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/pcap_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/pdf_annotations_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/pdf_metadata_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/pdf_text_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/pe_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/pgp_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/pgp_signature_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/pgp_signed_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/png_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ppu_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/procyon_class_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ps_internal_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ps_text_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/pyc_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/quine.gz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/quine.zip +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/quine_a.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/quine_b.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/quine_deb_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/quine_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rdb_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rds_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/resources1.arsc +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/resources2.arsc +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rlib_armap_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rlib_elf_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rlib_llvm_dis_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rlib_llvm_dis_expected_diff_10 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rlib_llvm_dis_expected_diff_15 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rlib_llvm_dis_expected_diff_16 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rlib_llvm_dis_expected_diff_5 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rlib_llvm_dis_expected_diff_7 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rpm_fallback_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rpm_header_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/rpm_listing_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/salsa-issue-363.diff.json +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/salsa-issue-372.diff.json +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/sqlite3_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/squashfs_root_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/squashfs_superblock_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/symlink_expected_destination_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/symlink_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/tar_listing_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1-le64.cache-4 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.a +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.apk +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.asc +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.binwalk +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.buildinfo +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.bz2 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.changes +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.cpio +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.db +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.debsrc.tar.gz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.debug +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.dex +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.disk.gz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.docx +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.dsc +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.epub +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.exe +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.ext4 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.fat12 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.fat16 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.fat32 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.gif +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.git-index +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.gnumeric +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.gz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.hi +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.html +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.icc +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.ico +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.inv +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.iso +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.jmod +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.jpg +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.js +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.json +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.kbx +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.lz4 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.lzip +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.macho +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.mo +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.mozzip +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.mp3 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.o +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.odt +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.ogg +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.pcap +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.pdf +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.pgp +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.png +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.ppu +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.ps +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.pyc-renamed +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.rdb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.rdx +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.rlib +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.rpm +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.sqlite3 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.squashfs +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.tar +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.xml +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.xsb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.xz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1.zip +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1_meta.ico +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1_meta.jpg +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1_root.squashfs +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test1_signed.pgp +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2-le64.cache-4 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.a +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.apk +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.asc +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.binwalk +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.buildinfo +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.bz2 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.changes +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.cpio +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.db +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.deb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.debsrc.tar.gz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.debug +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.dex +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.disk.gz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.docx +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.dsc +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.epub +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.exe +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.ext4 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.fat12 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.gif +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.git-index +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.gnumeric +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.gz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.hi +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.html +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.icc +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.ico +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.inv +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.iso +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.jmod +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.jpg +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.js +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.json +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.kbx +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.lz4 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.lzip +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.macho +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.mo +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.mozzip +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.mp3 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.o +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.odt +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.ogg +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.pcap +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.pdf +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.pgp +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.png +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.ppu +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.ps +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.pyc-renamed +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.rdb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.rdx +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.rlib +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.rpm +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.sqlite3 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.squashfs +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.tar +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.xml +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.xsb +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.xz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2.zip +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2_meta.ico +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2_meta.jpg +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2_root.squashfs +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test2_signed.pgp +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test3.apk +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test3.changes +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test3.gif +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test3.pdf +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test3.xml +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test3.xz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test3.zip +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test4.changes +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test4.gif +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test4.pdf +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test4.xml +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test4.xz +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test5.changes +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_comment1.zip +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_comment2.zip +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_directory_a_b_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_directory_b_a_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_directory_device_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_directory_file_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_directory_symlink_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_invalid.json +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_invalid.xml +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_iso8859-1.mo +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_no_charset.mo +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_openssh_pub_key1.pub +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_openssh_pub_key2.pub +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_openssh_pub_key3.pub +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_weird_non_unicode_chars1.pdf +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_weird_non_unicode_chars2.pdf +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_xml_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/test_xml_ordering_differences_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_ascii1 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_ascii2 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_ascii_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_iso8859 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_iso8859_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_order1 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_order2 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_order_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_sevenzmetadata_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_unicode1 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_unicode2 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_unicode_binary_fallback +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_unicode_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/text_xz_list +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ttf_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/ttf_ttx_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/uimage_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/uimage_expected_diff_pre_5_41 +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/uki_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/wasm_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/xsb_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/zip2_zipdetails_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/zip_bsdtar_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/zip_zipdetails_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/data/zip_zipinfo_expected_diff +0 -0
- {diffoscope-284 → diffoscope-285}/tests/test_diff_mask.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/test_difference.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/test_excludes.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/test_presenters.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/test_progress.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/test_quines.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/test_readers.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/test_source.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/test_tools.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/test_versions.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/utils/__init__.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/utils/data.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/utils/nonexisting.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/utils/tools.py +0 -0
- {diffoscope-284 → diffoscope-285}/tests/utils/versions.py +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# diffoscope: in-depth comparison of files, archives, and directories
|
|
3
3
|
#
|
|
4
4
|
# Copyright © 2015 Jérémy Bobbio <lunar@debian.org>
|
|
5
|
-
# Copyright © 2015-2022 Chris Lamb <lamby@debian.org>
|
|
5
|
+
# Copyright © 2015-2022, 2025 Chris Lamb <lamby@debian.org>
|
|
6
6
|
#
|
|
7
7
|
# diffoscope is free software: you can redistribute it and/or modify
|
|
8
8
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -18,15 +18,12 @@
|
|
|
18
18
|
# along with diffoscope. If not, see <https://www.gnu.org/licenses/>.
|
|
19
19
|
|
|
20
20
|
import os
|
|
21
|
-
import logging
|
|
22
21
|
|
|
23
22
|
from diffoscope.tempfiles import get_named_temporary_file
|
|
24
23
|
from diffoscope.difference import Difference
|
|
25
24
|
|
|
26
25
|
from .utils.file import File
|
|
27
26
|
|
|
28
|
-
logger = logging.getLogger(__name__)
|
|
29
|
-
|
|
30
27
|
|
|
31
28
|
class Symlink(File):
|
|
32
29
|
DESCRIPTION = "symlinks"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# diffoscope: in-depth comparison of files, archives, and directories
|
|
3
3
|
#
|
|
4
4
|
# Copyright © 2024 Seth Michael Larson <seth@python.org>
|
|
5
|
-
# Copyright © 2024 Chris Lamb <lamby@debian.org>
|
|
5
|
+
# Copyright © 2024-2025 Chris Lamb <lamby@debian.org>
|
|
6
6
|
#
|
|
7
7
|
# diffoscope is free software: you can redistribute it and/or modify
|
|
8
8
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
# along with diffoscope. If not, see <https://www.gnu.org/licenses/>.
|
|
19
19
|
import hashlib
|
|
20
20
|
import re
|
|
21
|
-
import logging
|
|
22
21
|
import struct
|
|
23
22
|
import xml.etree.ElementTree as ET
|
|
24
23
|
import zlib
|
|
@@ -28,8 +27,6 @@ from .utils.file import File
|
|
|
28
27
|
from .utils.archive import Archive
|
|
29
28
|
from diffoscope.difference import Difference
|
|
30
29
|
|
|
31
|
-
logger = logging.getLogger(__name__)
|
|
32
|
-
|
|
33
30
|
|
|
34
31
|
class XarContainer(Archive):
|
|
35
32
|
def get_member_names(self):
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# diffoscope: in-depth comparison of files, archives, and directories
|
|
3
3
|
#
|
|
4
4
|
# Copyright © 2017 Juliana Rodrigues <juliana.orod@gmail.com>
|
|
5
|
-
# Copyright © 2017-2022 Chris Lamb <lamby@debian.org>
|
|
5
|
+
# Copyright © 2017-2022, 2025 Chris Lamb <lamby@debian.org>
|
|
6
6
|
#
|
|
7
7
|
# diffoscope is free software: you can redistribute it and/or modify
|
|
8
8
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
# along with diffoscope. If not, see <https://www.gnu.org/licenses/>.
|
|
19
19
|
|
|
20
20
|
import re
|
|
21
|
+
import pyexpat
|
|
22
|
+
import logging
|
|
21
23
|
|
|
22
24
|
from xml.parsers.expat import ExpatError
|
|
23
25
|
|
|
@@ -36,6 +38,36 @@ except ImportError:
|
|
|
36
38
|
from xml.dom import minidom
|
|
37
39
|
|
|
38
40
|
|
|
41
|
+
def is_vulnerable_xml_parser():
|
|
42
|
+
# We assume defusedxml is safe
|
|
43
|
+
if defusedxml:
|
|
44
|
+
return False
|
|
45
|
+
|
|
46
|
+
"""
|
|
47
|
+
As described in Pythons module documentation versions of expat <= 2.4.1
|
|
48
|
+
(released on 2021-05-23) are vulnerable to exponential/quadratic entity
|
|
49
|
+
expansion while versions <= 2.6.0 (released on 2024-02-06) are vulnerable to
|
|
50
|
+
large tokens. Since expat is usually provided by the system and not
|
|
51
|
+
directly bundled with Python, even recent Python installations can still be
|
|
52
|
+
vulnerable due to old expat versions.
|
|
53
|
+
|
|
54
|
+
<https://salsa.debian.org/reproducible-builds/diffoscope/-/issues/397>
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
pyexpat_version = tuple(
|
|
58
|
+
int(x) for x in pyexpat.EXPAT_VERSION.split("_", 1)[1].split(".")
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
return pyexpat_version < (2, 6, 0)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
logger = logging.getLogger(__name__)
|
|
65
|
+
if is_vulnerable_xml_parser():
|
|
66
|
+
logger.warning(
|
|
67
|
+
"Vulnerable version of pyexpat detected; disabling comparison of XML documents. Install defusedxml or upgrade your pyexpat."
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
|
|
39
71
|
def _format(node):
|
|
40
72
|
"""
|
|
41
73
|
Removes *inplace* spaces from minidom.Document
|
|
@@ -103,6 +135,11 @@ class XMLFile(File):
|
|
|
103
135
|
if not super().recognizes(file) and not file.name.endswith(".xml"):
|
|
104
136
|
return False
|
|
105
137
|
|
|
138
|
+
# Check that we aren't about to open an untrusted file with an old, and
|
|
139
|
+
# potentially vulnerable, version of pyexpat.
|
|
140
|
+
if is_vulnerable_xml_parser():
|
|
141
|
+
return False
|
|
142
|
+
|
|
106
143
|
with open(file.path) as f:
|
|
107
144
|
try:
|
|
108
145
|
file.parsed = _parse(f)
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# diffoscope: in-depth comparison of files, archives, and directories
|
|
5
5
|
#
|
|
6
6
|
# Copyright © 2014-2015 Jérémy Bobbio <lunar@debian.org>
|
|
7
|
-
# Copyright © 2016-2023 Chris Lamb <lamby@debian.org>
|
|
7
|
+
# Copyright © 2016-2023, 2025 Chris Lamb <lamby@debian.org>
|
|
8
8
|
#
|
|
9
9
|
# diffoscope is free software: you can redistribute it and/or modify
|
|
10
10
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -28,6 +28,8 @@ import textwrap
|
|
|
28
28
|
import argparse
|
|
29
29
|
import traceback
|
|
30
30
|
|
|
31
|
+
from urllib.parse import urlparse
|
|
32
|
+
|
|
31
33
|
from . import VERSION
|
|
32
34
|
from .path import set_path
|
|
33
35
|
from .tools import (
|
|
@@ -734,6 +736,14 @@ def sigterm_handler(signo, stack_frame):
|
|
|
734
736
|
os._exit(2)
|
|
735
737
|
|
|
736
738
|
|
|
739
|
+
def is_valid_url(val):
|
|
740
|
+
try:
|
|
741
|
+
result = urlparse(val)
|
|
742
|
+
return all([result.scheme, result.netloc])
|
|
743
|
+
except AttributeError:
|
|
744
|
+
return False
|
|
745
|
+
|
|
746
|
+
|
|
737
747
|
def main(args=None):
|
|
738
748
|
if args is None:
|
|
739
749
|
args = sys.argv[1:]
|
|
@@ -759,6 +769,9 @@ def main(args=None):
|
|
|
759
769
|
parser, post_parse = create_parser()
|
|
760
770
|
parsed_args = parser.parse_args(args)
|
|
761
771
|
|
|
772
|
+
if parsed_args.css_url and not is_valid_url(parsed_args.css_url):
|
|
773
|
+
parser.error(f"{parsed_args.css_url!r} is not a valid CSS URL.")
|
|
774
|
+
|
|
762
775
|
log_handler = ProgressManager().setup(parsed_args)
|
|
763
776
|
|
|
764
777
|
with setup_logging(parsed_args.debug, log_handler) as _:
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# diffoscope: in-depth comparison of files, archives, and directories
|
|
3
3
|
#
|
|
4
4
|
# Copyright (C) 2017 Juliana Rodrigues <juliana.orod@gmail.com>
|
|
5
|
-
# Copyright © 2017, 2019-2020, 2022-2023 Chris Lamb <lamby@debian.org>
|
|
5
|
+
# Copyright © 2017, 2019-2020, 2022-2023, 2025 Chris Lamb <lamby@debian.org>
|
|
6
6
|
#
|
|
7
7
|
# diffoscope is free software: you can redistribute it and/or modify
|
|
8
8
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -20,10 +20,14 @@
|
|
|
20
20
|
import sys
|
|
21
21
|
import pytest
|
|
22
22
|
|
|
23
|
-
from diffoscope.comparators.xml import XMLFile
|
|
23
|
+
from diffoscope.comparators.xml import XMLFile, is_vulnerable_xml_parser
|
|
24
24
|
|
|
25
25
|
from ..utils.data import load_fixture, assert_diff
|
|
26
26
|
|
|
27
|
+
skip_if_vulnerable_xml_parser = pytest.mark.skipif(
|
|
28
|
+
is_vulnerable_xml_parser(), reason="Vulnerable XML parser"
|
|
29
|
+
)
|
|
30
|
+
|
|
27
31
|
|
|
28
32
|
xml_a = load_fixture("test1.xml")
|
|
29
33
|
xml_b = load_fixture("test2.xml")
|
|
@@ -32,14 +36,17 @@ xml_d = load_fixture("test4.xml")
|
|
|
32
36
|
invalid_xml = load_fixture("test_invalid.xml")
|
|
33
37
|
|
|
34
38
|
|
|
39
|
+
@skip_if_vulnerable_xml_parser
|
|
35
40
|
def test_identification(xml_a):
|
|
36
41
|
assert isinstance(xml_a, XMLFile)
|
|
37
42
|
|
|
38
43
|
|
|
44
|
+
@skip_if_vulnerable_xml_parser
|
|
39
45
|
def test_invalid(invalid_xml):
|
|
40
46
|
assert not isinstance(invalid_xml, XMLFile)
|
|
41
47
|
|
|
42
48
|
|
|
49
|
+
@skip_if_vulnerable_xml_parser
|
|
43
50
|
def test_no_differences(xml_a):
|
|
44
51
|
assert xml_a.compare(xml_a) is None
|
|
45
52
|
|
|
@@ -52,6 +59,7 @@ def differences(xml_a, xml_b):
|
|
|
52
59
|
@pytest.mark.skipif(
|
|
53
60
|
sys.version_info < (3, 8), reason="requires Python 3.8 or higher"
|
|
54
61
|
)
|
|
62
|
+
@skip_if_vulnerable_xml_parser
|
|
55
63
|
def test_diff(differences):
|
|
56
64
|
assert_diff(differences[0], "test_xml_expected_diff")
|
|
57
65
|
|
|
@@ -59,6 +67,7 @@ def test_diff(differences):
|
|
|
59
67
|
@pytest.mark.skipif(
|
|
60
68
|
sys.version_info < (3, 8), reason="requires Python 3.8 or higher"
|
|
61
69
|
)
|
|
70
|
+
@skip_if_vulnerable_xml_parser
|
|
62
71
|
def test_ordering_differences(xml_c, xml_d):
|
|
63
72
|
diff = xml_c.compare(xml_d)
|
|
64
73
|
assert diff.details[0].comments == ["Ordering differences only"]
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# diffoscope: in-depth comparison of files, archives, and directories
|
|
3
3
|
#
|
|
4
4
|
# Copyright © 2015 Jérémy Bobbio <lunar@debian.org>
|
|
5
|
-
# Copyright © 2016-2020, 2022 Chris Lamb <lamby@debian.org>
|
|
5
|
+
# Copyright © 2016-2020, 2022, 2025 Chris Lamb <lamby@debian.org>
|
|
6
6
|
#
|
|
7
7
|
# diffoscope is free software: you can redistribute it and/or modify
|
|
8
8
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -191,3 +191,31 @@ def test_usage(capsys):
|
|
|
191
191
|
|
|
192
192
|
assert out == ""
|
|
193
193
|
assert "usage:" in err
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
def test_valid_css(capsys):
|
|
197
|
+
ret, out, err = run(
|
|
198
|
+
capsys,
|
|
199
|
+
"--css",
|
|
200
|
+
"http://example.tld/file.css",
|
|
201
|
+
TEST_TAR1_PATH,
|
|
202
|
+
TEST_TAR1_PATH,
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
assert ret == 0
|
|
206
|
+
assert err == ""
|
|
207
|
+
assert out == ""
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
def test_invalid_css(capsys):
|
|
211
|
+
ret, out, err = run(
|
|
212
|
+
capsys,
|
|
213
|
+
"--css",
|
|
214
|
+
'"><svg/onload=alert(43433)>',
|
|
215
|
+
TEST_TAR1_PATH,
|
|
216
|
+
TEST_TAR1_PATH,
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
assert ret == 2
|
|
220
|
+
assert "is not a valid CSS" in err
|
|
221
|
+
assert out == ""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|