diff options
| author | Karen Tracey <kmtracey@gmail.com> | 2010-04-15 18:44:51 +0000 |
|---|---|---|
| committer | Karen Tracey <kmtracey@gmail.com> | 2010-04-15 18:44:51 +0000 |
| commit | 29341aaffc28866e15e11109b26c6446f39cb68d (patch) | |
| tree | 03c1bd6ae14bea9b45203e7be8874624ac63d804 /tests/regressiontests/app_loading | |
| parent | 9ac4d2fc613d76129b0e980a7310321021982a19 (diff) | |
Fixed #13348: Restored ability to load models from apps in eggs. Thanks Ramiro and metzen for pointers on how to find out if a module loaded from an egg has a particular submodule.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12982 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/app_loading')
| -rwxr-xr-x | tests/regressiontests/app_loading/eggs/brokenapp.egg | bin | 0 -> 1605 bytes | |||
| -rwxr-xr-x | tests/regressiontests/app_loading/eggs/modelapp.egg | bin | 0 -> 3347 bytes | |||
| -rwxr-xr-x | tests/regressiontests/app_loading/eggs/nomodelapp.egg | bin | 0 -> 1211 bytes | |||
| -rwxr-xr-x | tests/regressiontests/app_loading/eggs/omelet.egg | bin | 0 -> 9020 bytes | |||
| -rw-r--r-- | tests/regressiontests/app_loading/tests.py | 50 |
5 files changed, 50 insertions, 0 deletions
diff --git a/tests/regressiontests/app_loading/eggs/brokenapp.egg b/tests/regressiontests/app_loading/eggs/brokenapp.egg Binary files differnew file mode 100755 index 0000000000..8aca671598 --- /dev/null +++ b/tests/regressiontests/app_loading/eggs/brokenapp.egg diff --git a/tests/regressiontests/app_loading/eggs/modelapp.egg b/tests/regressiontests/app_loading/eggs/modelapp.egg Binary files differnew file mode 100755 index 0000000000..c2370b5b4c --- /dev/null +++ b/tests/regressiontests/app_loading/eggs/modelapp.egg diff --git a/tests/regressiontests/app_loading/eggs/nomodelapp.egg b/tests/regressiontests/app_loading/eggs/nomodelapp.egg Binary files differnew file mode 100755 index 0000000000..5b8d2170a2 --- /dev/null +++ b/tests/regressiontests/app_loading/eggs/nomodelapp.egg diff --git a/tests/regressiontests/app_loading/eggs/omelet.egg b/tests/regressiontests/app_loading/eggs/omelet.egg Binary files differnew file mode 100755 index 0000000000..bd1c68764b --- /dev/null +++ b/tests/regressiontests/app_loading/eggs/omelet.egg diff --git a/tests/regressiontests/app_loading/tests.py b/tests/regressiontests/app_loading/tests.py index a1273dfeb0..198fa72bcf 100644 --- a/tests/regressiontests/app_loading/tests.py +++ b/tests/regressiontests/app_loading/tests.py @@ -1,8 +1,10 @@ import os import sys import time +from unittest import TestCase from django.conf import Settings +from django.db.models.loading import load_app __test__ = {"API_TESTS": """ Test the globbing of INSTALLED_APPS. @@ -25,3 +27,51 @@ Test the globbing of INSTALLED_APPS. """} +class EggLoadingTest(TestCase): + + def setUp(self): + self.old_path = sys.path + self.egg_dir = '%s/eggs' % os.path.dirname(__file__) + + def tearDown(self): + sys.path = self.old_path + + def test_egg1(self): + """Models module can be loaded from an app in an egg""" + egg_name = '%s/modelapp.egg' % self.egg_dir + sys.path.append(egg_name) + models = load_app('app_with_models') + self.failIf(models is None) + + def test_egg2(self): + """Loading an app from an egg that has no models returns no models (and no error)""" + egg_name = '%s/nomodelapp.egg' % self.egg_dir + sys.path.append(egg_name) + models = load_app('app_no_models') + self.failUnless(models is None) + + def test_egg3(self): + """Models module can be loaded from an app located under an egg's top-level package""" + egg_name = '%s/omelet.egg' % self.egg_dir + sys.path.append(egg_name) + models = load_app('omelet.app_with_models') + self.failIf(models is None) + + def test_egg4(self): + """Loading an app with no models from under the top-level egg package generates no error""" + egg_name = '%s/omelet.egg' % self.egg_dir + sys.path.append(egg_name) + models = load_app('omelet.app_no_models') + self.failUnless(models is None) + + def test_egg5(self): + """Loading an app from an egg that has an import error in its models module raises that error""" + egg_name = '%s/brokenapp.egg' % self.egg_dir + sys.path.append(egg_name) + self.assertRaises(ImportError, load_app, 'broken_app') + try: + load_app('broken_app') + except ImportError, e: + # Make sure the message is indicating the actual + # problem in the broken app. + self.failUnless("modelz" in e.args[0]) |
