Skip to content

Commit 7e2c3ae

Browse files
committed
Refactor TestClosedLayers
1 parent 10d41fb commit 7e2c3ae

1 file changed

Lines changed: 41 additions & 45 deletions

File tree

tests/unit/adaptors/graph/test_layers.py

Lines changed: 41 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import itertools
44
import logging
55
import re
6+
from collections.abc import Iterable
67

78
import pytest # type: ignore
89

@@ -964,17 +965,25 @@ class TestClosedLayers:
964965
@pytest.mark.parametrize(
965966
"importer, imported",
966967
[
967-
("mypackage.highest", "mypackage.low"),
968-
("mypackage.highest", "mypackage.lowest"),
969-
("mypackage.high", "mypackage.low"),
970-
("mypackage.high", "mypackage.lowest"),
968+
("highest", "low"),
969+
("highest", "lowest"),
970+
("high", "low"),
971+
("high", "lowest"),
971972
],
972973
)
973-
def test_cannot_import_through_closed_mid(self, importer, imported):
974-
graph = self._build_legal_graph()
974+
def test_one_closed_layer(self, importer, imported):
975+
layers = [
976+
Layer("highest"),
977+
Layer("high"),
978+
Layer("mid", closed=True),
979+
Layer("low"),
980+
Layer("lowest"),
981+
]
982+
graph = self._build_layers(layers)
983+
975984
graph.add_import(importer=importer, imported=imported)
976985

977-
result = self._analyze(graph)
986+
result = graph.find_illegal_dependencies_for_layers(layers)
978987

979988
assert result == {
980989
PackageDependency.new(
@@ -984,53 +993,40 @@ def test_cannot_import_through_closed_mid(self, importer, imported):
984993
),
985994
}
986995

987-
def test_cannot_import_through_closed_mid_indirect(self):
988-
graph = self._build_legal_graph()
989-
graph.add_import(importer="mypackage.high", imported="mypackage.other")
990-
graph.add_import(importer="mypackage.other", imported="mypackage.low")
996+
def test_indirect_import_cannot_bypass_closed_layer(self):
997+
layers = [
998+
Layer("high"),
999+
Layer("mid", closed=True),
1000+
Layer("low"),
1001+
]
1002+
graph = self._build_layers(layers)
9911003

992-
result = self._analyze(graph)
1004+
graph.add_module("other")
1005+
graph.add_import(importer="high", imported="other")
1006+
graph.add_import(importer="other", imported="low")
1007+
1008+
result = graph.find_illegal_dependencies_for_layers(layers)
9931009

9941010
assert result == {
9951011
PackageDependency.new(
996-
importer="mypackage.high",
997-
imported="mypackage.low",
998-
routes={
999-
Route.single_chained("mypackage.high", "mypackage.other", "mypackage.low")
1000-
},
1012+
importer="high",
1013+
imported="low",
1014+
routes={Route.single_chained("high", "other", "low")},
10011015
),
10021016
}
10031017

1004-
def _build_legal_graph(self):
1018+
def _build_layers(self, layers: Iterable[Layer]):
10051019
graph = ImportGraph()
1006-
for module in (
1007-
"mypackage",
1008-
"mypackage.highest",
1009-
"mypackage.high",
1010-
"mypackage.mid",
1011-
"mypackage.low",
1012-
"mypackage.lowest",
1013-
"mypackage.other",
1014-
):
1020+
1021+
modules = []
1022+
for layer in layers:
1023+
assert len(layer.module_tails) == 1
1024+
module = list(layer.module_tails)[0]
10151025
graph.add_module(module)
1026+
modules.append(module)
10161027

1017-
# Add some 'legal' imports that respect the layering
1018-
graph.add_import(importer="mypackage.highest", imported="mypackage.high")
1019-
graph.add_import(importer="mypackage.high", imported="mypackage.mid")
1020-
graph.add_import(importer="mypackage.mid", imported="mypackage.low")
1021-
graph.add_import(importer="mypackage.low", imported="mypackage.lowest")
1022-
graph.add_import(importer="mypackage.highest", imported="mypackage.mid")
1023-
graph.add_import(importer="mypackage.mid", imported="mypackage.lowest")
1028+
# Legal imports, from higher layer to immediate lower layer
1029+
for higher_module, lower_module in zip(modules[:-1], modules[1:]):
1030+
graph.add_import(importer=higher_module, imported=lower_module)
10241031

10251032
return graph
1026-
1027-
def _analyze(self, graph: ImportGraph) -> set[PackageDependency]:
1028-
return graph.find_illegal_dependencies_for_layers(
1029-
layers=(
1030-
Layer("mypackage.highest", closed=False),
1031-
Layer("mypackage.high", closed=False),
1032-
Layer("mypackage.mid", closed=True), # Closed layer
1033-
Layer("mypackage.low", closed=False),
1034-
Layer("mypackage.lowest", closed=False),
1035-
),
1036-
)

0 commit comments

Comments
 (0)