summaryrefslogtreecommitdiff
path: root/tests/unit
diff options
context:
space:
mode:
authorTimothy Crosley <timothy.crosley@gmail.com>2021-06-20 19:17:16 -0700
committerTimothy Crosley <timothy.crosley@gmail.com>2021-06-20 19:17:16 -0700
commita1a3aff44a16dca71b288f1a7cd19a039931ee2a (patch)
tree340a664985309946bcb983b52cd68bfcce57a2d1 /tests/unit
parent37dcd467f3b521128ca1dcc87cd1608597b20ade (diff)
downloadisort-a1a3aff44a16dca71b288f1a7cd19a039931ee2a.tar.gz
Implemented #1732: Support for custom sort functions.
Diffstat (limited to 'tests/unit')
-rw-r--r--tests/unit/test_exceptions.py9
-rw-r--r--tests/unit/test_isort.py19
-rw-r--r--tests/unit/test_ticketed_features.py42
3 files changed, 51 insertions, 19 deletions
diff --git a/tests/unit/test_exceptions.py b/tests/unit/test_exceptions.py
index d9eae8bf..2cd17aa1 100644
--- a/tests/unit/test_exceptions.py
+++ b/tests/unit/test_exceptions.py
@@ -58,6 +58,15 @@ class TestProfileDoesNotExist(TestISortError):
assert self.instance.profile == "profile"
+class TestSortingFunctionDoesNotExist(TestISortError):
+ def setup_class(self):
+ self.instance = exceptions.SortingFunctionDoesNotExist("round", ["square", "peg"])
+
+ def test_variables(self):
+ assert self.instance.sort_order == "round"
+ assert self.instance.available_sort_orders == ["square", "peg"]
+
+
class TestLiteralParsingFailure(TestISortError):
def setup_class(self):
self.instance = exceptions.LiteralParsingFailure("x = [", SyntaxError)
diff --git a/tests/unit/test_isort.py b/tests/unit/test_isort.py
index 9593c42c..0599925e 100644
--- a/tests/unit/test_isort.py
+++ b/tests/unit/test_isort.py
@@ -5236,22 +5236,3 @@ def test_find_imports_in_stream() -> None:
test_input = NonSeekableTestStream("import m2\n" "import m1\n" "not_import = 7")
identified_imports = list(map(str, api.find_imports_in_stream(test_input)))
assert identified_imports == [":1 import m2", ":2 import m1"]
-
-
-def test_sort_pythonic() -> None:
- """ Test a plugged-in default python sort with packages/modules containing numbers. """
- test_input = (
- "from bob2.apples2 import aardvark as aardvark2\n"
- "from bob.apples import aardvark \n"
- "import module9\n"
- "import module10\n"
- "import module200\n"
- )
- test_output = isort.code(test_input, sort_order="pythonic")
- assert test_output == (
- "import module10\n"
- "import module200\n"
- "import module9\n"
- "from bob.apples import aardvark\n"
- "from bob2.apples2 import aardvark as aardvark2\n"
- )
diff --git a/tests/unit/test_ticketed_features.py b/tests/unit/test_ticketed_features.py
index a2970053..dde08be6 100644
--- a/tests/unit/test_ticketed_features.py
+++ b/tests/unit/test_ticketed_features.py
@@ -1179,3 +1179,45 @@ from __future__ import absolute_imports
import os
"""
)
+
+
+def test_sort_configurable_sort_issue_1732() -> None:
+ """Test support for pluggable isort sort functions."""
+ test_input = (
+ "from bob2.apples2 import aardvark as aardvark2\n"
+ "from bob.apples import aardvark \n"
+ "import module9\n"
+ "import module10\n"
+ "import module200\n"
+ )
+ assert isort.code(test_input, sort_order="native") == (
+ "import module10\n"
+ "import module200\n"
+ "import module9\n"
+ "from bob.apples import aardvark\n"
+ "from bob2.apples2 import aardvark as aardvark2\n"
+ )
+ assert (
+ isort.code(test_input, sort_order="natural")
+ == isort.code(test_input)
+ == (
+ "import module9\n"
+ "import module10\n"
+ "import module200\n"
+ "from bob2.apples2 import aardvark as aardvark2\n"
+ "from bob.apples import aardvark\n"
+ )
+ )
+ assert (
+ isort.code(test_input, sort_order="natural_plus")
+ == isort.code(test_input)
+ == (
+ "import module9\n"
+ "import module10\n"
+ "import module200\n"
+ "from bob2.apples2 import aardvark as aardvark2\n"
+ "from bob.apples import aardvark\n"
+ )
+ )
+ with pytest.raises(exceptions.SortingFunctionDoesNotExist):
+ isort.code(test_input, sort_order="round")