Commit 0f8f4680 authored by Chris Beaven's avatar Chris Beaven
Browse files

Fixed #15525 -- Custom template tags loading breaks whenever templatetags is a python file

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16703 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 77189afb
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -11,10 +11,16 @@ def module_has_submodule(package, module_name):
        return sys.modules[name] is not None
    except KeyError:
        pass
    try:
        package_path = package.__path__   # No __path__, then not a package.
    except AttributeError:
        # Since the remainder of this function assumes that we're dealing with
        # a package (module with a __path__), so if it's not, then bail here.
        return False
    for finder in sys.meta_path:
        if finder.find_module(name, package.__path__):
        if finder.find_module(name, package_path):
            return True
    for entry in package.__path__:  # No __path__, then not a package.
    for entry in package_path:
        try:
            # Try the cached finder.
            finder = sys.path_importer_cache[entry]
+7 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ class DefaultLoader(unittest.TestCase):
    def test_loader(self):
        "Normal module existence can be tested"
        test_module = import_module('regressiontests.utils.test_module')
        test_no_submodule = import_module(
            'regressiontests.utils.test_no_submodule')

        # An importable child
        self.assertTrue(module_has_submodule(test_module, 'good_module'))
@@ -40,6 +42,11 @@ class DefaultLoader(unittest.TestCase):
        import types  # causes attempted import of regressiontests.utils.types
        self.assertFalse(module_has_submodule(sys.modules['regressiontests.utils'], 'types'))

        # A module which doesn't have a __path__ (so no submodules)
        self.assertFalse(module_has_submodule(test_no_submodule, 'anything'))
        self.assertRaises(ImportError, import_module,
            'regressiontests.utils.test_no_submodule.anything')

class EggLoader(unittest.TestCase):
    def setUp(self):
        self.old_path = sys.path[:]
+1 −0
Original line number Diff line number Diff line
# Used to test for modules which don't have submodules.