Skip to content

Commit 1d56065

Browse files
authored
Merge pull request #223 from seddonym/unit-tests-import-scanner-no-private-methods
Adapt / remove unit tests of private methods
2 parents ce0d32f + 4b02c7c commit 1d56065

1 file changed

Lines changed: 55 additions & 109 deletions

File tree

tests/unit/adaptors/test_importscanner.py

Lines changed: 55 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from typing import Set
22

3+
34
import pytest # type: ignore
45

5-
from textwrap import dedent
6-
from grimp.adaptors.importscanner import ImportScanner, _ImportedObject
6+
from grimp.adaptors.importscanner import ImportScanner
77
from grimp.application.ports.modulefinder import FoundPackage, ModuleFile
88
from grimp.domain.valueobjects import DirectImport, Module
99
from tests.adaptors.filesystem import FakeFileSystem
@@ -78,6 +78,59 @@ def test_absolute_imports(include_external_packages, expected_result):
7878
assert expected_result == result
7979

8080

81+
def test_non_ascii():
82+
blue_module = Module("mypackage.blue")
83+
non_ascii_modules = {Module("mypackage.ñon_ascii_变"), Module("mypackage.ñon_ascii_变.ラーメン")}
84+
file_system = FakeFileSystem(
85+
content_map={
86+
"/path/to/mypackage/blue.py": """
87+
from ñon_ascii_变 import *
88+
from . import ñon_ascii_变
89+
import mypackage.ñon_ascii_变.ラーメン
90+
""",
91+
"/path/to/mypackage/ñon_ascii_变/__init__.py": "",
92+
"/path/to/mypackage/ñon_ascii_变/ラーメン.py": "",
93+
},
94+
)
95+
96+
import_scanner = ImportScanner(
97+
found_packages={
98+
FoundPackage(
99+
name="mypackage",
100+
directory="/path/to/mypackage",
101+
module_files=frozenset(
102+
_modules_to_module_files({blue_module} | non_ascii_modules)
103+
),
104+
)
105+
},
106+
file_system=file_system,
107+
include_external_packages=True,
108+
)
109+
110+
result = import_scanner.scan_for_imports(blue_module)
111+
112+
assert result == {
113+
DirectImport(
114+
importer="mypackage.blue",
115+
imported="ñon_ascii_变",
116+
line_number=1,
117+
line_contents="from ñon_ascii_变 import *",
118+
),
119+
DirectImport(
120+
importer="mypackage.blue",
121+
imported="mypackage.ñon_ascii_变",
122+
line_number=2,
123+
line_contents="from . import ñon_ascii_变",
124+
),
125+
DirectImport(
126+
importer="mypackage.blue",
127+
imported="mypackage.ñon_ascii_变.ラーメン",
128+
line_number=3,
129+
line_contents="import mypackage.ñon_ascii_变.ラーメン",
130+
),
131+
}
132+
133+
81134
def test_single_namespace_package_portion():
82135
MODULE_FOO = Module("namespace.foo")
83136
MODULE_ONE = Module("namespace.foo.one")
@@ -843,110 +896,3 @@ def test_exclude_type_checking_imports(
843896
def _modules_to_module_files(modules: Set[Module]) -> Set[ModuleFile]:
844897
some_mtime = 100933.4
845898
return {ModuleFile(module=module, mtime=some_mtime) for module in modules}
846-
847-
848-
class TestGetRawImportedObjects:
849-
def test_get_raw_imports(self):
850-
module_contents = dedent(
851-
"""\
852-
import a
853-
if TYPE_CHECKING:
854-
import b
855-
from c import d
856-
from .e import f
857-
from . import g
858-
from .. import h
859-
from i import *
860-
from ñon_ascii_变 import *
861-
from . import ñon_ascii_变
862-
import ñon_ascii_变.ラーメン
863-
"""
864-
)
865-
raw_imported_objects = ImportScanner._get_raw_imported_objects(module_contents)
866-
867-
assert raw_imported_objects == {
868-
_ImportedObject(
869-
name="a",
870-
line_number=1,
871-
line_contents="import a",
872-
typechecking_only=False,
873-
),
874-
_ImportedObject(
875-
name="b",
876-
line_number=3,
877-
line_contents="import b",
878-
typechecking_only=True,
879-
),
880-
_ImportedObject(
881-
name="c.d",
882-
line_number=4,
883-
line_contents="from c import d",
884-
typechecking_only=False,
885-
),
886-
_ImportedObject(
887-
name=".e.f",
888-
line_number=5,
889-
line_contents="from .e import f",
890-
typechecking_only=False,
891-
),
892-
_ImportedObject(
893-
name=".g",
894-
line_number=6,
895-
line_contents="from . import g",
896-
typechecking_only=False,
897-
),
898-
_ImportedObject(
899-
name="..h",
900-
line_number=7,
901-
line_contents="from .. import h",
902-
typechecking_only=False,
903-
),
904-
_ImportedObject(
905-
name="i.*",
906-
line_number=8,
907-
line_contents="from i import *",
908-
typechecking_only=False,
909-
),
910-
_ImportedObject(
911-
name="ñon_ascii_变.*",
912-
line_number=9,
913-
line_contents="from ñon_ascii_变 import *",
914-
typechecking_only=False,
915-
),
916-
_ImportedObject(
917-
name=".ñon_ascii_变",
918-
line_number=10,
919-
line_contents="from . import ñon_ascii_变",
920-
typechecking_only=False,
921-
),
922-
_ImportedObject(
923-
name="ñon_ascii_变.ラーメン",
924-
line_number=11,
925-
line_contents="import ñon_ascii_变.ラーメン",
926-
typechecking_only=False,
927-
),
928-
}
929-
930-
931-
@pytest.mark.parametrize(
932-
"is_package,imported_object_name,expected_absolute_imported_object_name",
933-
[
934-
[True, "a.b", "a.b"],
935-
[True, ".a.b", "foo.bar.baz.a.b"],
936-
[True, "..a.b", "foo.bar.a.b"],
937-
[False, "a.b", "a.b"],
938-
[False, ".a.b", "foo.bar.a.b"],
939-
[False, "..a.b", "foo.a.b"],
940-
],
941-
)
942-
def test_get_absolute_imported_object_name(
943-
is_package, imported_object_name, expected_absolute_imported_object_name
944-
):
945-
assert (
946-
ImportScanner._get_absolute_imported_object_name(
947-
module=Module("foo.bar.baz"),
948-
is_package=is_package,
949-
imported_object_name=imported_object_name,
950-
)
951-
== expected_absolute_imported_object_name
952-
)

0 commit comments

Comments
 (0)