diff-cover 10.4.0__tar.gz → 10.4.1__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 (159) hide show
  1. {diff_cover-10.4.0 → diff_cover-10.4.1}/PKG-INFO +1 -1
  2. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/snippets.py +20 -3
  3. {diff_cover-10.4.0 → diff_cover-10.4.1}/pyproject.toml +1 -1
  4. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_snippets.py +39 -0
  5. {diff_cover-10.4.0 → diff_cover-10.4.1}/LICENSE +0 -0
  6. {diff_cover-10.4.0 → diff_cover-10.4.1}/NOTICE +0 -0
  7. {diff_cover-10.4.0 → diff_cover-10.4.1}/README.rst +0 -0
  8. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/__init__.py +0 -0
  9. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/command_runner.py +0 -0
  10. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/config_parser.py +0 -0
  11. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/diff_cover_tool.py +0 -0
  12. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/diff_quality_tool.py +0 -0
  13. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/diff_reporter.py +0 -0
  14. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/git_diff.py +0 -0
  15. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/git_path.py +0 -0
  16. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/hook.py +0 -0
  17. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/hookspecs.py +0 -0
  18. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/report_generator.py +0 -0
  19. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/templates/console_coverage_report.txt +0 -0
  20. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/templates/console_quality_report.txt +0 -0
  21. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/templates/external_style.css +0 -0
  22. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/templates/github_coverage_annotations.txt +0 -0
  23. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/templates/html_coverage_report.html +0 -0
  24. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/templates/html_quality_report.html +0 -0
  25. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/templates/markdown_coverage_report.md +0 -0
  26. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/templates/markdown_quality_report.md +0 -0
  27. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/templates/snippet_content.html +0 -0
  28. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/templates/snippet_content.md +0 -0
  29. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/templates/snippet_content.txt +0 -0
  30. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/templates/snippet_style.html +0 -0
  31. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/util.py +0 -0
  32. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/violationsreporters/__init__.py +0 -0
  33. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/violationsreporters/base.py +0 -0
  34. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/violationsreporters/java_violations_reporter.py +0 -0
  35. {diff_cover-10.4.0 → diff_cover-10.4.1}/diff_cover/violationsreporters/violations_reporter.py +0 -0
  36. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/__init__.py +0 -0
  37. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/conftest.py +0 -0
  38. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/add_console_report.txt +0 -0
  39. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/add_html_report.html +0 -0
  40. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/add_json_report.json +0 -0
  41. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/add_json_report_float.json +0 -0
  42. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/add_markdown_report.md +0 -0
  43. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/changed_console_report.txt +0 -0
  44. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/changed_html_report.html +0 -0
  45. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/coverage.xml +0 -0
  46. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/coverage1.xml +0 -0
  47. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/coverage2.xml +0 -0
  48. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/coverage_missing_lines.xml +0 -0
  49. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/cpp_functions_console_report.txt +0 -0
  50. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/cpp_functions_coverage.lcov +0 -0
  51. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/delete_console_report.txt +0 -0
  52. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/delete_html_report.html +0 -0
  53. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/dotnet_coverage.xml +0 -0
  54. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/empty.txt +0 -0
  55. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/empty_pycodestyle_violations.txt +0 -0
  56. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/expand_console_report.txt +0 -0
  57. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/external_css_html_report.html +0 -0
  58. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/external_style.css +0 -0
  59. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_add.txt +0 -0
  60. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_changed.txt +0 -0
  61. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_code_dupe.txt +0 -0
  62. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_cpp.txt +0 -0
  63. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_cpp_functions.txt +0 -0
  64. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_delete.txt +0 -0
  65. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_dotnet.txt +0 -0
  66. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_external_css.txt +0 -0
  67. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_lua.txt +0 -0
  68. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_moved.txt +0 -0
  69. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_mult.txt +0 -0
  70. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_python.txt +0 -0
  71. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_subdir.txt +0 -0
  72. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_typescript.txt +0 -0
  73. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_typescript_branches.txt +0 -0
  74. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_unicode.txt +0 -0
  75. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_violations.txt +0 -0
  76. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/git_diff_violations_two_files.txt +0 -0
  77. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/hello.py +0 -0
  78. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/hi.py +0 -0
  79. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/html_report.html +0 -0
  80. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/html_report_empty.html +0 -0
  81. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/html_report_one_snippet.html +0 -0
  82. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/html_report_two_snippets.html +0 -0
  83. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/lcov.info +0 -0
  84. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/lua_console_report.txt +0 -0
  85. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/luacoverage.xml +0 -0
  86. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/markdown_report_one_snippet.md +0 -0
  87. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/markdown_report_two_snippets.md +0 -0
  88. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/moved_console_report.txt +0 -0
  89. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/moved_coverage.xml +0 -0
  90. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/moved_html_report.html +0 -0
  91. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/mult_inputs_console_report.txt +0 -0
  92. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/mult_inputs_html_report.html +0 -0
  93. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pycodestyle_report.txt +0 -0
  94. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pycodestyle_violations_report.html +0 -0
  95. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pycodestyle_violations_report.json +0 -0
  96. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pycodestyle_violations_report.md +0 -0
  97. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pycodestyle_violations_report.txt +0 -0
  98. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pycodestyle_violations_report_external_css.html +0 -0
  99. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pycodestyle_violations_report_float.json +0 -0
  100. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pyflakes_two_files.txt +0 -0
  101. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pyflakes_violations_report.html +0 -0
  102. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pyflakes_violations_report.txt +0 -0
  103. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pylint_dupe.txt +0 -0
  104. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pylint_dupe_violations_report.txt +0 -0
  105. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pylint_report.txt +0 -0
  106. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pylint_violations_console_report.txt +0 -0
  107. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pylint_violations_report.html +0 -0
  108. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pylint_violations_report.txt +0 -0
  109. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/pylintrc +0 -0
  110. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/real_cpp_console_report.txt +0 -0
  111. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/real_cpp_coverage.lcov +0 -0
  112. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/real_python_console_report.txt +0 -0
  113. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/real_python_coverage.lcov +0 -0
  114. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/real_typescript_console_report.txt +0 -0
  115. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/real_typescript_coverage.lcov +0 -0
  116. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/show_uncovered_lines_console.txt +0 -0
  117. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet.css +0 -0
  118. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_8859.py +0 -0
  119. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_arabic_output.html +0 -0
  120. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_default.html +0 -0
  121. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_invalid_violations.html +0 -0
  122. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_list.html +0 -0
  123. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_list.md +0 -0
  124. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_list2.md +0 -0
  125. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_list3.md +0 -0
  126. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_no_filename_ext.html +0 -0
  127. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_src.py +0 -0
  128. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_src2.cpp +0 -0
  129. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_src3.cpp +0 -0
  130. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_unicode.html +0 -0
  131. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_unicode.py +0 -0
  132. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/snippet_unicode_html_output.html +0 -0
  133. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/subdir_coverage_console_report.txt +0 -0
  134. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/subdir_coverage_html_report.html +0 -0
  135. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/test_src.txt +0 -0
  136. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/typescript_branches_console_report.txt +0 -0
  137. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/typescript_branches_coverage.lcov +0 -0
  138. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/unicode_console_report.txt +0 -0
  139. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/unicode_coverage.xml +0 -0
  140. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/unicode_html_report.html +0 -0
  141. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/unicode_test_src.txt +0 -0
  142. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/fixtures/violations_test_file.py +0 -0
  143. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/helpers.py +0 -0
  144. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/snippet_list_unicode.html +0 -0
  145. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_clover_violations_reporter/test.xml +0 -0
  146. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_clover_violations_reporter.py +0 -0
  147. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_config_parser.py +0 -0
  148. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_diff_cover_main.py +0 -0
  149. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_diff_cover_tool.py +0 -0
  150. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_diff_quality_main.py +0 -0
  151. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_diff_reporter.py +0 -0
  152. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_git_diff.py +0 -0
  153. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_git_diff_file.py +0 -0
  154. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_git_path.py +0 -0
  155. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_integration.py +0 -0
  156. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_java_violations_reporter.py +0 -0
  157. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_report_generator.py +0 -0
  158. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_util.py +0 -0
  159. {diff_cover-10.4.0 → diff_cover-10.4.1}/tests/test_violations_reporter.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: diff_cover
