diff options
| author | Tamas Szabo <szabtam@gmail.com> | 2020-10-04 20:58:29 +0300 |
|---|---|---|
| committer | Tamas Szabo <szabtam@gmail.com> | 2020-10-04 20:58:29 +0300 |
| commit | 2c796710b3f44f0858291a4754bb07ea3f99be02 (patch) | |
| tree | 2e6b683beb822ac60213039e3cb0cc9541d06d50 /tests | |
| parent | 7aa7d1f603301c7fae7bf6a7839b00b5c6b75d6f (diff) | |
| download | isort-2c796710b3f44f0858291a4754bb07ea3f99be02.tar.gz | |
Improve test coverage api.py.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/unit/test_api.py | 51 |
1 files changed, 39 insertions, 12 deletions
diff --git a/tests/unit/test_api.py b/tests/unit/test_api.py index 1b3ed370..baec283a 100644 --- a/tests/unit/test_api.py +++ b/tests/unit/test_api.py @@ -7,36 +7,63 @@ import pytest from isort import api from isort.settings import Config +imperfect_content = "import b\nimport a\n" +fixed_content = "import a\nimport b\n" +fixed_diff = "\n+import a\n import b\n-import a\n" -def test_sort_file(tmpdir) -> None: + +@pytest.fixture +def imperfect(tmpdir) -> None: + imperfect_file = tmpdir.join("test_needs_changes.py") + imperfect_file.write_text(imperfect_content, "utf8") + return imperfect_file + + +def test_sort_file_with_bad_syntax(tmpdir) -> None: tmp_file = tmpdir.join("test_bad_syntax.py") - tmp_file.write_text("""print('mismathing quotes")""", "utf8") + tmp_file.write_text("""print('mismatching quotes")""", "utf8") with pytest.warns(UserWarning): api.sort_file(tmp_file, atomic=True) with pytest.warns(UserWarning): api.sort_file(tmp_file, atomic=True, write_to_stdout=True) - imperfect = tmpdir.join("test_needs_changes.py") - imperfect.write_text("import b\nimport a\n", "utf8") - api.sort_file(imperfect, write_to_stdout=True, show_diff=True) +def test_sort_file(imperfect) -> None: + assert api.sort_file(imperfect) + assert imperfect.read() == fixed_content + + +def test_sort_file_to_stdout(capsys, imperfect) -> None: + assert api.sort_file(imperfect, write_to_stdout=True) + out, _ = capsys.readouterr() + assert out == fixed_content + + +def test_other_ask_to_apply(imperfect) -> None: # First show diff, but ensure change wont get written by asking to apply # and ensuring answer is no. with patch("isort.format.input", MagicMock(return_value="n")): - api.sort_file(imperfect, show_diff=True, ask_to_apply=True) + assert not api.sort_file(imperfect, ask_to_apply=True) + assert imperfect.read() == imperfect_content - # Then run again, but apply the change without asking - api.sort_file(imperfect, show_diff=True) + # Then run again, but apply the change (answer is yes) + with patch("isort.format.input", MagicMock(return_value="y")): + assert api.sort_file(imperfect, ask_to_apply=True) + assert imperfect.read() == fixed_content -def test_check_file(tmpdir) -> None: +def test_check_file_no_changes(capsys, tmpdir) -> None: perfect = tmpdir.join("test_no_changes.py") perfect.write_text("import a\nimport b\n", "utf8") assert api.check_file(perfect, show_diff=True) + out, _ = capsys.readouterr() + assert not out + - imperfect = tmpdir.join("test_needs_changes.py") - imperfect.write_text("import b\nimport a\n", "utf8") +def test_check_file_with_changes(capsys, imperfect) -> None: assert not api.check_file(imperfect, show_diff=True) + out, _ = capsys.readouterr() + assert fixed_diff in out def test_sorted_imports_multiple_configs() -> None: @@ -48,7 +75,7 @@ def test_diff_stream() -> None: output = StringIO() assert api.sort_stream(StringIO("import b\nimport a\n"), output, show_diff=True) output.seek(0) - assert "import a\n import b\n" in output.read() + assert fixed_diff in output.read() def test_sort_code_string_mixed_newlines(): |
