@@ -68,6 +68,87 @@ def test_empty_case(self) -> None:
6868 actual = namespace_pkgs .implicit_namespace_packages (directory .root ())
6969 self .assertEqual (actual , set ())
7070
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+
71152
72153if __name__ == "__main__" :
73154 unittest .main ()
0 commit comments