[Python-checkins] r52713 - sandbox/trunk/import_in_py/importer.py sandbox/trunk/import_in_py/test_importer.py
brett.cannon
python-checkins at python.org
Thu Nov 9 23:46:38 CET 2006
Author: brett.cannon
Date: Thu Nov 9 23:46:38 2006
New Revision: 52713
Modified:
sandbox/trunk/import_in_py/importer.py
sandbox/trunk/import_in_py/test_importer.py
Log:
Add tests to verify that the returned module from the Import class is correct
based on whether fromlist is set or not.
Modified: sandbox/trunk/import_in_py/importer.py
==============================================================================
--- sandbox/trunk/import_in_py/importer.py (original)
+++ sandbox/trunk/import_in_py/importer.py Thu Nov 9 23:46:38 2006
@@ -73,10 +73,6 @@
XXX Need to Implement
---------------------
-#. Importing module within a package.
- + One package deep.
- + Arbitrarily deep.
-#. fromlist semantics.
#. Relative imports.
+ Py3K semantics.
+ 2.x semantics.
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 Thu Nov 9 23:46:38 2006
@@ -663,60 +663,69 @@
"""
+ def setUp(self):
+ ImportHelper.setUp(self)
+ self.parent_name = '<parent>'
+ self.child_name = '<child>'
+ self.full_child_name = '.'.join([self.parent_name, self.child_name])
+ self.parent_module = mock_importer.MockModule(self.parent_name)
+ self.child_module = mock_importer.MockModule(self.full_child_name)
+ setattr(self.parent_module, self.child_name, self.child_module)
+
def test_sys_module_return(self):
# A module found in sys.modules should be returned immediately.
- test_module = '<test>'
- sys.modules[test_module] = test_module
- module = self.importer.import_('<test>')
- del sys.modules[test_module]
- self.failUnlessEqual(module, test_module)
+ sys.modules[self.parent_name] = self.parent_module
+ module = self.importer.import_(self.parent_name)
+ self.failUnless(module is self.parent_module)
def test_parent_missing(self):
# An import should fail if a parent module cannot be found.
- sys.modules['a.b'] = 'a.b'
- self.failUnlessRaises(ImportError, self.importer, 'a.b')
+ sys.modules[self.full_child_name] = self.child_module
+ self.failUnlessRaises(ImportError, self.importer, self.full_child_name)
def test_parent_imported(self):
# If a parent module is already imported, importing a child module
# should work (along with setting the attribute on the parent for the
# child module).
+ delattr(self.parent_module, self.child_name)
succeed_importer = mock_importer.SucceedImporter()
sys.meta_path.append(succeed_importer)
- parent_name = '<parent>'
- parent_module = mock_importer.MockModule(parent_name)
- sys.modules[parent_name] = parent_module
- child_name = 'module'
- full_child_name = parent_name + '.' + child_name
- self.importer(full_child_name)
- self.failUnless(hasattr(parent_module, child_name))
- self.failUnlessEqual(getattr(parent_module, child_name),
- sys.modules[full_child_name])
-
+ sys.modules[self.parent_name] = self.parent_module
+ self.importer(self.full_child_name)
+ self.failUnless(hasattr(self.parent_module, self.child_name))
+ self.failUnlessEqual(getattr(self.parent_module, self.child_name),
+ sys.modules[self.full_child_name])
+
def test_parent_not_imported(self):
# If a parent module is not imported yet, it should be imported.
# The attribute on the parent module for the child module should also
# be set.
+ delattr(self.parent_module, self.child_name)
succeed_importer = mock_importer.SucceedImporter()
sys.meta_path.append(succeed_importer)
- parent_name = '<parent>'
- child_name = '<child>'
- full_child_name = '.'.join([parent_name, child_name])
- self.importer(full_child_name)
- self.failUnless(parent_name in sys.modules)
- self.failUnless(full_child_name in sys.modules)
- self.failUnless(hasattr(sys.modules[parent_name], child_name))
- self.failUnlessEqual(getattr(sys.modules[parent_name], child_name),
- sys.modules[full_child_name])
+ self.importer(self.full_child_name)
+ self.failUnless(self.parent_name in sys.modules)
+ self.failUnless(self.full_child_name in sys.modules)
+ self.failUnless(hasattr(sys.modules[self.parent_name], self.child_name))
+ self.failUnlessEqual(getattr(sys.modules[self.parent_name],
+ self.child_name),
+ sys.modules[self.full_child_name])
def test_empty_fromlist(self):
# An empty fromlist means that the root module is returned.
- # XXX
- pass
+ sys.modules[self.parent_name] = self.parent_module
+ sys.modules[self.full_child_name] = self.child_module
+ module = self.importer(self.full_child_name)
+ self.failUnless(module is self.parent_module)
def test_nonempty_fromlist(self):
# A fromlist with values should return the specified module.
- # XXX
- pass
+ sys.modules[self.parent_name] = self.parent_module
+ sys.modules[self.full_child_name] = self.child_module
+ test_attr_name = 'test_attr'
+ setattr(self.child_module, test_attr_name, None)
+ module = self.importer(self.full_child_name, fromlist=[test_attr_name])
+ self.failUnless(module is self.child_module)
class ImportMetaPathTests(ImportHelper):
More information about the Python-checkins
mailing list