summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTamas Szabo <szabtam@gmail.com>2020-10-04 20:58:29 +0300
committerTamas Szabo <szabtam@gmail.com>2020-10-04 20:58:29 +0300
commit2c796710b3f44f0858291a4754bb07ea3f99be02 (patch)
tree2e6b683beb822ac60213039e3cb0cc9541d06d50 /tests
parent7aa7d1f603301c7fae7bf6a7839b00b5c6b75d6f (diff)
downloadisort-2c796710b3f44f0858291a4754bb07ea3f99be02.tar.gz
Improve test coverage api.py.
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/test_api.py51
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():