Changed runtests.py to set USE_I18N=True during test running, because the template tests assume it. Some template tests were failing because my personal settings have USE_I18N=False
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4206 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
6001974e45
commit
cfb1c5feff
|
@ -40,12 +40,12 @@ def get_invalid_models():
|
||||||
if f.startswith('invalid'):
|
if f.startswith('invalid'):
|
||||||
models.append((loc, f))
|
models.append((loc, f))
|
||||||
return models
|
return models
|
||||||
|
|
||||||
class InvalidModelTestCase(unittest.TestCase):
|
class InvalidModelTestCase(unittest.TestCase):
|
||||||
def __init__(self, model_label):
|
def __init__(self, model_label):
|
||||||
unittest.TestCase.__init__(self)
|
unittest.TestCase.__init__(self)
|
||||||
self.model_label = model_label
|
self.model_label = model_label
|
||||||
|
|
||||||
def runTest(self):
|
def runTest(self):
|
||||||
from django.core import management
|
from django.core import management
|
||||||
from django.db.models.loading import load_app
|
from django.db.models.loading import load_app
|
||||||
|
@ -55,7 +55,7 @@ class InvalidModelTestCase(unittest.TestCase):
|
||||||
module = load_app(self.model_label)
|
module = load_app(self.model_label)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
self.fail('Unable to load invalid model module')
|
self.fail('Unable to load invalid model module')
|
||||||
|
|
||||||
s = StringIO()
|
s = StringIO()
|
||||||
count = management.get_validation_errors(s, module)
|
count = management.get_validation_errors(s, module)
|
||||||
s.seek(0)
|
s.seek(0)
|
||||||
|
@ -71,39 +71,43 @@ class InvalidModelTestCase(unittest.TestCase):
|
||||||
|
|
||||||
def django_tests(verbosity, tests_to_run):
|
def django_tests(verbosity, tests_to_run):
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db.models.loading import get_apps, load_app
|
|
||||||
|
|
||||||
old_installed_apps = settings.INSTALLED_APPS
|
old_installed_apps = settings.INSTALLED_APPS
|
||||||
old_test_database_name = settings.TEST_DATABASE_NAME
|
old_test_database_name = settings.TEST_DATABASE_NAME
|
||||||
old_root_urlconf = settings.ROOT_URLCONF
|
old_root_urlconf = settings.ROOT_URLCONF
|
||||||
old_template_dirs = settings.TEMPLATE_DIRS
|
old_template_dirs = settings.TEMPLATE_DIRS
|
||||||
|
old_use_i18n = settings.USE_I18N
|
||||||
|
|
||||||
# Redirect some settings for the duration of these tests
|
# Redirect some settings for the duration of these tests
|
||||||
settings.TEST_DATABASE_NAME = TEST_DATABASE_NAME
|
settings.TEST_DATABASE_NAME = TEST_DATABASE_NAME
|
||||||
settings.INSTALLED_APPS = ALWAYS_INSTALLED_APPS
|
settings.INSTALLED_APPS = ALWAYS_INSTALLED_APPS
|
||||||
settings.ROOT_URLCONF = 'urls'
|
settings.ROOT_URLCONF = 'urls'
|
||||||
settings.TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), TEST_TEMPLATE_DIR),)
|
settings.TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), TEST_TEMPLATE_DIR),)
|
||||||
|
settings.USE_I18N = True
|
||||||
# load all the ALWAYS_INSTALLED_APPS
|
|
||||||
|
# Load all the ALWAYS_INSTALLED_APPS.
|
||||||
|
# (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
|
||||||
get_apps()
|
get_apps()
|
||||||
|
|
||||||
# Load all the test model apps
|
# Load all the test model apps
|
||||||
test_models = []
|
test_models = []
|
||||||
for model_dir, model_name in get_test_models():
|
for model_dir, model_name in get_test_models():
|
||||||
model_label = '.'.join([model_dir, model_name])
|
model_label = '.'.join([model_dir, model_name])
|
||||||
try:
|
try:
|
||||||
# if the model was named on the command line, or
|
# if the model was named on the command line, or
|
||||||
# no models were named (i.e., run all), import
|
# no models were named (i.e., run all), import
|
||||||
# this model and add it to the list to test.
|
# this model and add it to the list to test.
|
||||||
if not tests_to_run or model_name in tests_to_run:
|
if not tests_to_run or model_name in tests_to_run:
|
||||||
if verbosity >= 1:
|
if verbosity >= 1:
|
||||||
print "Importing model %s" % model_name
|
print "Importing model %s" % model_name
|
||||||
mod = load_app(model_label)
|
mod = load_app(model_label)
|
||||||
settings.INSTALLED_APPS.append(model_label)
|
settings.INSTALLED_APPS.append(model_label)
|
||||||
test_models.append(mod)
|
test_models.append(mod)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
sys.stderr.write("Error while importing %s:" % model_name + ''.join(traceback.format_exception(*sys.exc_info())[1:]))
|
sys.stderr.write("Error while importing %s:" % model_name + ''.join(traceback.format_exception(*sys.exc_info())[1:]))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Add tests for invalid models
|
# Add tests for invalid models
|
||||||
extra_tests = []
|
extra_tests = []
|
||||||
|
@ -111,28 +115,29 @@ def django_tests(verbosity, tests_to_run):
|
||||||
model_label = '.'.join([model_dir, model_name])
|
model_label = '.'.join([model_dir, model_name])
|
||||||
if not tests_to_run or model_name in tests_to_run:
|
if not tests_to_run or model_name in tests_to_run:
|
||||||
extra_tests.append(InvalidModelTestCase(model_label))
|
extra_tests.append(InvalidModelTestCase(model_label))
|
||||||
|
|
||||||
# Run the test suite, including the extra validation tests.
|
# Run the test suite, including the extra validation tests.
|
||||||
from django.test.simple import run_tests
|
from django.test.simple import run_tests
|
||||||
run_tests(test_models, verbosity, extra_tests=extra_tests)
|
run_tests(test_models, verbosity, extra_tests=extra_tests)
|
||||||
|
|
||||||
# Restore the old settings
|
# Restore the old settings
|
||||||
settings.INSTALLED_APPS = old_installed_apps
|
settings.INSTALLED_APPS = old_installed_apps
|
||||||
settings.TESTS_DATABASE_NAME = old_test_database_name
|
settings.TESTS_DATABASE_NAME = old_test_database_name
|
||||||
settings.ROOT_URLCONF = old_root_urlconf
|
settings.ROOT_URLCONF = old_root_urlconf
|
||||||
settings.TEMPLATE_DIRS = old_template_dirs
|
settings.TEMPLATE_DIRS = old_template_dirs
|
||||||
|
settings.USE_I18N = old_use_i18n
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
from optparse import OptionParser
|
from optparse import OptionParser
|
||||||
usage = "%prog [options] [model model model ...]"
|
usage = "%prog [options] [model model model ...]"
|
||||||
parser = OptionParser(usage=usage)
|
parser = OptionParser(usage=usage)
|
||||||
parser.add_option('-v','--verbosity', action='store', dest='verbosity', default='0',
|
parser.add_option('-v','--verbosity', action='store', dest='verbosity', default='0',
|
||||||
type='choice', choices=['0', '1', '2'],
|
type='choice', choices=['0', '1', '2'],
|
||||||
help='Verbosity level; 0=minimal output, 1=normal output, 2=all output')
|
help='Verbosity level; 0=minimal output, 1=normal output, 2=all output')
|
||||||
parser.add_option('--settings',
|
parser.add_option('--settings',
|
||||||
help='Python path to settings module, e.g. "myproject.settings". If this isn\'t provided, the DJANGO_SETTINGS_MODULE environment variable will be used.')
|
help='Python path to settings module, e.g. "myproject.settings". If this isn\'t provided, the DJANGO_SETTINGS_MODULE environment variable will be used.')
|
||||||
options, args = parser.parse_args()
|
options, args = parser.parse_args()
|
||||||
if options.settings:
|
if options.settings:
|
||||||
os.environ['DJANGO_SETTINGS_MODULE'] = options.settings
|
os.environ['DJANGO_SETTINGS_MODULE'] = options.settings
|
||||||
|
|
||||||
django_tests(int(options.verbosity), args)
|
django_tests(int(options.verbosity), args)
|
||||||
|
|
Loading…
Reference in New Issue