mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Fixed #21060 -- Refactored admin's autodiscover method to make it reusable.
We want to be able to use it for instance for discovering `tasks.py` modules inside the INSTALLED_APPS. This commit therefore moves the logic to `autodiscover_modules` method in django.utils.module_loading.
This commit is contained in:
parent
39b49fd339
commit
6feb75129f
6 changed files with 82 additions and 30 deletions
|
@ -6,7 +6,10 @@ import unittest
|
|||
from zipimport import zipimporter
|
||||
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.utils.module_loading import import_by_path, module_has_submodule
|
||||
from django.test import SimpleTestCase
|
||||
from django.test.utils import override_settings
|
||||
from django.utils import six
|
||||
from django.utils.module_loading import autodiscover_modules, import_by_path, module_has_submodule
|
||||
from django.utils._os import upath
|
||||
|
||||
|
||||
|
@ -130,6 +133,32 @@ class ModuleImportTestCase(unittest.TestCase):
|
|||
self.assertIsNotNone(traceback.tb_next.tb_next,
|
||||
'Should have more than the calling frame in the traceback.')
|
||||
|
||||
@override_settings(INSTALLED_APPS=('utils_tests.test_module',))
|
||||
class AutodiscoverModulesTestCase(SimpleTestCase):
|
||||
|
||||
def test_autodiscover_modules_found(self):
|
||||
autodiscover_modules('good_module')
|
||||
|
||||
def test_autodiscover_modules_not_found(self):
|
||||
autodiscover_modules('missing_module')
|
||||
|
||||
def test_autodiscover_modules_found_but_bad_module(self):
|
||||
with six.assertRaisesRegex(self, ImportError, "No module named '?a_package_name_that_does_not_exist'?"):
|
||||
autodiscover_modules('bad_module')
|
||||
|
||||
def test_autodiscover_modules_several_one_bad_module(self):
|
||||
with six.assertRaisesRegex(self, ImportError, "No module named '?a_package_name_that_does_not_exist'?"):
|
||||
autodiscover_modules('good_module', 'bad_module')
|
||||
|
||||
def test_autodiscover_modules_several_found(self):
|
||||
autodiscover_modules('good_module', 'another_good_module')
|
||||
|
||||
def test_validate_registry_keeps_intact(self):
|
||||
from .test_module import site
|
||||
with six.assertRaisesRegex(self, Exception, "Some random exception."):
|
||||
autodiscover_modules('another_bad_module', register_to=site)
|
||||
self.assertEqual(site._registry, {})
|
||||
|
||||
|
||||
class ProxyFinder(object):
|
||||
def __init__(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue