@@ -68,6 +68,87 @@ def test_empty_case(self) -> None:
68
68
actual = namespace_pkgs .implicit_namespace_packages (directory .root ())
69
69
self .assertEqual (actual , set ())
70
70
71
+ def test_ignores_non_module_files_in_directories (self ) -> None :
72
+ directory = TempDir ()
73
+ directory .add_file ("foo/__init__.pyi" )
74
+ directory .add_file ("foo/py.typed" )
75
+
76
+ actual = namespace_pkgs .implicit_namespace_packages (directory .root ())
77
+ self .assertEqual (actual , set ())
78
+
79
+ def test_parent_child_relationship_of_namespace_pkgs (self ):
80
+ directory = TempDir ()
81
+ directory .add_file ("foo/bar/biff/my_module.py" )
82
+ directory .add_file ("foo/bar/biff/another_module.py" )
83
+
84
+ expected = {
85
+ directory .root () + "/foo" ,
86
+ directory .root () + "/foo/bar" ,
87
+ directory .root () + "/foo/bar/biff" ,
88
+ }
89
+ actual = namespace_pkgs .implicit_namespace_packages (directory .root ())
90
+ self .assertEqual (actual , expected )
91
+
92
+ def test_parent_child_relationship_of_namespace_and_standard_pkgs (self ):
93
+ directory = TempDir ()
94
+ directory .add_file ("foo/bar/biff/__init__.py" )
95
+ directory .add_file ("foo/bar/biff/another_module.py" )
96
+
97
+ expected = {
98
+ directory .root () + "/foo" ,
99
+ directory .root () + "/foo/bar" ,
100
+ }
101
+ actual = namespace_pkgs .implicit_namespace_packages (directory .root ())
102
+ self .assertEqual (actual , expected )
103
+
104
+ def test_parent_child_relationship_of_namespace_and_nested_standard_pkgs (self ):
105
+ directory = TempDir ()
106
+ directory .add_file ("foo/bar/__init__.py" )
107
+ directory .add_file ("foo/bar/biff/another_module.py" )
108
+ directory .add_file ("foo/bar/biff/__init__.py" )
109
+ directory .add_file ("foo/bar/boof/big_module.py" )
110
+ directory .add_file ("foo/bar/boof/__init__.py" )
111
+ directory .add_file ("fim/in_a_ns_pkg.py" )
112
+
113
+ expected = {
114
+ directory .root () + "/foo" ,
115
+ directory .root () + "/fim" ,
116
+ }
117
+ actual = namespace_pkgs .implicit_namespace_packages (directory .root ())
118
+ self .assertEqual (actual , expected )
119
+
120
+ def test_recognized_all_nonstandard_module_types (self ):
121
+ directory = TempDir ()
122
+ directory .add_file ("ayy/my_module.pyc" )
123
+ directory .add_file ("bee/ccc/dee/eee.so" )
124
+ directory .add_file ("eff/jee/aych.pyd" )
125
+
126
+ expected = {
127
+ directory .root () + "/ayy" ,
128
+ directory .root () + "/bee" ,
129
+ directory .root () + "/bee/ccc" ,
130
+ directory .root () + "/bee/ccc/dee" ,
131
+ directory .root () + "/eff" ,
132
+ directory .root () + "/eff/jee" ,
133
+ }
134
+ actual = namespace_pkgs .implicit_namespace_packages (directory .root ())
135
+ self .assertEqual (actual , expected )
136
+
137
+ def test_skips_ignored_directories (self ):
138
+ directory = TempDir ()
139
+ directory .add_file ("foo/boo/my_module.py" )
140
+ directory .add_file ("foo/bar/another_module.py" )
141
+
142
+ expected = {
143
+ directory .root () + "/foo" ,
144
+ directory .root () + "/foo/bar" ,
145
+ }
146
+ actual = namespace_pkgs .implicit_namespace_packages (
147
+ directory .root (),
148
+ ignored_dirnames = [directory .root () + "/foo/boo" ],
149
+ )
150
+ self .assertEqual (actual , expected )
151
+
71
152
72
153
if __name__ == "__main__" :
73
154
unittest .main ()
0 commit comments