From 29b7ace850b2bbde2f6e1fc5bbebab9588e813b4 Mon Sep 17 00:00:00 2001 From: Antti Kaihola <13725+akaihola@users.noreply.github.com> Date: Mon, 30 Dec 2024 18:02:44 +0200 Subject: [PATCH] test: failing test for dropping changes for a non-ascii file --- ...est_main_drop_changes_on_unedited_lines.py | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/darker/tests/test_main_drop_changes_on_unedited_lines.py diff --git a/src/darker/tests/test_main_drop_changes_on_unedited_lines.py b/src/darker/tests/test_main_drop_changes_on_unedited_lines.py new file mode 100644 index 000000000..291099932 --- /dev/null +++ b/src/darker/tests/test_main_drop_changes_on_unedited_lines.py @@ -0,0 +1,63 @@ +"""Tests for `__main__._drop_changes_on_unedited_lines`""" + +from pathlib import Path +from unittest.mock import Mock + +import pytest + +from darker.__main__ import _drop_changes_on_unedited_lines +from darkgraylib.utils import TextDocument + + +@pytest.mark.kwparametrize( + dict( + content=TextDocument("s = 'reformat'\n"), + new_chunks=[(1, ("s = 'reformat'",), ('s = "reformat"',))], + ), + dict( + content=TextDocument('s = "keep"\n'), + new_chunks=[(1, ('s = "keep"',), ('s = "keep"',))], + ), + dict( + content=TextDocument("""l1 = "first line"\nl2 = 'second line'\n"""), + new_chunks=[ + ( + 1, + ('l1 = "first line"', "l2 = 'second line'"), + ('l1 = "first line"', 'l2 = "second line"'), + ) + ], + ), + dict( + content=TextDocument( + "# coding: iso-8859-5\n# б\x85б\x86\n", encoding="iso-8859-5" + ), + new_chunks=[ + ( + 1, + ("# coding: iso-8859-5", "# б\x85б\x86"), + ("# coding: iso-8859-5", "# б\x85б\x86"), + ) + ], + ), +) +def test_unchanged_content(tmp_path, content, new_chunks): + """Test that no reformats make it through for unmodified files.""" + # A mock object that always returns an empty list of changed lines + edited_linenums_differ = Mock() + edited_linenums_differ.revision_vs_lines = Mock(return_value=[]) + # The expected result is the same as the input content, unmodified + expect = content + + result = _drop_changes_on_unedited_lines( + new_chunks, + abspath_in_rev2=tmp_path / "file.py", + relpath_in_repo=Path("file.py"), + edited_linenums_differ=edited_linenums_differ, + rev2_content=content, + rev2_isorted=content, + has_isort_changes=False, + has_fstring_changes=False, + ) + + assert result == expect