[Python-checkins] r52682 - sandbox/trunk/import_in_py/test_importer.py

brett.cannon python-checkins at python.org
Wed Nov 8 22:36:57 CET 2006


Author: brett.cannon
Date: Wed Nov  8 22:36:56 2006
New Revision: 52682

Modified:
   sandbox/trunk/import_in_py/test_importer.py
Log:
Add tests to verify that importing a sub-package and a module within a
sub-package works properly.


Modified: sandbox/trunk/import_in_py/test_importer.py
==============================================================================
--- sandbox/trunk/import_in_py/test_importer.py	(original)
+++ sandbox/trunk/import_in_py/test_importer.py	Wed Nov  8 22:36:56 2006
@@ -204,7 +204,11 @@
         else:
             self.pkg_name = '_test_pkg'
         self.pkg_path = os.path.join(self.directory, self.pkg_name)
-        os.mkdir(self.pkg_path)
+        try:
+            os.mkdir(self.pkg_path)
+        except OSError:
+            self.tearDown()
+            os.mkdir(self.pkg_path)
         self.pkg_init_path = os.path.join(self.pkg_path,
                                             '__init__'+self.py_ext)
         with open(self.pkg_init_path, 'w') as pkg_file:
@@ -214,6 +218,20 @@
                                         self.module_name+self.py_ext)
         with open(self.pkg_module_path, 'w') as module_file:
             module_file.write(self.source)
+        self.sub_pkg_tail_name = 'sub_pkg'
+        self.sub_pkg_name = '.'.join([self.pkg_name, self.sub_pkg_tail_name])
+        self.sub_pkg_path = os.path.join(self.pkg_path, self.sub_pkg_tail_name)
+        os.mkdir(self.sub_pkg_path)
+        self.sub_pkg_init_path = os.path.join(self.sub_pkg_path,
+                                                '__init__'+self.py_ext)
+        with open(self.sub_pkg_init_path, 'w') as subpkg_file:
+            subpkg_file.write(self.source)
+        self.sub_pkg_module_name = '.'.join([self.sub_pkg_name,
+                                            self.module_name])
+        self.sub_pkg_module_path = os.path.join(self.sub_pkg_path,
+                                                self.module_name+self.py_ext)
+        with open(self.sub_pkg_module_path, 'w') as submodule_file:
+            submodule_file.write(self.source)
 
     def remove_files(self):
         TestPyPycFiles.remove_files(self)
@@ -226,11 +244,28 @@
         if module.__name__ == self.pkg_name:
             self.failUnlessEqual(module.__file__, self.pkg_init_path)
             self.failUnlessEqual(module.__path__, [self.pkg_path])
+            # Module in top-level package.
             if actual_name and self.pkg_module_name in actual_name:
                 self.failUnless(hasattr(module, self.module_name))
                 sub_module = getattr(module, self.module_name)
                 self.failUnlessEqual(sub_module.__name__, self.pkg_module_name)
+                self.failUnlessEqual(sub_module.__file__, self.pkg_module_path)
                 self.verify_module(sub_module)
+            # Package within top-level package.
+            if actual_name and self.sub_pkg_name in actual_name:
+                self.failUnless(hasattr(module, self.sub_pkg_tail_name))
+                sub_pkg = getattr(module, self.sub_pkg_tail_name)
+                self.failUnlessEqual(sub_pkg.__name__, self.sub_pkg_name)
+                self.failUnlessEqual(sub_pkg.__file__, self.sub_pkg_init_path)
+                self.verify_module(sub_pkg)
+                if actual_name == self.sub_pkg_module_name:
+                    self.failUnless(hasattr(sub_pkg, self.module_name))
+                    sub_module = getattr(sub_pkg, self.module_name)
+                    self.failUnlessEqual(sub_module.__name__,
+                                            self.sub_pkg_module_name)
+                    self.failUnlessEqual(sub_module.__file__,
+                                            self.sub_pkg_module_path)
+                    self.verify_module(sub_module)
         if module.__name__ == self.pkg_module_name:
             self.failUnlessEqual(module.__file__, self.pkg_module_path)
 
@@ -933,6 +968,16 @@
         module = self.import_(self.pkg_module_name)
         self.verify_package(module, self.pkg_module_name)
 
+    def test_sub_package(self):
+        # A package within a package should work.
+        module = self.import_(self.sub_pkg_name)
+        self.verify_package(module, self.sub_pkg_name)
+
+    def test_sub_package_module(self):
+        # A module contained within a sub-package should work.
+        module = self.import_(self.sub_pkg_module_name)
+        self.verify_package(module, self.sub_pkg_module_name)
+
 
 def test_main():
     test_classes = [cls for cls in globals().itervalues()


More information about the Python-checkins mailing list