1
0
mirror of https://github.com/django/django.git synced 2025-07-04 17:59:13 +00:00

r10902@kevin-kubasiks-macbook: kkubasik | 2009-06-23 06:51:28 -0600

[gsoc2009-testing] Added method to AppCache to flush cache. Also explicitly remove the modeltests.invalid_models app from the windmill test server, since the invalid models prevent startup


git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/test-improvements@11091 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Kevin Kubasik 2009-06-23 12:55:05 +00:00
parent b6b4a21cf5
commit fdedd33bd4
2 changed files with 42 additions and 7 deletions

View File

@ -178,6 +178,25 @@ class AppCache(object):
continue
model_dict[model_name] = model
def clear_apps(self):
"""Clears cache so on next call, it will be reloaded."""
self.loaded = False
self.write_lock.acquire()
self.handled.clear()
try:
if self.loaded:
return
for app_name in settings.INSTALLED_APPS:
if app_name in self.handled:
continue
self.load_app(app_name, True)
if not self.nesting_level:
for app_name in self.postponed:
self.load_app(app_name)
self.loaded = True
finally:
self.write_lock.release()
cache = AppCache()
# These methods were always module level, so are kept that way for backwards

View File

@ -35,7 +35,7 @@ ALWAYS_INSTALLED_APPS = [
]
ALWAYS_INSTALLED_APPS.extend(('%s.%s' % (REGRESSION_TESTS_DIR_NAME,a) for a in os.listdir(REGRESSION_TEST_DIR) if not('.py' in a or '.svn' in a) ))
#ALWAYS_INSTALLED_APPS.extend(('%s.%s' % (REGRESSION_TESTS_DIR_NAME,a) for a in os.listdir(REGRESSION_TEST_DIR) if not('.py' in a or '.svn' in a) ))
def get_test_models():
models = []
@ -127,6 +127,7 @@ def django_tests(verbosity, interactive, test_labels):
# (This import statement is intentionally delayed until after we
# access settings because of the USE_I18N dependency.)
from django.db.models.loading import get_apps, load_app
#print settings.INSTALLED_APPS
get_apps()
# Load all the test model apps.
@ -174,21 +175,36 @@ def django_tests(verbosity, interactive, test_labels):
failures = tr.run_tests(test_labels, verbosity=verbosity, interactive=interactive, extra_tests=extra_tests)
#from windmill.authoring import djangotest
from time import sleep
if do_windmill:
#from django.test import windmill_tests as djangotest
import types
import logging
from windmill.conf import global_settings
from django.test.windmill_tests import WindmillDjangoUnitTest
from django.core.management.commands.test_windmill import ServerContainer, attempt_import
from django.test.windmill_tests import WindmillDjangoUnitTest
from django.db.models.loading import cache
from django.utils.importlib import import_module
# print cache.app_models
# print cache.app_store
# m = cache.app_models['invalid_models']
# print m
mod = import_module('.models','modeltests.invalid_models')
del cache.app_store[mod]
del cache.app_models['invalid_models']
# print cache.app_models
# print cache.app_store
#from django.test import windmill_tests
# as testwm_cmd
# windmill_runner = testwm_cmd()
# windmill_runner.handle()
#settings.INSTALLED_APPS = [ia for ia in settings.INSTALLED_APPS if True]
# from windmill.authoring.djangotest import WindmillDjangoUnitTest
# if 'ie' in labels:
# global_settings.START_IE = True
@ -209,19 +225,19 @@ def django_tests(verbosity, interactive, test_labels):
# if 'test_windmill' in sys.argv:
# sys.argv.remove('test_windmill')
server_container = ServerContainer()
server_container.fixtures = ['admin-views-users.xml', 'admin-views-colors.xml', 'admin-views-fabrics.xml', 'admin-views-unicode.xml',
'multiple-child-classes', 'admin-views-actions.xml', 'string-primary-key.xml', 'admin-views-person.xml']
server_container.__setattr__('fixtures',[ 'regressiontests/admin_views/fixtures/%s'%fix for fix in ['admin-views-users.xml', 'admin-views-colors.xml', 'admin-views-fabrics.xml', 'admin-views-unicode.xml',
'multiple-child-classes', 'admin-views-actions.xml', 'string-primary-key.xml', 'admin-views-person.xml']])
server_container.start_test_server()
global_settings.TEST_URL = 'http://localhost:%d' % server_container.server_thread.port
# import windmill
import windmill
# windmill.stdout, windmill.stdin = sys.stdout, sys.stdin
from windmill.authoring import setup_module, teardown_module
# from django.conf import settings
tests = []
for name in [ app for app in settings.INSTALLED_APPS if not('invalid_models' in app)]:
for name in [ app for app in settings.INSTALLED_APPS if not('invalid' in app)]:
for suffix in ['tests', 'wmtests', 'windmilltests']:
x = attempt_import(name, suffix)
if x is not None: tests.append((suffix,x,));