Fixed #13389 -- Ensured that the app_loading test clears out the app cache at the end of each test, so that it doesn't interact badly with flush and other introspected database commands. Thanks to Karen for the report, and Ramiro Morales for the debugging hints.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@13011 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Russell Keith-Magee 2010-04-21 12:05:15 +00:00
parent b131561112
commit e8eac32901
1 changed files with 11 additions and 2 deletions

View File

@ -1,10 +1,11 @@
import copy
import os import os
import sys import sys
import time import time
from unittest import TestCase from unittest import TestCase
from django.conf import Settings from django.conf import Settings
from django.db.models.loading import load_app from django.db.models.loading import cache, load_app
__test__ = {"API_TESTS": """ __test__ = {"API_TESTS": """
Test the globbing of INSTALLED_APPS. Test the globbing of INSTALLED_APPS.
@ -33,8 +34,16 @@ class EggLoadingTest(TestCase):
self.old_path = sys.path self.old_path = sys.path
self.egg_dir = '%s/eggs' % os.path.dirname(__file__) self.egg_dir = '%s/eggs' % os.path.dirname(__file__)
# This test adds dummy applications to the app cache. These
# need to be removed in order to prevent bad interactions
# with the flush operation in other tests.
self.old_app_models = copy.deepcopy(cache.app_models)
self.old_app_store = copy.deepcopy(cache.app_store)
def tearDown(self): def tearDown(self):
sys.path = self.old_path sys.path = self.old_path
cache.app_models = self.old_app_models
cache.app_store = self.old_app_store
def test_egg1(self): def test_egg1(self):
"""Models module can be loaded from an app in an egg""" """Models module can be loaded from an app in an egg"""
@ -63,7 +72,7 @@ class EggLoadingTest(TestCase):
sys.path.append(egg_name) sys.path.append(egg_name)
models = load_app('omelet.app_no_models') models = load_app('omelet.app_no_models')
self.failUnless(models is None) self.failUnless(models is None)
def test_egg5(self): def test_egg5(self):
"""Loading an app from an egg that has an import error in its models module raises that error""" """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 egg_name = '%s/brokenapp.egg' % self.egg_dir