1
0
mirror of https://github.com/django/django.git synced 2025-07-05 02:09:13 +00:00

r10926@kevin-kubasiks-macbook: kkubasik | 2009-06-26 03:20:06 -0600

[gsoc2009-testing] Confirmed that the command line triggers have the desired effect when combined. Runner is nearing phase 1 feature complete


git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/test-improvements@11113 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Kevin Kubasik 2009-06-26 09:52:22 +00:00
parent 2dd363fc0c
commit a7c8169fda
4 changed files with 36 additions and 12 deletions

View File

@ -10,7 +10,7 @@ import os
import threading import threading
__all__ = ('get_apps', 'get_app', 'get_models', 'get_model', 'register_models', __all__ = ('get_apps', 'get_app', 'get_models', 'get_model', 'register_models',
'load_app', 'app_cache_ready') 'load_app', 'app_cache_ready', 'remove_model')
class AppCache(object): class AppCache(object):
""" """
@ -197,6 +197,19 @@ class AppCache(object):
finally: finally:
self.write_lock.release() self.write_lock.release()
def remove_model(self, model_name):
"""Removes a model from the cache. Used when loading test-only models."""
try:
self.write_lock.acquire()
if model_name in self.app_models:
del self.app_models[model_name]
except Exception, e:
raise e
finally:
self.write_lock.release()
cache = AppCache() cache = AppCache()
# These methods were always module level, so are kept that way for backwards # These methods were always module level, so are kept that way for backwards
@ -209,3 +222,4 @@ get_model = cache.get_model
register_models = cache.register_models register_models = cache.register_models
load_app = cache.load_app load_app = cache.load_app
app_cache_ready = cache.app_cache_ready app_cache_ready = cache.app_cache_ready
remove_model = cache.remove_model

View File

@ -5,6 +5,7 @@ from django.core import mail
from django.test import signals from django.test import signals
from django.template import Template from django.template import Template
from django.utils.translation import deactivate from django.utils.translation import deactivate
import inspect
class ContextList(list): class ContextList(list):
"""A wrapper that provides direct key access to context items contained """A wrapper that provides direct key access to context items contained
@ -100,3 +101,9 @@ def get_runner(settings, coverage = False, reports = False):
test_module = __import__(test_module_name, {}, {}, test_path[-1]) test_module = __import__(test_module_name, {}, {}, test_path[-1])
test_runner = getattr(test_module, test_path[-1]) test_runner = getattr(test_module, test_path[-1])
return test_runner return test_runner
def calling_func_name():
"""
Inspect's on the stack to determine the calling functions name.
"""
return inspect.stack()[1][3]

View File

@ -2,9 +2,9 @@
# from django.test import windmill_tests as djangotest # from django.test import windmill_tests as djangotest
# #from windmill.authoring import djangotest # #from windmill.authoring import djangotest
#from windmill.conf import global_settings from windmill.conf import global_settings
#ADMIN_URL = "%s/test_admin/admin" % global_settings.TEST_URL ADMIN_URL = "%s/test_admin/admin" % global_settings.TEST_URL
ADMIN_URL = 'http://localhost:8000/test_admin/admin/' #ADMIN_URL = 'http://localhost:8000/test_admin/admin/'
# #
# class TestProjectWindmillTest(djangotest.WindmillDjangoUnitTest): # class TestProjectWindmillTest(djangotest.WindmillDjangoUnitTest):
@ -21,6 +21,7 @@ ADMIN_URL = 'http://localhost:8000/test_admin/admin/'
# # pass # # pass
# #
from windmill.authoring import WindmillTestClient from windmill.authoring import WindmillTestClient
#from django.test.windmill_tests import calling_func_name
def test_loginAndSetup(): def test_loginAndSetup():
'''Mostly just a proof of concept to test working order of tests.''' '''Mostly just a proof of concept to test working order of tests.'''
@ -494,4 +495,4 @@ def test_contribFlatSitesRedirect():
client.waits.forPageLoad(timeout=u'8000') client.waits.forPageLoad(timeout=u'8000')
client.asserts.assertText(xpath=u'/html/body', validator=u'\nThis is some unique test content.\n') client.asserts.assertText(xpath=u'/html/body', validator=u'\nThis is some unique test content.\n')
client.open(url=u'http://localhost:8000/test_admin/admin/') client.open(url=u'http://localhost:8000/test_admin/admin/')
client.waits.forPageLoad(timeout=u'8000') client.waits.forPageLoad(timeout=u'8000')

View File

@ -183,6 +183,7 @@ def django_tests(verbosity, interactive, test_labels):
#'from .* import .*', 'import .*', ] #'from .* import .*', 'import .*', ]
settings.COVERAGE_ADDITIONAL_MODULES = ['django'] settings.COVERAGE_ADDITIONAL_MODULES = ['django']
# 'from .* import .*', 'import .*', # 'from .* import .*', 'import .*',
failures = 0
#Run the appropriate test runner based on parameters. #Run the appropriate test runner based on parameters.
if(do_std): if(do_std):
if(do_coverage): if(do_coverage):
@ -206,7 +207,8 @@ def django_tests(verbosity, interactive, test_labels):
from windmill.conf import global_settings from windmill.conf import global_settings
from django.core.management.commands.test_windmill import ServerContainer, attempt_import from django.core.management.commands.test_windmill import ServerContainer, attempt_import
from django.test.windmill_tests import WindmillDjangoUnitTest from django.test.windmill_tests import WindmillDjangoUnitTest
#from django.db.models.loading import cache from django.db.models.loading import remove_model
remove_model('invalid_models')
#from django.utils.importlib import import_module #from django.utils.importlib import import_module
#from django.contrib import admin #from django.contrib import admin
# print cache.app_models # print cache.app_models
@ -325,12 +327,12 @@ def django_tests(verbosity, interactive, test_labels):
from functest import runner from functest import runner
runner.CLIRunner.final = classmethod(lambda self, totals: testtotals.update(totals) ) runner.CLIRunner.final = classmethod(lambda self, totals: testtotals.update(totals) )
import windmill import windmill
for t in tests: #for t in tests:
setup_module(t[1]) setup_module(tests[0][1])
#sys.argv = sys.argv + wmtests #sys.argv = sys.argv + wmtests
sys.argv = wmtests sys.argv = wmtests
bin.cli() bin.cli()
teardown_module(t[1]) teardown_module(tests[0][1])
if testtotals['fail'] is not 0: if testtotals['fail'] is not 0:
sleep(.5) sleep(.5)
sys.exit(1) sys.exit(1)