3
- Version: 10.4.0
3
+ Version: 10.4.1
4
4
  Summary: Run coverage and linting reports on diffs
5
5
  License: Apache-2.0
6
6
  Author: See Contributors
@@ -17,6 +17,17 @@ from pygments.util import ClassNotFound
17
17
 
18
18
  from diff_cover.git_path import GitPathTool
19
19
 
20
+ # Below this, chardet is essentially guessing. Short files with only a
21
+ # handful of non-ascii bytes decode cleanly under every single byte
22
+ # encoding, so which one comes back is down to the detector's internals
23
+ # (chardet 7 answers MacRoman at 0.16 confidence for latin-1 text that
24
+ # chardet 5 called ISO-8859-1 at 0.73).
25
+ MIN_DETECTION_CONFIDENCE = 0.5
26
+
27
+ # What to try before an unconfident guess. cp1252 is the de facto default
28
+ # for undeclared western text and is a superset of latin-1 in practice.
29
+ FALLBACK_ENCODING = "cp1252"
30
+
20
31
 
21
32
  class Snippet:
22
33
  """
@@ -284,9 +295,15 @@ class Snippet:
284
295
  contents = src_file.read()
285
296
 
286
297
  if isinstance(contents, bytes):
287
- encoding = chardet.detect(contents).get("encoding", "utf-8")
288
- with contextlib.suppress(UnicodeDecodeError):
289
- contents = contents.decode(encoding)
298
+ detected = chardet.detect(contents)
299
+ candidates = [detected.get("encoding") or "utf-8"]
300
+ if (detected.get("confidence") or 0) < MIN_DETECTION_CONFIDENCE:
301
+ candidates.insert(0, FALLBACK_ENCODING)
302
+
303
+ for encoding in candidates:
304
+ with contextlib.suppress(UnicodeDecodeError, LookupError):
305
+ contents = contents.decode(encoding)
306
+ break
290
307
 
291
308
  if isinstance(contents, bytes):
292
309
  # We failed to decode the file.
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "diff_cover"
3
- version = "10.4.0"
3
+ version = "10.4.1"
4
4
  description = "Run coverage and linting reports on diffs"
5
5
  authors = ["See Contributors"]
6
6
  homepage = "https://github.com/Bachmann1234/diff-cover"
@@ -429,3 +429,42 @@ def test_latin_one_undeclared(tmp_path):
429
429
 
430
430
  contents = Snippet.load_contents(str(file))
431
431
  assert contents == "I am some latin 1 Â encoded text"
432
+
433
+
434
+ def test_unconfident_detection_falls_back(tmp_path, mocker):
435
+ # Which single byte encoding chardet picks for a short file varies by
436
+ # version (5 said ISO-8859-1, 6 WINDOWS-1252, 7 MacRoman) so pin the
437
+ # low confidence branch rather than depending on the installed one.
438
+ mocker.patch(
439
+ "diff_cover.snippets.chardet.detect",
440
+ return_value={"encoding": "MacRoman", "confidence": 0.16},
441
+ )
442
+ file = tmp_path / "tmp"
443
+ file.write_bytes("I am some latin 1 Â encoded text".encode("latin1"))
444
+
445
+ contents = Snippet.load_contents(str(file))
446
+ assert contents == "I am some latin 1 Â encoded text"
447
+
448
+
449
+ def test_confident_detection_is_trusted(tmp_path, mocker):
450
+ mocker.patch(
451
+ "diff_cover.snippets.chardet.detect",
452
+ return_value={"encoding": "MacRoman", "confidence": 0.99},
453
+ )
454
+ file = tmp_path / "tmp"
455
+ file.write_bytes("I am some latin 1 Â encoded text".encode("latin1"))
456
+
457
+ contents = Snippet.load_contents(str(file))
458
+ assert contents == "I am some latin 1 ¬ encoded text"
459
+
460
+
461
+ def test_detection_returns_no_encoding(tmp_path, mocker):
462
+ mocker.patch(
463
+ "diff_cover.snippets.chardet.detect",
464
+ return_value={"encoding": None, "confidence": None},
465
+ )
466
+ file = tmp_path / "tmp"
467
+ file.write_bytes("I am some latin 1 Â encoded text".encode("latin1"))
468
+
469
+ contents = Snippet.load_contents(str(file))
470
+ assert contents == "I am some latin 1 Â encoded text"
File without changes
File without changes
File without changes