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