Skip to content

Commit 0cfe293

Browse files
committed
Handle include_external_packages=None
1 parent a0564fe commit 0cfe293

2 files changed

Lines changed: 37 additions & 2 deletions

File tree

src/grimp/application/usecases.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ def build_graph(
4949
"mypackage", "anotherpackage", "onemore", include_external_packages=True,
5050
)
5151
"""
52-
5352
file_system: AbstractFileSystem = settings.FILE_SYSTEM
5453

5554
found_packages = _find_packages(
@@ -211,7 +210,9 @@ def _scan_imports(
211210
import_scanner: AbstractImportScanner = settings.IMPORT_SCANNER_CLASS(
212211
file_system=file_system,
213212
found_packages=found_packages,
214-
include_external_packages=include_external_packages,
213+
# Ensure that the passed exclude_type_checking_imports is definitely a boolean,
214+
# otherwise the Rust class will error.
215+
include_external_packages=bool(include_external_packages),
215216
)
216217
return {
217218
module_file: import_scanner.scan_for_imports(

tests/unit/application/test_usecases.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,37 @@ def write(
133133
if supplied_cache_dir is not sentinel.not_supplied:
134134
kwargs["cache_dir"] = supplied_cache_dir
135135
usecases.build_graph("mypackage", **kwargs)
136+
137+
def test_forgives_wrong_type_being_passed_to_include_external_packages(self):
138+
file_system = FakeFileSystem(
139+
contents="""
140+
/path/to/mypackage/
141+
__init__.py
142+
foo/
143+
__init__.py
144+
one.py
145+
""",
146+
content_map={
147+
"/path/to/mypackage/foo/one.py": (
148+
"import mypackage.foo.two.green\nfrom .. import Something"
149+
),
150+
},
151+
)
152+
153+
class FakePackageFinder(BaseFakePackageFinder):
154+
directory_map = {"mypackage": "/path/to/mypackage"}
155+
156+
with override_settings(FILE_SYSTEM=file_system, PACKAGE_FINDER=FakePackageFinder()):
157+
graph = usecases.build_graph(
158+
"mypackage",
159+
# Note: this should be a bool, but we want to tolerate it,
160+
# as Import Linter currently has a bug where it will pass it as None.
161+
include_external_packages=None,
162+
)
163+
164+
expected_modules = {
165+
"mypackage",
166+
"mypackage.foo",
167+
"mypackage.foo.one",
168+
}
169+
assert expected_modules == graph.modules

0 commit comments

Comments
 (0)