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.
Files changed (649) hide show
  1. {diffoscope-284/diffoscope.egg-info → diffoscope-285}/PKG-INFO +1 -1
  2. {diffoscope-284 → diffoscope-285}/diffoscope/__init__.py +1 -1
  3. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/symlink.py +1 -4
  4. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/xar.py +1 -4
  5. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/xml.py +38 -1
  6. {diffoscope-284 → diffoscope-285}/diffoscope/main.py +14 -1
  7. {diffoscope-284 → diffoscope-285/diffoscope.egg-info}/PKG-INFO +1 -1
  8. {diffoscope-284 → diffoscope-285}/tests/comparators/test_xml.py +11 -2
  9. {diffoscope-284 → diffoscope-285}/tests/test_main.py +29 -1
  10. {diffoscope-284 → diffoscope-285}/CONTRIBUTING.md +0 -0
  11. {diffoscope-284 → diffoscope-285}/COPYING +0 -0
  12. {diffoscope-284 → diffoscope-285}/MANIFEST.in +0 -0
  13. {diffoscope-284 → diffoscope-285}/README.rst +0 -0
  14. {diffoscope-284 → diffoscope-285}/diffoscope/changes.py +0 -0
  15. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/__init__.py +0 -0
  16. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/android.py +0 -0
  17. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/apk.py +0 -0
  18. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ar.py +0 -0
  19. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/arsc.py +0 -0
  20. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/berkeley_db.py +0 -0
  21. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/binary.py +0 -0
  22. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/binwalk.py +0 -0
  23. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/bzip2.py +0 -0
  24. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/cbfs.py +0 -0
  25. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/cpio.py +0 -0
  26. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/deb.py +0 -0
  27. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/debian.py +0 -0
  28. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/debian_fallback.py +0 -0
  29. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/decompile.py +0 -0
  30. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/device.py +0 -0
  31. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/dex.py +0 -0
  32. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/directory.py +0 -0
  33. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/docx.py +0 -0
  34. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/dtb.py +0 -0
  35. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/elf.py +0 -0
  36. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ffprobe.py +0 -0
  37. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/fit.py +0 -0
  38. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/fontconfig.py +0 -0
  39. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/fonts.py +0 -0
  40. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/fsimage.py +0 -0
  41. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/gettext.py +0 -0
  42. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/gif.py +0 -0
  43. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/git.py +0 -0
  44. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/gnumeric.py +0 -0
  45. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/gzip.py +0 -0
  46. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/haskell.py +0 -0
  47. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/hdf.py +0 -0
  48. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/html.py +0 -0
  49. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/icc.py +0 -0
  50. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/image.py +0 -0
  51. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ipk.py +0 -0
  52. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/iso9660.py +0 -0
  53. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/java.py +0 -0
  54. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/javascript.py +0 -0
  55. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/json.py +0 -0
  56. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/kbx.py +0 -0
  57. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/llvm.py +0 -0
  58. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/lz4.py +0 -0
  59. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/lzip.py +0 -0
  60. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/macho.py +0 -0
  61. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/missing_file.py +0 -0
  62. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/mono.py +0 -0
  63. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ocaml.py +0 -0
  64. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/odt.py +0 -0
  65. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ogg.py +0 -0
  66. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/openssh.py +0 -0
  67. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/openssl.py +0 -0
  68. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/pcap.py +0 -0
  69. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/pdf.py +0 -0
  70. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/pe32.py +0 -0
  71. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/pgp.py +0 -0
  72. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/png.py +0 -0
  73. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ppu.py +0 -0
  74. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/ps.py +0 -0
  75. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/python.py +0 -0
  76. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/rdata.py +0 -0
  77. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/rpm.py +0 -0
  78. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/rpm_fallback.py +0 -0
  79. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/rust.py +0 -0
  80. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/sevenz.py +0 -0
  81. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/socket_or_fifo.py +0 -0
  82. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/sphinx.py +0 -0
  83. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/sqlite.py +0 -0
  84. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/squashfs.py +0 -0
  85. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/tar.py +0 -0
  86. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/text.py +0 -0
  87. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/uimage.py +0 -0
  88. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/uki.py +0 -0
  89. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/__init__.py +0 -0
  90. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/archive.py +0 -0
  91. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/command.py +0 -0
  92. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/compare.py +0 -0
  93. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/container.py +0 -0
  94. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/file.py +0 -0
  95. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/fuzzy.py +0 -0
  96. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/libarchive.py +0 -0
  97. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/operation.py +0 -0
  98. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/utils/specialize.py +0 -0
  99. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/vmlinuz.py +0 -0
  100. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/wasm.py +0 -0
  101. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/xmlb.py +0 -0
  102. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/xsb.py +0 -0
  103. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/xz.py +0 -0
  104. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/zip.py +0 -0
  105. {diffoscope-284 → diffoscope-285}/diffoscope/comparators/zst.py +0 -0
  106. {diffoscope-284 → diffoscope-285}/diffoscope/config.py +0 -0
  107. {diffoscope-284 → diffoscope-285}/diffoscope/diff.py +0 -0
  108. {diffoscope-284 → diffoscope-285}/diffoscope/difference.py +0 -0
  109. {diffoscope-284 → diffoscope-285}/diffoscope/environ.py +0 -0
  110. {diffoscope-284 → diffoscope-285}/diffoscope/exc.py +0 -0
  111. {diffoscope-284 → diffoscope-285}/diffoscope/excludes.py +0 -0
  112. {diffoscope-284 → diffoscope-285}/diffoscope/external_tools.py +0 -0
  113. {diffoscope-284 → diffoscope-285}/diffoscope/feeders.py +0 -0
  114. {diffoscope-284 → diffoscope-285}/diffoscope/logging.py +0 -0
  115. {diffoscope-284 → diffoscope-285}/diffoscope/path.py +0 -0
  116. {diffoscope-284 → diffoscope-285}/diffoscope/presenters/__init__.py +0 -0
  117. {diffoscope-284 → diffoscope-285}/diffoscope/presenters/formats.py +0 -0
  118. {diffoscope-284 → diffoscope-285}/diffoscope/presenters/html/__init__.py +0 -0
  119. {diffoscope-284 → diffoscope-285}/diffoscope/presenters/html/html.py +0 -0
  120. {diffoscope-284 → diffoscope-285}/diffoscope/presenters/html/templates.py +0 -0
  121. {diffoscope-284 → diffoscope-285}/diffoscope/presenters/icon.py +0 -0
  122. {diffoscope-284 → diffoscope-285}/diffoscope/presenters/json.py +0 -0
  123. {diffoscope-284 → diffoscope-285}/diffoscope/presenters/markdown.py +0 -0
  124. {diffoscope-284 → diffoscope-285}/diffoscope/presenters/restructuredtext.py +0 -0
  125. {diffoscope-284 → diffoscope-285}/diffoscope/presenters/text.py +0 -0
  126. {diffoscope-284 → diffoscope-285}/diffoscope/presenters/utils.py +0 -0
  127. {diffoscope-284 → diffoscope-285}/diffoscope/profiling.py +0 -0
  128. {diffoscope-284 → diffoscope-285}/diffoscope/progress.py +0 -0
  129. {diffoscope-284 → diffoscope-285}/diffoscope/readers/__init__.py +0 -0
  130. {diffoscope-284 → diffoscope-285}/diffoscope/readers/json.py +0 -0
  131. {diffoscope-284 → diffoscope-285}/diffoscope/readers/utils.py +0 -0
  132. {diffoscope-284 → diffoscope-285}/diffoscope/scripts/extract-vmlinux +0 -0
  133. {diffoscope-284 → diffoscope-285}/diffoscope/tempfiles.py +0 -0
  134. {diffoscope-284 → diffoscope-285}/diffoscope/tools.py +0 -0
  135. {diffoscope-284 → diffoscope-285}/diffoscope/utils.py +0 -0
  136. {diffoscope-284 → diffoscope-285}/diffoscope.egg-info/SOURCES.txt +0 -0
  137. {diffoscope-284 → diffoscope-285}/diffoscope.egg-info/dependency_links.txt +0 -0
  138. {diffoscope-284 → diffoscope-285}/diffoscope.egg-info/entry_points.txt +0 -0
  139. {diffoscope-284 → diffoscope-285}/diffoscope.egg-info/requires.txt +0 -0
  140. {diffoscope-284 → diffoscope-285}/diffoscope.egg-info/top_level.txt +0 -0
  141. {diffoscope-284 → diffoscope-285}/extras_require.json +0 -0
  142. {diffoscope-284 → diffoscope-285}/pyproject.toml +0 -0
  143. {diffoscope-284 → diffoscope-285}/setup.cfg +0 -0
  144. {diffoscope-284 → diffoscope-285}/setup.py +0 -0
  145. {diffoscope-284 → diffoscope-285}/tests/__init__.py +0 -0
  146. {diffoscope-284 → diffoscope-285}/tests/comparators/__init__.py +0 -0
  147. {diffoscope-284 → diffoscope-285}/tests/comparators/test_android.py +0 -0
  148. {diffoscope-284 → diffoscope-285}/tests/comparators/test_apk.py +0 -0
  149. {diffoscope-284 → diffoscope-285}/tests/comparators/test_archive.py +0 -0
  150. {diffoscope-284 → diffoscope-285}/tests/comparators/test_arsc.py +0 -0
  151. {diffoscope-284 → diffoscope-285}/tests/comparators/test_berkeley_db.py +0 -0
  152. {diffoscope-284 → diffoscope-285}/tests/comparators/test_binary.py +0 -0
  153. {diffoscope-284 → diffoscope-285}/tests/comparators/test_binwalk.py +0 -0
  154. {diffoscope-284 → diffoscope-285}/tests/comparators/test_bzip2.py +0 -0
  155. {diffoscope-284 → diffoscope-285}/tests/comparators/test_cbfs.py +0 -0
  156. {diffoscope-284 → diffoscope-285}/tests/comparators/test_containers.py +0 -0
  157. {diffoscope-284 → diffoscope-285}/tests/comparators/test_cpio.py +0 -0
  158. {diffoscope-284 → diffoscope-285}/tests/comparators/test_deb.py +0 -0
  159. {diffoscope-284 → diffoscope-285}/tests/comparators/test_debian.py +0 -0
  160. {diffoscope-284 → diffoscope-285}/tests/comparators/test_device.py +0 -0
  161. {diffoscope-284 → diffoscope-285}/tests/comparators/test_dex.py +0 -0
  162. {diffoscope-284 → diffoscope-285}/tests/comparators/test_directory.py +0 -0
  163. {diffoscope-284 → diffoscope-285}/tests/comparators/test_docx.py +0 -0
  164. {diffoscope-284 → diffoscope-285}/tests/comparators/test_dtb.py +0 -0
  165. {diffoscope-284 → diffoscope-285}/tests/comparators/test_elf.py +0 -0
  166. {diffoscope-284 → diffoscope-285}/tests/comparators/test_elf_decompiler.py +0 -0
  167. {diffoscope-284 → diffoscope-285}/tests/comparators/test_epub.py +0 -0
  168. {diffoscope-284 → diffoscope-285}/tests/comparators/test_ffprobe.py +0 -0
  169. {diffoscope-284 → diffoscope-285}/tests/comparators/test_fit.py +0 -0
  170. {diffoscope-284 → diffoscope-285}/tests/comparators/test_fontconfig.py +0 -0
  171. {diffoscope-284 → diffoscope-285}/tests/comparators/test_fonts.py +0 -0
  172. {diffoscope-284 → diffoscope-285}/tests/comparators/test_fsimage.py +0 -0
  173. {diffoscope-284 → diffoscope-285}/tests/comparators/test_gettext.py +0 -0
  174. {diffoscope-284 → diffoscope-285}/tests/comparators/test_gif.py +0 -0
  175. {diffoscope-284 → diffoscope-285}/tests/comparators/test_git.py +0 -0
  176. {diffoscope-284 → diffoscope-285}/tests/comparators/test_gnumeric.py +0 -0
  177. {diffoscope-284 → diffoscope-285}/tests/comparators/test_gzip.py +0 -0
  178. {diffoscope-284 → diffoscope-285}/tests/comparators/test_haskell.py +0 -0
  179. {diffoscope-284 → diffoscope-285}/tests/comparators/test_hdf.py +0 -0
  180. {diffoscope-284 → diffoscope-285}/tests/comparators/test_html.py +0 -0
  181. {diffoscope-284 → diffoscope-285}/tests/comparators/test_icc.py +0 -0
  182. {diffoscope-284 → diffoscope-285}/tests/comparators/test_ico_image.py +0 -0
  183. {diffoscope-284 → diffoscope-285}/tests/comparators/test_ipk.py +0 -0
  184. {diffoscope-284 → diffoscope-285}/tests/comparators/test_iso9660.py +0 -0
  185. {diffoscope-284 → diffoscope-285}/tests/comparators/test_java.py +0 -0
  186. {diffoscope-284 → diffoscope-285}/tests/comparators/test_javascript.py +0 -0
  187. {diffoscope-284 → diffoscope-285}/tests/comparators/test_jpeg_image.py +0 -0
  188. {diffoscope-284 → diffoscope-285}/tests/comparators/test_json.py +0 -0
  189. {diffoscope-284 → diffoscope-285}/tests/comparators/test_kbx.py +0 -0
  190. {diffoscope-284 → diffoscope-285}/tests/comparators/test_lz4.py +0 -0
  191. {diffoscope-284 → diffoscope-285}/tests/comparators/test_lzip.py +0 -0
  192. {diffoscope-284 → diffoscope-285}/tests/comparators/test_macho.py +0 -0
  193. {diffoscope-284 → diffoscope-285}/tests/comparators/test_macho_decompiler.py +0 -0
  194. {diffoscope-284 → diffoscope-285}/tests/comparators/test_mono.py +0 -0
  195. {diffoscope-284 → diffoscope-285}/tests/comparators/test_ocaml.py +0 -0
  196. {diffoscope-284 → diffoscope-285}/tests/comparators/test_odt.py +0 -0
  197. {diffoscope-284 → diffoscope-285}/tests/comparators/test_ogg.py +0 -0
  198. {diffoscope-284 → diffoscope-285}/tests/comparators/test_openssh_pub_key.py +0 -0
  199. {diffoscope-284 → diffoscope-285}/tests/comparators/test_openssl.py +0 -0
  200. {diffoscope-284 → diffoscope-285}/tests/comparators/test_pcap.py +0 -0
  201. {diffoscope-284 → diffoscope-285}/tests/comparators/test_pdf.py +0 -0
  202. {diffoscope-284 → diffoscope-285}/tests/comparators/test_pgp.py +0 -0
  203. {diffoscope-284 → diffoscope-285}/tests/comparators/test_png.py +0 -0
  204. {diffoscope-284 → diffoscope-285}/tests/comparators/test_ppu.py +0 -0
  205. {diffoscope-284 → diffoscope-285}/tests/comparators/test_ps.py +0 -0
  206. {diffoscope-284 → diffoscope-285}/tests/comparators/test_python.py +0 -0
  207. {diffoscope-284 → diffoscope-285}/tests/comparators/test_rdata.py +0 -0
  208. {diffoscope-284 → diffoscope-285}/tests/comparators/test_rlib.py +0 -0
  209. {diffoscope-284 → diffoscope-285}/tests/comparators/test_rpm.py +0 -0
  210. {diffoscope-284 → diffoscope-285}/tests/comparators/test_sevenz.py +0 -0
  211. {diffoscope-284 → diffoscope-285}/tests/comparators/test_sockets.py +0 -0
  212. {diffoscope-284 → diffoscope-285}/tests/comparators/test_sphinx.py +0 -0
  213. {diffoscope-284 → diffoscope-285}/tests/comparators/test_sqlite.py +0 -0
  214. {diffoscope-284 → diffoscope-285}/tests/comparators/test_squashfs.py +0 -0
  215. {diffoscope-284 → diffoscope-285}/tests/comparators/test_symlink.py +0 -0
  216. {diffoscope-284 → diffoscope-285}/tests/comparators/test_tar.py +0 -0
  217. {diffoscope-284 → diffoscope-285}/tests/comparators/test_text.py +0 -0
  218. {diffoscope-284 → diffoscope-285}/tests/comparators/test_uimage.py +0 -0
  219. {diffoscope-284 → diffoscope-285}/tests/comparators/test_uki.py +0 -0
  220. {diffoscope-284 → diffoscope-285}/tests/comparators/test_utils.py +0 -0
  221. {diffoscope-284 → diffoscope-285}/tests/comparators/test_wasm.py +0 -0
  222. {diffoscope-284 → diffoscope-285}/tests/comparators/test_xsb.py +0 -0
  223. {diffoscope-284 → diffoscope-285}/tests/comparators/test_xz.py +0 -0
  224. {diffoscope-284 → diffoscope-285}/tests/comparators/test_zip.py +0 -0
  225. {diffoscope-284 → diffoscope-285}/tests/comparators/test_zst.py +0 -0
  226. {diffoscope-284 → diffoscope-285}/tests/conftest.py +0 -0
  227. {diffoscope-284 → diffoscope-285}/tests/data/Samyak-Malayalam1.ttf +0 -0
  228. {diffoscope-284 → diffoscope-285}/tests/data/Samyak-Malayalam2.ttf +0 -0
  229. {diffoscope-284 → diffoscope-285}/tests/data/Test1.class +0 -0
  230. {diffoscope-284 → diffoscope-285}/tests/data/Test2.class +0 -0
  231. {diffoscope-284 → diffoscope-285}/tests/data/android1.img +0 -0
  232. {diffoscope-284 → diffoscope-285}/tests/data/android2.img +0 -0
  233. {diffoscope-284 → diffoscope-285}/tests/data/android_expected_diff +0 -0
  234. {diffoscope-284 → diffoscope-285}/tests/data/apk_manifest_expected_diff +0 -0
  235. {diffoscope-284 → diffoscope-285}/tests/data/apk_zipinfo_expected_diff +0 -0
  236. {diffoscope-284 → diffoscope-285}/tests/data/archive1.tar +0 -0
  237. {diffoscope-284 → diffoscope-285}/tests/data/archive12.diff.txt +0 -0
  238. {diffoscope-284 → diffoscope-285}/tests/data/archive2.tar +0 -0
  239. {diffoscope-284 → diffoscope-285}/tests/data/arsc_expected_diff +0 -0
  240. {diffoscope-284 → diffoscope-285}/tests/data/base-files_157-r45695_ar71xx.ipk +0 -0
  241. {diffoscope-284 → diffoscope-285}/tests/data/base-files_157-r45918_ar71xx.ipk +0 -0
  242. {diffoscope-284 → diffoscope-285}/tests/data/berkeley6_db_expected_diff +0 -0
  243. {diffoscope-284 → diffoscope-285}/tests/data/berkeley_db_expected_diff +0 -0
  244. {diffoscope-284 → diffoscope-285}/tests/data/binary1 +0 -0
  245. {diffoscope-284 → diffoscope-285}/tests/data/binary2 +0 -0
  246. {diffoscope-284 → diffoscope-285}/tests/data/binary_expected_diff +0 -0
  247. {diffoscope-284 → diffoscope-285}/tests/data/binary_hexdump_expected_diff +0 -0
  248. {diffoscope-284 → diffoscope-285}/tests/data/binwalk_expected_diff +0 -0
  249. {diffoscope-284 → diffoscope-285}/tests/data/bug881937_1.deb +0 -0
  250. {diffoscope-284 → diffoscope-285}/tests/data/bug881937_2.deb +0 -0
  251. {diffoscope-284 → diffoscope-285}/tests/data/bug881937_control_expected_diff +0 -0
  252. {diffoscope-284 → diffoscope-285}/tests/data/bug903391_1.deb +0 -0
  253. {diffoscope-284 → diffoscope-285}/tests/data/bug903391_2.deb +0 -0
  254. {diffoscope-284 → diffoscope-285}/tests/data/bug903401_1.deb +0 -0
  255. {diffoscope-284 → diffoscope-285}/tests/data/bug903401_2.deb +0 -0
  256. {diffoscope-284 → diffoscope-285}/tests/data/bug903565_1.deb +0 -0
  257. {diffoscope-284 → diffoscope-285}/tests/data/bug903565_2.deb +0 -0
  258. {diffoscope-284 → diffoscope-285}/tests/data/comment_zipdetails_expected_diff +0 -0
  259. {diffoscope-284 → diffoscope-285}/tests/data/comment_zipinfo_expected_diff +0 -0
  260. {diffoscope-284 → diffoscope-285}/tests/data/containers/a.tar.bz2 +0 -0
  261. {diffoscope-284 → diffoscope-285}/tests/data/containers/a.tar.gz +0 -0
  262. {diffoscope-284 → diffoscope-285}/tests/data/containers/a.tar.xz +0 -0
  263. {diffoscope-284 → diffoscope-285}/tests/data/containers/b.tar.bz2 +0 -0
  264. {diffoscope-284 → diffoscope-285}/tests/data/containers/b.tar.gz +0 -0
  265. {diffoscope-284 → diffoscope-285}/tests/data/containers/b.tar.xz +0 -0
  266. {diffoscope-284 → diffoscope-285}/tests/data/containers/different_files_expected_diff +0 -0
  267. {diffoscope-284 → diffoscope-285}/tests/data/cpio_listing_expected_diff +0 -0
  268. {diffoscope-284 → diffoscope-285}/tests/data/dbgsym/add/test-dbgsym-dbgsym_1_amd64.deb +0 -0
  269. {diffoscope-284 → diffoscope-285}/tests/data/dbgsym/add/test-dbgsym_1_amd64.deb +0 -0
  270. {diffoscope-284 → diffoscope-285}/tests/data/dbgsym/mult/test-dbgsym-dbgsym_1_amd64.deb +0 -0
  271. {diffoscope-284 → diffoscope-285}/tests/data/dbgsym/mult/test-dbgsym_1_amd64.deb +0 -0
  272. {diffoscope-284 → diffoscope-285}/tests/data/dbgsym/test-dbgsym_1.dsc +0 -0
  273. {diffoscope-284 → diffoscope-285}/tests/data/dbgsym/test-dbgsym_1.tar.gz +0 -0
  274. {diffoscope-284 → diffoscope-285}/tests/data/deb_metadata_expected_diff +0 -0
  275. {diffoscope-284 → diffoscope-285}/tests/data/debian-bug-875281.collapsed-diff.json +0 -0
  276. {diffoscope-284 → diffoscope-285}/tests/data/debian-bug-876316-control.tar.gz +0 -0
  277. {diffoscope-284 → diffoscope-285}/tests/data/device_expected_diff +0 -0
  278. {diffoscope-284 → diffoscope-285}/tests/data/device_expected_diff_freebsd +0 -0
  279. {diffoscope-284 → diffoscope-285}/tests/data/device_expected_diff_reverse +0 -0
  280. {diffoscope-284 → diffoscope-285}/tests/data/device_expected_diff_reverse_freebsd +0 -0
  281. {diffoscope-284 → diffoscope-285}/tests/data/devicetree1.dtb +0 -0
  282. {diffoscope-284 → diffoscope-285}/tests/data/devicetree2.dtb +0 -0
  283. {diffoscope-284 → diffoscope-285}/tests/data/devicetree_expected_diff +0 -0
  284. {diffoscope-284 → diffoscope-285}/tests/data/dex_expected_diffs +0 -0
  285. {diffoscope-284 → diffoscope-285}/tests/data/dex_javap_14_expected_diffs +0 -0
  286. {diffoscope-284 → diffoscope-285}/tests/data/docx_expected_diff +0 -0
  287. {diffoscope-284 → diffoscope-285}/tests/data/dot_buildinfo_fallback_expected_diff +0 -0
  288. {diffoscope-284 → diffoscope-285}/tests/data/dot_changes_description_expected_diff +0 -0
  289. {diffoscope-284 → diffoscope-285}/tests/data/dot_changes_different_contents_and_identical_files_expected_diff +0 -0
  290. {diffoscope-284 → diffoscope-285}/tests/data/dot_changes_fallback_expected_diff +0 -0
  291. {diffoscope-284 → diffoscope-285}/tests/data/dot_changes_identical_contents_and_different_files_expected_diff +0 -0
  292. {diffoscope-284 → diffoscope-285}/tests/data/dot_dsc_fallback_expected_diff +0 -0
  293. {diffoscope-284 → diffoscope-285}/tests/data/dummyx64.efi.stub +0 -0
  294. {diffoscope-284 → diffoscope-285}/tests/data/elf_lib_metadata_expected_diff +0 -0
  295. {diffoscope-284 → diffoscope-285}/tests/data/elf_lib_objdump_expected_diff +0 -0
  296. {diffoscope-284 → diffoscope-285}/tests/data/elf_obj_expected_diff +0 -0
  297. {diffoscope-284 → diffoscope-285}/tests/data/elf_obj_ghidra_expected_diff +0 -0
  298. {diffoscope-284 → diffoscope-285}/tests/data/elf_obj_radare2_expected_diff +0 -0
  299. {diffoscope-284 → diffoscope-285}/tests/data/elfmix1.not_a +0 -0
  300. {diffoscope-284 → diffoscope-285}/tests/data/elfmix2.a +0 -0
  301. {diffoscope-284 → diffoscope-285}/tests/data/elfmix_disassembly_expected_diff +0 -0
  302. {diffoscope-284 → diffoscope-285}/tests/data/elfmix_mach_o_expected_diff__text +0 -0
  303. {diffoscope-284 → diffoscope-285}/tests/data/elfmix_mach_o_expected_diff__text_16 +0 -0
  304. {diffoscope-284 → diffoscope-285}/tests/data/elfmix_src_c_expected_diff +0 -0
  305. {diffoscope-284 → diffoscope-285}/tests/data/elfmix_x_obj_expected_diff +0 -0
  306. {diffoscope-284 → diffoscope-285}/tests/data/elfmix_x_obj_objdump_expected_diff +0 -0
  307. {diffoscope-284 → diffoscope-285}/tests/data/encrypted1.zip +0 -0
  308. {diffoscope-284 → diffoscope-285}/tests/data/encrypted2.zip +0 -0
  309. {diffoscope-284 → diffoscope-285}/tests/data/epub_expected_diffs +0 -0
  310. {diffoscope-284 → diffoscope-285}/tests/data/ext4_expected_diffs +0 -0
  311. {diffoscope-284 → diffoscope-285}/tests/data/fat12_expected_diffs +0 -0
  312. {diffoscope-284 → diffoscope-285}/tests/data/fit_expected_diff +0 -0
  313. {diffoscope-284 → diffoscope-285}/tests/data/fontconfig_expected_diff +0 -0
  314. {diffoscope-284 → diffoscope-285}/tests/data/fuzzy-tar-in-tar1.tar +0 -0
  315. {diffoscope-284 → diffoscope-285}/tests/data/fuzzy-tar-in-tar2.tar +0 -0
  316. {diffoscope-284 → diffoscope-285}/tests/data/fuzzy1.tar +0 -0
  317. {diffoscope-284 → diffoscope-285}/tests/data/fuzzy2.tar +0 -0
  318. {diffoscope-284 → diffoscope-285}/tests/data/fuzzy3.tar +0 -0
  319. {diffoscope-284 → diffoscope-285}/tests/data/gif_expected_diff +0 -0
  320. {diffoscope-284 → diffoscope-285}/tests/data/git_expected_diff +0 -0
  321. {diffoscope-284 → diffoscope-285}/tests/data/git_expected_diff_freebsd +0 -0
  322. {diffoscope-284 → diffoscope-285}/tests/data/gnu_debuglink_expected_diff +0 -0
  323. {diffoscope-284 → diffoscope-285}/tests/data/gnumeric_expected_diff +0 -0
  324. {diffoscope-284 → diffoscope-285}/tests/data/gzip_metadata_expected_diff +0 -0
  325. {diffoscope-284 → diffoscope-285}/tests/data/haskell_expected_diff +0 -0
  326. {diffoscope-284 → diffoscope-285}/tests/data/hdf5_expected_diff +0 -0
  327. {diffoscope-284 → diffoscope-285}/tests/data/hello1.wasm +0 -0
  328. {diffoscope-284 → diffoscope-285}/tests/data/hello2.wasm +0 -0
  329. {diffoscope-284 → diffoscope-285}/tests/data/html_expected_diff +0 -0
  330. {diffoscope-284 → diffoscope-285}/tests/data/html_text_expected_diff +0 -0
  331. {diffoscope-284 → diffoscope-285}/tests/data/icc_expected_diff +0 -0
  332. {diffoscope-284 → diffoscope-285}/tests/data/ico_image_expected_diff +0 -0
  333. {diffoscope-284 → diffoscope-285}/tests/data/ico_image_meta_expected_diff +0 -0
  334. {diffoscope-284 → diffoscope-285}/tests/data/ico_image_meta_expected_diff_v2 +0 -0
  335. {diffoscope-284 → diffoscope-285}/tests/data/ignore_readelf_errors_expected_diff +0 -0
  336. {diffoscope-284 → diffoscope-285}/tests/data/inv_expected_diff +0 -0
  337. {diffoscope-284 → diffoscope-285}/tests/data/ipk_metadata_expected_diff +0 -0
  338. {diffoscope-284 → diffoscope-285}/tests/data/iso9660_content_expected_diff +0 -0
  339. {diffoscope-284 → diffoscope-285}/tests/data/iso9660_content_expected_diff_cdrtools +0 -0
  340. {diffoscope-284 → diffoscope-285}/tests/data/iso9660_rockridge_expected_diff +0 -0
  341. {diffoscope-284 → diffoscope-285}/tests/data/iso9660_rockridge_expected_diff_cdrtools +0 -0
  342. {diffoscope-284 → diffoscope-285}/tests/data/javap_14_class_expected_diff +0 -0
  343. {diffoscope-284 → diffoscope-285}/tests/data/javap_class_expected_diff +0 -0
  344. {diffoscope-284 → diffoscope-285}/tests/data/javascript_expected_diff +0 -0
  345. {diffoscope-284 → diffoscope-285}/tests/data/jmod_zipdetails_expected_diff +0 -0
  346. {diffoscope-284 → diffoscope-285}/tests/data/jmod_zipinfo_expected_diff +0 -0
  347. {diffoscope-284 → diffoscope-285}/tests/data/jpeg_image_expected_diff +0 -0
  348. {diffoscope-284 → diffoscope-285}/tests/data/jpeg_image_meta_expected_diff +0 -0
  349. {diffoscope-284 → diffoscope-285}/tests/data/json_expected_diff +0 -0
  350. {diffoscope-284 → diffoscope-285}/tests/data/json_expected_ordering_diff +0 -0
  351. {diffoscope-284 → diffoscope-285}/tests/data/kbx_expected_diff +0 -0
  352. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__cstring +0 -0
  353. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__eh_frame +0 -0
  354. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__la_symbol_ptr +0 -0
  355. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__stub_helper +0 -0
  356. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__stub_helper_16 +0 -0
  357. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__stubs +0 -0
  358. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__stubs_16 +0 -0
  359. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__text +0 -0
  360. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__text_16 +0 -0
  361. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff__unwind_info +0 -0
  362. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_dyn_relocations +0 -0
  363. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_dyn_symbols +0 -0
  364. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_file_headers +0 -0
  365. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_needed_libs +0 -0
  366. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_relocations +0 -0
  367. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_strings +0 -0
  368. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_symbols +0 -0
  369. {diffoscope-284 → diffoscope-285}/tests/data/macho_llvm_expected_diff_symbols_llvm_11 +0 -0
  370. {diffoscope-284 → diffoscope-285}/tests/data/macho_obj_ghidra_expected_diff_main +0 -0
  371. {diffoscope-284 → diffoscope-285}/tests/data/macho_obj_radare2_expected_diff_main +0 -0
  372. {diffoscope-284 → diffoscope-285}/tests/data/macho_obj_radare2_expected_diff_printf +0 -0
  373. {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff__cstring +0 -0
  374. {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff__data +0 -0
  375. {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff__text +0 -0
  376. {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff_headers +0 -0
  377. {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff_indirect_symbols +0 -0
  378. {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff_libraries +0 -0
  379. {diffoscope-284 → diffoscope-285}/tests/data/macho_otool_expected_diff_strings +0 -0
  380. {diffoscope-284 → diffoscope-285}/tests/data/mo_charsets_expected_diff +0 -0
  381. {diffoscope-284 → diffoscope-285}/tests/data/mo_expected_diff +0 -0
  382. {diffoscope-284 → diffoscope-285}/tests/data/mozzip_zipinfo_expected_diff +0 -0
  383. {diffoscope-284 → diffoscope-285}/tests/data/mp3_expected_diff +0 -0
  384. {diffoscope-284 → diffoscope-285}/tests/data/no-perms.tar +0 -0
  385. {diffoscope-284 → diffoscope-285}/tests/data/ocaml_expected_diff +0 -0
  386. {diffoscope-284 → diffoscope-285}/tests/data/odt_expected_diff +0 -0
  387. {diffoscope-284 → diffoscope-285}/tests/data/ogg_expected_diff +0 -0
  388. {diffoscope-284 → diffoscope-285}/tests/data/openssh_pub_key_expected_diff_12 +0 -0
  389. {diffoscope-284 → diffoscope-285}/tests/data/openssh_pub_key_expected_diff_23 +0 -0
  390. {diffoscope-284 → diffoscope-285}/tests/data/order1a.json +0 -0
  391. {diffoscope-284 → diffoscope-285}/tests/data/order1b.json +0 -0
  392. {diffoscope-284 → diffoscope-285}/tests/data/output.colored.txt +0 -0
  393. {diffoscope-284 → diffoscope-285}/tests/data/output.json +0 -0
  394. {diffoscope-284 → diffoscope-285}/tests/data/output.md +0 -0
  395. {diffoscope-284 → diffoscope-285}/tests/data/output.rst +0 -0
  396. {diffoscope-284 → diffoscope-285}/tests/data/output.txt +0 -0
  397. {diffoscope-284 → diffoscope-285}/tests/data/output_expected_363.html +0 -0
  398. {diffoscope-284 → diffoscope-285}/tests/data/output_expected_372.html +0 -0
  399. {diffoscope-284 → diffoscope-285}/tests/data/output_regression_875281.html +0 -0
  400. {diffoscope-284 → diffoscope-285}/tests/data/pcap_expected_diff +0 -0
  401. {diffoscope-284 → diffoscope-285}/tests/data/pdf_annotations_expected_diff +0 -0
  402. {diffoscope-284 → diffoscope-285}/tests/data/pdf_metadata_expected_diff +0 -0
  403. {diffoscope-284 → diffoscope-285}/tests/data/pdf_text_expected_diff +0 -0
  404. {diffoscope-284 → diffoscope-285}/tests/data/pe_expected_diff +0 -0
  405. {diffoscope-284 → diffoscope-285}/tests/data/pgp_expected_diff +0 -0
  406. {diffoscope-284 → diffoscope-285}/tests/data/pgp_signature_expected_diff +0 -0
  407. {diffoscope-284 → diffoscope-285}/tests/data/pgp_signed_expected_diff +0 -0
  408. {diffoscope-284 → diffoscope-285}/tests/data/png_expected_diff +0 -0
  409. {diffoscope-284 → diffoscope-285}/tests/data/ppu_expected_diff +0 -0
  410. {diffoscope-284 → diffoscope-285}/tests/data/procyon_class_expected_diff +0 -0
  411. {diffoscope-284 → diffoscope-285}/tests/data/ps_internal_expected_diff +0 -0
  412. {diffoscope-284 → diffoscope-285}/tests/data/ps_text_expected_diff +0 -0
  413. {diffoscope-284 → diffoscope-285}/tests/data/pyc_expected_diff +0 -0
  414. {diffoscope-284 → diffoscope-285}/tests/data/quine.gz +0 -0
  415. {diffoscope-284 → diffoscope-285}/tests/data/quine.zip +0 -0
  416. {diffoscope-284 → diffoscope-285}/tests/data/quine_a.deb +0 -0
  417. {diffoscope-284 → diffoscope-285}/tests/data/quine_b.deb +0 -0
  418. {diffoscope-284 → diffoscope-285}/tests/data/quine_deb_expected_diff +0 -0
  419. {diffoscope-284 → diffoscope-285}/tests/data/quine_expected_diff +0 -0
  420. {diffoscope-284 → diffoscope-285}/tests/data/rdb_expected_diff +0 -0
  421. {diffoscope-284 → diffoscope-285}/tests/data/rds_expected_diff +0 -0
  422. {diffoscope-284 → diffoscope-285}/tests/data/resources1.arsc +0 -0
  423. {diffoscope-284 → diffoscope-285}/tests/data/resources2.arsc +0 -0
  424. {diffoscope-284 → diffoscope-285}/tests/data/rlib_armap_expected_diff +0 -0
  425. {diffoscope-284 → diffoscope-285}/tests/data/rlib_elf_expected_diff +0 -0
  426. {diffoscope-284 → diffoscope-285}/tests/data/rlib_llvm_dis_expected_diff +0 -0
  427. {diffoscope-284 → diffoscope-285}/tests/data/rlib_llvm_dis_expected_diff_10 +0 -0
  428. {diffoscope-284 → diffoscope-285}/tests/data/rlib_llvm_dis_expected_diff_15 +0 -0
  429. {diffoscope-284 → diffoscope-285}/tests/data/rlib_llvm_dis_expected_diff_16 +0 -0
  430. {diffoscope-284 → diffoscope-285}/tests/data/rlib_llvm_dis_expected_diff_5 +0 -0
  431. {diffoscope-284 → diffoscope-285}/tests/data/rlib_llvm_dis_expected_diff_7 +0 -0
  432. {diffoscope-284 → diffoscope-285}/tests/data/rpm_fallback_expected_diff +0 -0
  433. {diffoscope-284 → diffoscope-285}/tests/data/rpm_header_expected_diff +0 -0
  434. {diffoscope-284 → diffoscope-285}/tests/data/rpm_listing_expected_diff +0 -0
  435. {diffoscope-284 → diffoscope-285}/tests/data/salsa-issue-363.diff.json +0 -0
  436. {diffoscope-284 → diffoscope-285}/tests/data/salsa-issue-372.diff.json +0 -0
  437. {diffoscope-284 → diffoscope-285}/tests/data/sqlite3_expected_diff +0 -0
  438. {diffoscope-284 → diffoscope-285}/tests/data/squashfs_root_expected_diff +0 -0
  439. {diffoscope-284 → diffoscope-285}/tests/data/squashfs_superblock_expected_diff +0 -0
  440. {diffoscope-284 → diffoscope-285}/tests/data/symlink_expected_destination_diff +0 -0
  441. {diffoscope-284 → diffoscope-285}/tests/data/symlink_expected_diff +0 -0
  442. {diffoscope-284 → diffoscope-285}/tests/data/tar_listing_expected_diff +0 -0
  443. {diffoscope-284 → diffoscope-285}/tests/data/test1-le64.cache-4 +0 -0
  444. {diffoscope-284 → diffoscope-285}/tests/data/test1.a +0 -0
  445. {diffoscope-284 → diffoscope-285}/tests/data/test1.apk +0 -0
  446. {diffoscope-284 → diffoscope-285}/tests/data/test1.asc +0 -0
  447. {diffoscope-284 → diffoscope-285}/tests/data/test1.binwalk +0 -0
  448. {diffoscope-284 → diffoscope-285}/tests/data/test1.buildinfo +0 -0
  449. {diffoscope-284 → diffoscope-285}/tests/data/test1.bz2 +0 -0
  450. {diffoscope-284 → diffoscope-285}/tests/data/test1.changes +0 -0
  451. {diffoscope-284 → diffoscope-285}/tests/data/test1.cpio +0 -0
  452. {diffoscope-284 → diffoscope-285}/tests/data/test1.db +0 -0
  453. {diffoscope-284 → diffoscope-285}/tests/data/test1.deb +0 -0
  454. {diffoscope-284 → diffoscope-285}/tests/data/test1.debsrc.tar.gz +0 -0
  455. {diffoscope-284 → diffoscope-285}/tests/data/test1.debug +0 -0
  456. {diffoscope-284 → diffoscope-285}/tests/data/test1.dex +0 -0
  457. {diffoscope-284 → diffoscope-285}/tests/data/test1.disk.gz +0 -0
  458. {diffoscope-284 → diffoscope-285}/tests/data/test1.docx +0 -0
  459. {diffoscope-284 → diffoscope-285}/tests/data/test1.dsc +0 -0
  460. {diffoscope-284 → diffoscope-285}/tests/data/test1.epub +0 -0
  461. {diffoscope-284 → diffoscope-285}/tests/data/test1.exe +0 -0
  462. {diffoscope-284 → diffoscope-285}/tests/data/test1.ext4 +0 -0
  463. {diffoscope-284 → diffoscope-285}/tests/data/test1.fat12 +0 -0
  464. {diffoscope-284 → diffoscope-285}/tests/data/test1.fat16 +0 -0
  465. {diffoscope-284 → diffoscope-285}/tests/data/test1.fat32 +0 -0
  466. {diffoscope-284 → diffoscope-285}/tests/data/test1.gif +0 -0
  467. {diffoscope-284 → diffoscope-285}/tests/data/test1.git-index +0 -0
  468. {diffoscope-284 → diffoscope-285}/tests/data/test1.gnumeric +0 -0
  469. {diffoscope-284 → diffoscope-285}/tests/data/test1.gz +0 -0
  470. {diffoscope-284 → diffoscope-285}/tests/data/test1.hi +0 -0
  471. {diffoscope-284 → diffoscope-285}/tests/data/test1.html +0 -0
  472. {diffoscope-284 → diffoscope-285}/tests/data/test1.icc +0 -0
  473. {diffoscope-284 → diffoscope-285}/tests/data/test1.ico +0 -0
  474. {diffoscope-284 → diffoscope-285}/tests/data/test1.inv +0 -0
  475. {diffoscope-284 → diffoscope-285}/tests/data/test1.iso +0 -0
  476. {diffoscope-284 → diffoscope-285}/tests/data/test1.jmod +0 -0
  477. {diffoscope-284 → diffoscope-285}/tests/data/test1.jpg +0 -0
  478. {diffoscope-284 → diffoscope-285}/tests/data/test1.js +0 -0
  479. {diffoscope-284 → diffoscope-285}/tests/data/test1.json +0 -0
  480. {diffoscope-284 → diffoscope-285}/tests/data/test1.kbx +0 -0
  481. {diffoscope-284 → diffoscope-285}/tests/data/test1.lz4 +0 -0
  482. {diffoscope-284 → diffoscope-285}/tests/data/test1.lzip +0 -0
  483. {diffoscope-284 → diffoscope-285}/tests/data/test1.macho +0 -0
  484. {diffoscope-284 → diffoscope-285}/tests/data/test1.mo +0 -0
  485. {diffoscope-284 → diffoscope-285}/tests/data/test1.mozzip +0 -0
  486. {diffoscope-284 → diffoscope-285}/tests/data/test1.mp3 +0 -0
  487. {diffoscope-284 → diffoscope-285}/tests/data/test1.o +0 -0
  488. {diffoscope-284 → diffoscope-285}/tests/data/test1.odt +0 -0
  489. {diffoscope-284 → diffoscope-285}/tests/data/test1.ogg +0 -0
  490. {diffoscope-284 → diffoscope-285}/tests/data/test1.pcap +0 -0
  491. {diffoscope-284 → diffoscope-285}/tests/data/test1.pdf +0 -0
  492. {diffoscope-284 → diffoscope-285}/tests/data/test1.pgp +0 -0
  493. {diffoscope-284 → diffoscope-285}/tests/data/test1.png +0 -0
  494. {diffoscope-284 → diffoscope-285}/tests/data/test1.ppu +0 -0
  495. {diffoscope-284 → diffoscope-285}/tests/data/test1.ps +0 -0
  496. {diffoscope-284 → diffoscope-285}/tests/data/test1.pyc-renamed +0 -0
  497. {diffoscope-284 → diffoscope-285}/tests/data/test1.rdb +0 -0
  498. {diffoscope-284 → diffoscope-285}/tests/data/test1.rdx +0 -0
  499. {diffoscope-284 → diffoscope-285}/tests/data/test1.rlib +0 -0
  500. {diffoscope-284 → diffoscope-285}/tests/data/test1.rpm +0 -0
  501. {diffoscope-284 → diffoscope-285}/tests/data/test1.sqlite3 +0 -0
  502. {diffoscope-284 → diffoscope-285}/tests/data/test1.squashfs +0 -0
  503. {diffoscope-284 → diffoscope-285}/tests/data/test1.tar +0 -0
  504. {diffoscope-284 → diffoscope-285}/tests/data/test1.xml +0 -0
  505. {diffoscope-284 → diffoscope-285}/tests/data/test1.xsb +0 -0
  506. {diffoscope-284 → diffoscope-285}/tests/data/test1.xz +0 -0
  507. {diffoscope-284 → diffoscope-285}/tests/data/test1.zip +0 -0
  508. {diffoscope-284 → diffoscope-285}/tests/data/test1_meta.ico +0 -0
  509. {diffoscope-284 → diffoscope-285}/tests/data/test1_meta.jpg +0 -0
  510. {diffoscope-284 → diffoscope-285}/tests/data/test1_root.squashfs +0 -0
  511. {diffoscope-284 → diffoscope-285}/tests/data/test1_signed.pgp +0 -0
  512. {diffoscope-284 → diffoscope-285}/tests/data/test2-le64.cache-4 +0 -0
  513. {diffoscope-284 → diffoscope-285}/tests/data/test2.a +0 -0
  514. {diffoscope-284 → diffoscope-285}/tests/data/test2.apk +0 -0
  515. {diffoscope-284 → diffoscope-285}/tests/data/test2.asc +0 -0
  516. {diffoscope-284 → diffoscope-285}/tests/data/test2.binwalk +0 -0
  517. {diffoscope-284 → diffoscope-285}/tests/data/test2.buildinfo +0 -0
  518. {diffoscope-284 → diffoscope-285}/tests/data/test2.bz2 +0 -0
  519. {diffoscope-284 → diffoscope-285}/tests/data/test2.changes +0 -0
  520. {diffoscope-284 → diffoscope-285}/tests/data/test2.cpio +0 -0
  521. {diffoscope-284 → diffoscope-285}/tests/data/test2.db +0 -0
  522. {diffoscope-284 → diffoscope-285}/tests/data/test2.deb +0 -0
  523. {diffoscope-284 → diffoscope-285}/tests/data/test2.debsrc.tar.gz +0 -0
  524. {diffoscope-284 → diffoscope-285}/tests/data/test2.debug +0 -0
  525. {diffoscope-284 → diffoscope-285}/tests/data/test2.dex +0 -0
  526. {diffoscope-284 → diffoscope-285}/tests/data/test2.disk.gz +0 -0
  527. {diffoscope-284 → diffoscope-285}/tests/data/test2.docx +0 -0
  528. {diffoscope-284 → diffoscope-285}/tests/data/test2.dsc +0 -0
  529. {diffoscope-284 → diffoscope-285}/tests/data/test2.epub +0 -0
  530. {diffoscope-284 → diffoscope-285}/tests/data/test2.exe +0 -0
  531. {diffoscope-284 → diffoscope-285}/tests/data/test2.ext4 +0 -0
  532. {diffoscope-284 → diffoscope-285}/tests/data/test2.fat12 +0 -0
  533. {diffoscope-284 → diffoscope-285}/tests/data/test2.gif +0 -0
  534. {diffoscope-284 → diffoscope-285}/tests/data/test2.git-index +0 -0
  535. {diffoscope-284 → diffoscope-285}/tests/data/test2.gnumeric +0 -0
  536. {diffoscope-284 → diffoscope-285}/tests/data/test2.gz +0 -0
  537. {diffoscope-284 → diffoscope-285}/tests/data/test2.hi +0 -0
  538. {diffoscope-284 → diffoscope-285}/tests/data/test2.html +0 -0
  539. {diffoscope-284 → diffoscope-285}/tests/data/test2.icc +0 -0
  540. {diffoscope-284 → diffoscope-285}/tests/data/test2.ico +0 -0
  541. {diffoscope-284 → diffoscope-285}/tests/data/test2.inv +0 -0
  542. {diffoscope-284 → diffoscope-285}/tests/data/test2.iso +0 -0
  543. {diffoscope-284 → diffoscope-285}/tests/data/test2.jmod +0 -0
  544. {diffoscope-284 → diffoscope-285}/tests/data/test2.jpg +0 -0
  545. {diffoscope-284 → diffoscope-285}/tests/data/test2.js +0 -0
  546. {diffoscope-284 → diffoscope-285}/tests/data/test2.json +0 -0
  547. {diffoscope-284 → diffoscope-285}/tests/data/test2.kbx +0 -0
  548. {diffoscope-284 → diffoscope-285}/tests/data/test2.lz4 +0 -0
  549. {diffoscope-284 → diffoscope-285}/tests/data/test2.lzip +0 -0
  550. {diffoscope-284 → diffoscope-285}/tests/data/test2.macho +0 -0
  551. {diffoscope-284 → diffoscope-285}/tests/data/test2.mo +0 -0
  552. {diffoscope-284 → diffoscope-285}/tests/data/test2.mozzip +0 -0
  553. {diffoscope-284 → diffoscope-285}/tests/data/test2.mp3 +0 -0
  554. {diffoscope-284 → diffoscope-285}/tests/data/test2.o +0 -0
  555. {diffoscope-284 → diffoscope-285}/tests/data/test2.odt +0 -0
  556. {diffoscope-284 → diffoscope-285}/tests/data/test2.ogg +0 -0
  557. {diffoscope-284 → diffoscope-285}/tests/data/test2.pcap +0 -0
  558. {diffoscope-284 → diffoscope-285}/tests/data/test2.pdf +0 -0
  559. {diffoscope-284 → diffoscope-285}/tests/data/test2.pgp +0 -0
  560. {diffoscope-284 → diffoscope-285}/tests/data/test2.png +0 -0
  561. {diffoscope-284 → diffoscope-285}/tests/data/test2.ppu +0 -0
  562. {diffoscope-284 → diffoscope-285}/tests/data/test2.ps +0 -0
  563. {diffoscope-284 → diffoscope-285}/tests/data/test2.pyc-renamed +0 -0
  564. {diffoscope-284 → diffoscope-285}/tests/data/test2.rdb +0 -0
  565. {diffoscope-284 → diffoscope-285}/tests/data/test2.rdx +0 -0
  566. {diffoscope-284 → diffoscope-285}/tests/data/test2.rlib +0 -0
  567. {diffoscope-284 → diffoscope-285}/tests/data/test2.rpm +0 -0
  568. {diffoscope-284 → diffoscope-285}/tests/data/test2.sqlite3 +0 -0
  569. {diffoscope-284 → diffoscope-285}/tests/data/test2.squashfs +0 -0
  570. {diffoscope-284 → diffoscope-285}/tests/data/test2.tar +0 -0
  571. {diffoscope-284 → diffoscope-285}/tests/data/test2.xml +0 -0
  572. {diffoscope-284 → diffoscope-285}/tests/data/test2.xsb +0 -0
  573. {diffoscope-284 → diffoscope-285}/tests/data/test2.xz +0 -0
  574. {diffoscope-284 → diffoscope-285}/tests/data/test2.zip +0 -0
  575. {diffoscope-284 → diffoscope-285}/tests/data/test2_meta.ico +0 -0
  576. {diffoscope-284 → diffoscope-285}/tests/data/test2_meta.jpg +0 -0
  577. {diffoscope-284 → diffoscope-285}/tests/data/test2_root.squashfs +0 -0
  578. {diffoscope-284 → diffoscope-285}/tests/data/test2_signed.pgp +0 -0
  579. {diffoscope-284 → diffoscope-285}/tests/data/test3.apk +0 -0
  580. {diffoscope-284 → diffoscope-285}/tests/data/test3.changes +0 -0
  581. {diffoscope-284 → diffoscope-285}/tests/data/test3.gif +0 -0
  582. {diffoscope-284 → diffoscope-285}/tests/data/test3.pdf +0 -0
  583. {diffoscope-284 → diffoscope-285}/tests/data/test3.xml +0 -0
  584. {diffoscope-284 → diffoscope-285}/tests/data/test3.xz +0 -0
  585. {diffoscope-284 → diffoscope-285}/tests/data/test3.zip +0 -0
  586. {diffoscope-284 → diffoscope-285}/tests/data/test4.changes +0 -0
  587. {diffoscope-284 → diffoscope-285}/tests/data/test4.gif +0 -0
  588. {diffoscope-284 → diffoscope-285}/tests/data/test4.pdf +0 -0
  589. {diffoscope-284 → diffoscope-285}/tests/data/test4.xml +0 -0
  590. {diffoscope-284 → diffoscope-285}/tests/data/test4.xz +0 -0
  591. {diffoscope-284 → diffoscope-285}/tests/data/test5.changes +0 -0
  592. {diffoscope-284 → diffoscope-285}/tests/data/test_comment1.zip +0 -0
  593. {diffoscope-284 → diffoscope-285}/tests/data/test_comment2.zip +0 -0
  594. {diffoscope-284 → diffoscope-285}/tests/data/test_directory_a_b_diff +0 -0
  595. {diffoscope-284 → diffoscope-285}/tests/data/test_directory_b_a_diff +0 -0
  596. {diffoscope-284 → diffoscope-285}/tests/data/test_directory_device_diff +0 -0
  597. {diffoscope-284 → diffoscope-285}/tests/data/test_directory_file_diff +0 -0
  598. {diffoscope-284 → diffoscope-285}/tests/data/test_directory_symlink_diff +0 -0
  599. {diffoscope-284 → diffoscope-285}/tests/data/test_invalid.json +0 -0
  600. {diffoscope-284 → diffoscope-285}/tests/data/test_invalid.xml +0 -0
  601. {diffoscope-284 → diffoscope-285}/tests/data/test_iso8859-1.mo +0 -0
  602. {diffoscope-284 → diffoscope-285}/tests/data/test_no_charset.mo +0 -0
  603. {diffoscope-284 → diffoscope-285}/tests/data/test_openssh_pub_key1.pub +0 -0
  604. {diffoscope-284 → diffoscope-285}/tests/data/test_openssh_pub_key2.pub +0 -0
  605. {diffoscope-284 → diffoscope-285}/tests/data/test_openssh_pub_key3.pub +0 -0
  606. {diffoscope-284 → diffoscope-285}/tests/data/test_weird_non_unicode_chars1.pdf +0 -0
  607. {diffoscope-284 → diffoscope-285}/tests/data/test_weird_non_unicode_chars2.pdf +0 -0
  608. {diffoscope-284 → diffoscope-285}/tests/data/test_xml_expected_diff +0 -0
  609. {diffoscope-284 → diffoscope-285}/tests/data/test_xml_ordering_differences_diff +0 -0
  610. {diffoscope-284 → diffoscope-285}/tests/data/text_ascii1 +0 -0
  611. {diffoscope-284 → diffoscope-285}/tests/data/text_ascii2 +0 -0
  612. {diffoscope-284 → diffoscope-285}/tests/data/text_ascii_expected_diff +0 -0
  613. {diffoscope-284 → diffoscope-285}/tests/data/text_iso8859 +0 -0
  614. {diffoscope-284 → diffoscope-285}/tests/data/text_iso8859_expected_diff +0 -0
  615. {diffoscope-284 → diffoscope-285}/tests/data/text_order1 +0 -0
  616. {diffoscope-284 → diffoscope-285}/tests/data/text_order2 +0 -0
  617. {diffoscope-284 → diffoscope-285}/tests/data/text_order_expected_diff +0 -0
  618. {diffoscope-284 → diffoscope-285}/tests/data/text_sevenzmetadata_expected_diff +0 -0
  619. {diffoscope-284 → diffoscope-285}/tests/data/text_unicode1 +0 -0
  620. {diffoscope-284 → diffoscope-285}/tests/data/text_unicode2 +0 -0
  621. {diffoscope-284 → diffoscope-285}/tests/data/text_unicode_binary_fallback +0 -0
  622. {diffoscope-284 → diffoscope-285}/tests/data/text_unicode_expected_diff +0 -0
  623. {diffoscope-284 → diffoscope-285}/tests/data/text_xz_list +0 -0
  624. {diffoscope-284 → diffoscope-285}/tests/data/ttf_expected_diff +0 -0
  625. {diffoscope-284 → diffoscope-285}/tests/data/ttf_ttx_expected_diff +0 -0
  626. {diffoscope-284 → diffoscope-285}/tests/data/uimage_expected_diff +0 -0
  627. {diffoscope-284 → diffoscope-285}/tests/data/uimage_expected_diff_pre_5_41 +0 -0
  628. {diffoscope-284 → diffoscope-285}/tests/data/uki_expected_diff +0 -0
  629. {diffoscope-284 → diffoscope-285}/tests/data/wasm_expected_diff +0 -0
  630. {diffoscope-284 → diffoscope-285}/tests/data/xsb_expected_diff +0 -0
  631. {diffoscope-284 → diffoscope-285}/tests/data/zip2_zipdetails_expected_diff +0 -0
  632. {diffoscope-284 → diffoscope-285}/tests/data/zip_bsdtar_expected_diff +0 -0
  633. {diffoscope-284 → diffoscope-285}/tests/data/zip_zipdetails_expected_diff +0 -0
  634. {diffoscope-284 → diffoscope-285}/tests/data/zip_zipinfo_expected_diff +0 -0
  635. {diffoscope-284 → diffoscope-285}/tests/test_diff_mask.py +0 -0
  636. {diffoscope-284 → diffoscope-285}/tests/test_difference.py +0 -0
  637. {diffoscope-284 → diffoscope-285}/tests/test_excludes.py +0 -0
  638. {diffoscope-284 → diffoscope-285}/tests/test_presenters.py +0 -0
  639. {diffoscope-284 → diffoscope-285}/tests/test_progress.py +0 -0
  640. {diffoscope-284 → diffoscope-285}/tests/test_quines.py +0 -0
  641. {diffoscope-284 → diffoscope-285}/tests/test_readers.py +0 -0
  642. {diffoscope-284 → diffoscope-285}/tests/test_source.py +0 -0
  643. {diffoscope-284 → diffoscope-285}/tests/test_tools.py +0 -0
  644. {diffoscope-284 → diffoscope-285}/tests/test_versions.py +0 -0
  645. {diffoscope-284 → diffoscope-285}/tests/utils/__init__.py +0 -0
  646. {diffoscope-284 → diffoscope-285}/tests/utils/data.py +0 -0
  647. {diffoscope-284 → diffoscope-285}/tests/utils/nonexisting.py +0 -0
  648. {diffoscope-284 → diffoscope-285}/tests/utils/tools.py +0 -0
  649. {diffoscope-284 → diffoscope-285}/tests/utils/versions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: diffoscope
3
- Version: 284
3
+ Version: 285
4
4
  Summary: in-depth comparison of files, archives, and directories
5
5
  Home-page: https://diffoscope.org/
6
6
  Author: Diffoscope developers
@@ -17,4 +17,4 @@
17
17
  # You should have received a copy of the GNU General Public License
18
18
  # along with diffoscope. If not, see <https://www.gnu.org/licenses/>.
19
19
 
20
- VERSION = "284"
20
+ VERSION = "285"
@@ -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 _:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: diffoscope
3
- Version: 284
3
+ Version: 285
4
4
  Summary: in-depth comparison of files, archives, and directories
5
5
  Home-page: https://diffoscope.org/
6
6
  Author: Diffoscope developers
@@ -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