Changeset 5488 for django/branches/per-object-permissions/tests/runtests.py
- Timestamp:
- 06/17/07 17:18:54 (2 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/per-object-permissions/tests/runtests.py
r4242 r5488 4 4 import unittest 5 5 6 import django.contrib as contrib 7 CONTRIB_DIR_NAME = 'django.contrib' 6 8 MODEL_TESTS_DIR_NAME = 'modeltests' 7 9 REGRESSION_TESTS_DIR_NAME = 'regressiontests' 10 8 11 TEST_DATABASE_NAME = 'django_test_db' 9 12 TEST_TEMPLATE_DIR = 'templates' 10 13 14 CONTRIB_DIR = os.path.dirname(contrib.__file__) 11 15 MODEL_TEST_DIR = os.path.join(os.path.dirname(__file__), MODEL_TESTS_DIR_NAME) 12 16 REGRESSION_TEST_DIR = os.path.join(os.path.dirname(__file__), REGRESSION_TESTS_DIR_NAME) … … 25 29 def get_test_models(): 26 30 models = [] 27 for loc, dirpath in (MODEL_TESTS_DIR_NAME, MODEL_TEST_DIR), (REGRESSION_TESTS_DIR_NAME, REGRESSION_TEST_DIR) :31 for loc, dirpath in (MODEL_TESTS_DIR_NAME, MODEL_TEST_DIR), (REGRESSION_TESTS_DIR_NAME, REGRESSION_TEST_DIR), (CONTRIB_DIR_NAME, CONTRIB_DIR): 28 32 for f in os.listdir(dirpath): 29 33 if f.startswith('__init__') or f.startswith('.') or f.startswith('sql') or f.startswith('invalid'): … … 34 38 def get_invalid_models(): 35 39 models = [] 36 for loc, dirpath in (MODEL_TESTS_DIR_NAME, MODEL_TEST_DIR), (REGRESSION_TESTS_DIR_NAME, REGRESSION_TEST_DIR) :40 for loc, dirpath in (MODEL_TESTS_DIR_NAME, MODEL_TEST_DIR), (REGRESSION_TESTS_DIR_NAME, REGRESSION_TEST_DIR), (CONTRIB_DIR_NAME, CONTRIB_DIR): 37 41 for f in os.listdir(dirpath): 38 42 if f.startswith('__init__') or f.startswith('.') or f.startswith('sql'): … … 78 82 old_template_dirs = settings.TEMPLATE_DIRS 79 83 old_use_i18n = settings.USE_I18N 84 old_middleware_classes = settings.MIDDLEWARE_CLASSES 80 85 81 # Redirect some settings for the duration of these tests 86 # Redirect some settings for the duration of these tests. 82 87 settings.TEST_DATABASE_NAME = TEST_DATABASE_NAME 83 88 settings.INSTALLED_APPS = ALWAYS_INSTALLED_APPS … … 85 90 settings.TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), TEST_TEMPLATE_DIR),) 86 91 settings.USE_I18N = True 92 settings.MIDDLEWARE_CLASSES = ( 93 'django.contrib.sessions.middleware.SessionMiddleware', 94 'django.contrib.auth.middleware.AuthenticationMiddleware', 95 'django.middleware.common.CommonMiddleware', 96 ) 87 97 88 98 # Load all the ALWAYS_INSTALLED_APPS. … … 92 102 get_apps() 93 103 94 # Load all the test model apps 104 # Load all the test model apps. 95 105 test_models = [] 96 106 for model_dir, model_name in get_test_models(): … … 104 114 print "Importing model %s" % model_name 105 115 mod = load_app(model_label) 106 settings.INSTALLED_APPS.append(model_label) 107 test_models.append(mod) 116 if mod: 117 if model_label not in settings.INSTALLED_APPS: 118 settings.INSTALLED_APPS.append(model_label) 119 test_models.append(mod) 108 120 except Exception, e: 109 121 sys.stderr.write("Error while importing %s:" % model_name + ''.join(traceback.format_exception(*sys.exc_info())[1:])) 110 122 continue 111 123 112 # Add tests for invalid models 124 # Add tests for invalid models. 113 125 extra_tests = [] 114 126 for model_dir, model_name in get_invalid_models(): … … 119 131 # Run the test suite, including the extra validation tests. 120 132 from django.test.simple import run_tests 121 run_tests(test_models, verbosity, extra_tests=extra_tests) 133 failures = run_tests(test_models, verbosity, extra_tests=extra_tests) 134 if failures: 135 sys.exit(failures) 122 136 123 # Restore the old settings 137 # Restore the old settings. 124 138 settings.INSTALLED_APPS = old_installed_apps 125 139 settings.TESTS_DATABASE_NAME = old_test_database_name … … 127 141 settings.TEMPLATE_DIRS = old_template_dirs 128 142 settings.USE_I18N = old_use_i18n 143 settings.MIDDLEWARE_CLASSES = old_middleware_classes 129 144 130 145 if __name__ == "__main__": … … 140 155 if options.settings: 141 156 os.environ['DJANGO_SETTINGS_MODULE'] = options.settings 142 157 elif "DJANGO_SETTINGS_MODULE" not in os.environ: 158 parser.error("DJANGO_SETTINGS_MODULE is not set in the environment. " 159 "Set it or use --settings.") 143 160 django_tests(int(options.verbosity), args)
