summaryrefslogtreecommitdiff
path: root/tests/unit/test_api.py
diff options
context:
space:
mode:
authorTimothy Crosley <timothy.crosley@gmail.com>2020-08-23 00:09:37 -0700
committerTimothy Crosley <timothy.crosley@gmail.com>2020-08-23 00:09:37 -0700
commit180bdf9abc91223eb9d7b9e713ead7451095c5da (patch)
tree810a40912008a048765afe83964cfb5d50793781 /tests/unit/test_api.py
parent19221a3e3c4e17e51056d1e70cd565b16f149cea (diff)
downloadisort-180bdf9abc91223eb9d7b9e713ead7451095c5da.tar.gz
Start work to separate integration and unit testsseparate-integration-test
Diffstat (limited to 'tests/unit/test_api.py')
-rw-r--r--tests/unit/test_api.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/unit/test_api.py b/tests/unit/test_api.py
new file mode 100644
index 00000000..1b3ed370
--- /dev/null
+++ b/tests/unit/test_api.py
@@ -0,0 +1,55 @@
+"""Tests the isort API module"""
+from io import StringIO
+from unittest.mock import MagicMock, patch
+
+import pytest
+
+from isort import api
+from isort.settings import Config
+
+
+def test_sort_file(tmpdir) -> None:
+ tmp_file = tmpdir.join("test_bad_syntax.py")
+ tmp_file.write_text("""print('mismathing 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)
+
+ # 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)
+
+ # Then run again, but apply the change without asking
+ api.sort_file(imperfect, show_diff=True)
+
+
+def test_check_file(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)
+
+ imperfect = tmpdir.join("test_needs_changes.py")
+ imperfect.write_text("import b\nimport a\n", "utf8")
+ assert not api.check_file(imperfect, show_diff=True)
+
+
+def test_sorted_imports_multiple_configs() -> None:
+ with pytest.raises(ValueError):
+ api.sort_code_string("import os", config=Config(line_length=80), line_length=80)
+
+
+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()
+
+
+def test_sort_code_string_mixed_newlines():
+ assert api.sort_code_string("import A\n\r\nimportA\n\n") == "import A\r\n\r\nimportA\r\n\n"