From 41ccfa15d7f5ab96147e2f44ba6f24dc61611eda Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Tue, 4 May 2010 14:48:43 +0000 Subject: [PATCH] Fixed #13469 -- Cleaned up the test case from r13085, and added some cache cleanup that matters for Python 2.3. Thanks to Karen and Alex for their help. git-svn-id: http://code.djangoproject.com/svn/django/trunk@13095 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/utils/module_loading.py | 59 ++++++------------- 1 file changed, 17 insertions(+), 42 deletions(-) diff --git a/tests/regressiontests/utils/module_loading.py b/tests/regressiontests/utils/module_loading.py index 7b233f8e14..b7df6d68b1 100644 --- a/tests/regressiontests/utils/module_loading.py +++ b/tests/regressiontests/utils/module_loading.py @@ -31,6 +31,15 @@ class EggLoader(TestCase): def tearDown(self): sys.path = self.old_path + sys.path_importer_cache.clear() + + sys.modules.pop('egg_module.sub1.sub2.bad_module', None) + sys.modules.pop('egg_module.sub1.sub2.good_module', None) + sys.modules.pop('egg_module.sub1.sub2', None) + sys.modules.pop('egg_module.sub1', None) + sys.modules.pop('egg_module.bad_module', None) + sys.modules.pop('egg_module.good_module', None) + sys.modules.pop('egg_module', None) def test_shallow_loader(self): "Module existence can be tested inside eggs" @@ -89,51 +98,17 @@ class TestLoader(object): mod.__loader__ = self return mod -class CustomLoader(TestCase): +class CustomLoader(EggLoader): + """The Custom Loader test is exactly the same as the EggLoader, but + it uses a custom defined Loader and Finder that is intentionally + split into two classes. Although the EggLoader combines both functions + into one class, this isn't required. + """ def setUp(self): - self.egg_dir = '%s/eggs' % os.path.dirname(__file__) - self.old_path = sys.path + super(CustomLoader, self).setUp() sys.path_hooks.insert(0, TestFinder) sys.path_importer_cache.clear() def tearDown(self): - sys.path = self.old_path + super(CustomLoader, self).tearDown() sys.path_hooks.pop(0) - - def test_shallow_loader(self): - "Module existence can be tested with a custom loader" - egg_name = '%s/test_egg.egg' % self.egg_dir - sys.path.append(egg_name) - egg_module = import_module('egg_module') - - # An importable child - self.assertTrue(module_has_submodule(egg_module, 'good_module')) - mod = import_module('egg_module.good_module') - self.assertEqual(mod.content, 'Good Module') - - # A child that exists, but will generate an import error if loaded - self.assertTrue(module_has_submodule(egg_module, 'bad_module')) - self.assertRaises(ImportError, import_module, 'egg_module.bad_module') - - # A child that doesn't exist - self.assertFalse(module_has_submodule(egg_module, 'no_such_module')) - self.assertRaises(ImportError, import_module, 'egg_module.no_such_module') - - def test_deep_loader(self): - "Modules existence can be tested deep inside a custom loader" - egg_name = '%s/test_egg.egg' % self.egg_dir - sys.path.append(egg_name) - egg_module = import_module('egg_module.sub1.sub2') - - # An importable child - self.assertTrue(module_has_submodule(egg_module, 'good_module')) - mod = import_module('egg_module.sub1.sub2.good_module') - self.assertEqual(mod.content, 'Deep Good Module') - - # A child that exists, but will generate an import error if loaded - self.assertTrue(module_has_submodule(egg_module, 'bad_module')) - self.assertRaises(ImportError, import_module, 'egg_module.sub1.sub2.bad_module') - - # A child that doesn't exist - self.assertFalse(module_has_submodule(egg_module, 'no_such_module')) - self.assertRaises(ImportError, import_module, 'egg_module.sub1.sub2.no_such_module')