summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorXuehai Pan <XuehaiPan@pku.edu.cn>2022-12-10 16:43:32 +0800
committerXuehai Pan <XuehaiPan@pku.edu.cn>2022-12-10 16:55:06 +0800
commit1398e40df157101c5e8308dda45ff6d7be348c65 (patch)
treea486a6ab4293775a286a928d519369d952591902 /tests
parenteed5d059a8ea5442266be892322f8815074800a5 (diff)
downloadisort-1398e40df157101c5e8308dda45ff6d7be348c65.tar.gz
Test `black` compatibility for `.pyi` type stub files
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/profiles/test_black.py86
1 files changed, 82 insertions, 4 deletions
diff --git a/tests/unit/profiles/test_black.py b/tests/unit/profiles/test_black.py
index 05444b8c..a4bb2d52 100644
--- a/tests/unit/profiles/test_black.py
+++ b/tests/unit/profiles/test_black.py
@@ -19,20 +19,25 @@ def black_format(code: str, is_pyi: bool = False, line_length: int = 88) -> str:
return code
-def black_test(code: str, expected_output: str = ""):
+def black_test(code: str, expected_output: str = "", *, is_pyi: bool = False, **config_kwargs):
"""Tests that the given code:
- Behaves the same when formatted multiple times with isort.
- Agrees with black formatting.
- Matches the desired output or itself if none is provided.
"""
expected_output = expected_output or code
+ config_kwargs = {
+ "extension": "pyi" if is_pyi else None,
+ "profile": "black",
+ **config_kwargs,
+ }
# output should stay consistent over multiple runs
- output = isort.code(code, profile="black")
- assert output == isort.code(code, profile="black")
+ output = isort.code(code, **config_kwargs)
+ assert output == isort.code(code, **config_kwargs)
# output should agree with black
- black_output = black_format(output)
+ black_output = black_format(output, is_pyi=is_pyi)
assert output == black_output
# output should match expected output
@@ -369,3 +374,76 @@ if TYPE_CHECKING:
DEFAULT_LINE_LENGTH = 88
""",
)
+
+
+def test_black_pyi_file():
+ """Test consistent code formatting between isort and black for `.pyi` files.
+
+ black only allows no more than two consecutive blank lines in a `.pyi` file.
+ """
+
+ black_test(
+ """# comment
+
+
+import math
+
+from typing import Sequence
+import numpy as np
+
+
+def add(a: np.ndarray, b: np.ndarray) -> np.ndarray:
+ ...
+
+
+def sub(a: np.ndarray, b: np.ndarray) -> np.ndarray:
+ ...
+""",
+ """# comment
+
+
+import math
+from typing import Sequence
+
+import numpy as np
+
+
+def add(a: np.ndarray, b: np.ndarray) -> np.ndarray:
+ ...
+
+
+def sub(a: np.ndarray, b: np.ndarray) -> np.ndarray:
+ ...
+""",
+ is_pyi=False,
+ lines_before_imports=2,
+ lines_after_imports=2,
+ )
+
+ black_test(
+ """# comment
+
+
+import math
+
+from typing import Sequence
+import numpy as np
+
+
+def add(a: np.ndarray, b: np.ndarray) -> np.ndarray: ...
+def sub(a: np.ndarray, b: np.ndarray) -> np.ndarray: ...
+""",
+ """# comment
+
+import math
+from typing import Sequence
+
+import numpy as np
+
+def add(a: np.ndarray, b: np.ndarray) -> np.ndarray: ...
+def sub(a: np.ndarray, b: np.ndarray) -> np.ndarray: ...
+""",
+ is_pyi=True,
+ lines_before_imports=2, # will be ignored
+ lines_after_imports=2, # will be ignored
+ )