summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Jagiello <me@kjagiello.com>2020-08-14 15:45:53 +0200
committerKrzysztof Jagiello <me@kjagiello.com>2020-08-14 16:24:25 +0200
commit2a3afd11fbbf1296900411b19a87ea91e0d7fe02 (patch)
treede4ea2c1ad9f40102149eb0bfd839bd31b2c5db4
parentf7c7bdcb1d93b5739ea57859a00962ee2b024bc0 (diff)
downloadisort-2a3afd11fbbf1296900411b19a87ea91e0d7fe02.tar.gz
Fix the first known party path expansion
-rw-r--r--isort/deprecated/finders.py7
-rw-r--r--isort/settings.py7
-rw-r--r--tests/test_isort.py17
3 files changed, 18 insertions, 13 deletions
diff --git a/isort/deprecated/finders.py b/isort/deprecated/finders.py
index f32e9acf..77eb23fa 100644
--- a/isort/deprecated/finders.py
+++ b/isort/deprecated/finders.py
@@ -85,14 +85,13 @@ class KnownPatternFinder(BaseFinder):
regexp = "^" + known_pattern.replace("*", ".*").replace("?", ".?") + "$"
self.known_patterns.append((re.compile(regexp), placement))
- @staticmethod
- def _parse_known_pattern(pattern: str) -> List[str]:
+ def _parse_known_pattern(self, pattern: str) -> List[str]:
"""Expand pattern if identified as a directory and return found sub packages"""
if pattern.endswith(os.path.sep):
patterns = [
filename
- for filename in os.listdir(pattern)
- if os.path.isdir(os.path.join(pattern, filename))
+ for filename in os.listdir(os.path.join(self.config.directory, pattern))
+ if os.path.isdir(os.path.join(self.config.directory, pattern, filename))
]
else:
patterns = [pattern]
diff --git a/isort/settings.py b/isort/settings.py
index 266f55c4..500790be 100644
--- a/isort/settings.py
+++ b/isort/settings.py
@@ -523,14 +523,13 @@ class Config(_Config):
self._section_comments = tuple(f"# {heading}" for heading in self.import_headings.values())
return self._section_comments
- @staticmethod
- def _parse_known_pattern(pattern: str) -> List[str]:
+ def _parse_known_pattern(self, pattern: str) -> List[str]:
"""Expand pattern if identified as a directory and return found sub packages"""
if pattern.endswith(os.path.sep):
patterns = [
filename
- for filename in os.listdir(pattern)
- if os.path.isdir(os.path.join(pattern, filename))
+ for filename in os.listdir(os.path.join(self.directory, pattern))
+ if os.path.isdir(os.path.join(self.directory, pattern, filename))
]
else:
patterns = [pattern]
diff --git a/tests/test_isort.py b/tests/test_isort.py
index 44dc93e6..36260d07 100644
--- a/tests/test_isort.py
+++ b/tests/test_isort.py
@@ -1072,27 +1072,33 @@ def test_thirdy_party_overrides_standard_section() -> None:
assert test_output == "import os\nimport sys\n\nimport profile.test\n"
-def test_known_pattern_path_expansion() -> None:
+def test_known_pattern_path_expansion(tmpdir) -> None:
"""Test to ensure patterns ending with path sep gets expanded
and nested packages treated as known patterns.
"""
+ src_dir = tmpdir.mkdir("src")
+ src_dir.mkdir("foo")
+ src_dir.mkdir("bar")
test_input = (
"from kate_plugin import isort_plugin\n"
"import sys\n"
- "import isort.settings\n"
+ "from foo import settings\n"
+ "import bar\n"
"import this\n"
"import os\n"
)
test_output = isort.code(
code=test_input,
default_section="THIRDPARTY",
- known_first_party=["./", "this", "kate_plugin", "isort"],
+ known_first_party=["src/", "this", "kate_plugin"],
+ directory=str(tmpdir),
)
test_output_old_finder = isort.code(
code=test_input,
default_section="FIRSTPARTY",
old_finders=True,
- known_first_party=["./", "this", "kate_plugin", "isort"],
+ known_first_party=["src/", "this", "kate_plugin"],
+ directory=str(tmpdir),
)
assert (
test_output_old_finder
@@ -1101,8 +1107,9 @@ def test_known_pattern_path_expansion() -> None:
"import os\n"
"import sys\n"
"\n"
- "import isort.settings\n"
+ "import bar\n"
"import this\n"
+ "from foo import settings\n"
"from kate_plugin import isort_plugin\n"
)
)