diff options
| author | Timothy Crosley <timothy.crosley@gmail.com> | 2020-08-23 00:09:37 -0700 |
|---|---|---|
| committer | Timothy Crosley <timothy.crosley@gmail.com> | 2020-08-23 00:09:37 -0700 |
| commit | 180bdf9abc91223eb9d7b9e713ead7451095c5da (patch) | |
| tree | 810a40912008a048765afe83964cfb5d50793781 /tests/unit/test_api.py | |
| parent | 19221a3e3c4e17e51056d1e70cd565b16f149cea (diff) | |
| download | isort-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.py | 55 |
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" |
