Permalink
Fetching contributors…
Cannot retrieve contributors at this time
executable file 142 lines (119 sloc) 4.38 KB
#!/usr/bin/env python
import sys
import shutil
import tempfile
try:
import django
except ImportError:
print("Error: missing test dependency:")
print(" django library is needed to run test suite")
print(" you can install it with 'pip install django'")
print(" or use tox to automatically handle test dependencies")
sys.exit(1)
try:
import shortuuid
except ImportError:
print("Error: missing test dependency:")
print(" shortuuid library is needed to run test suite")
print(" you can install it with 'pip install shortuuid'")
print(" or use tox to automatically handle test dependencies")
sys.exit(1)
try:
import dateutil
except ImportError:
print("Error: missing test dependency:")
print(" dateutil library is needed to run test suite")
print(" you can install it with 'pip install python-dateutil'")
print(" or use tox to automatically handle test dependencies")
sys.exit(1)
try:
import six
except ImportError:
print("Error: missing test dependency:")
print(" six library is needed to run test suite")
print(" you can install it with 'pip install six'")
print(" or use tox to automatically handle test dependencies")
sys.exit(1)
__test_libs__ = [
django,
shortuuid,
dateutil,
six
]
from django.conf import settings
def main():
# Dynamically configure the Django settings with the minimum necessary to
# get Django running tests.
KEY_LOCS = {}
try:
try:
# If KeyCzar is available, set up the environment.
from keyczar import keyczart, keyinfo
# Create an RSA private key.
keys_dir = tempfile.mkdtemp("django_extensions_tests_keyzcar_rsa_dir")
keyczart.Create(keys_dir, "test", keyinfo.DECRYPT_AND_ENCRYPT, asymmetric=True)
keyczart.AddKey(keys_dir, "PRIMARY", size=4096)
KEY_LOCS['DECRYPT_AND_ENCRYPT'] = keys_dir
# Create an RSA public key.
pub_dir = tempfile.mkdtemp("django_extensions_tests_keyzcar_pub_dir")
keyczart.PubKey(keys_dir, pub_dir)
KEY_LOCS['ENCRYPT'] = pub_dir
except ImportError:
pass
settings.configure(
INSTALLED_APPS=[
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.admin',
'django.contrib.sessions',
'django_extensions.tests.testapp',
'django_extensions',
],
# Django replaces this, but it still wants it. *shrugs*
DATABASE_ENGINE='django.db.backends.sqlite3',
DATABASES={
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ':memory:',
}
},
MEDIA_ROOT='/tmp/django_extensions_test_media/',
MEDIA_PATH='/media/',
ROOT_URLCONF='django_extensions.tests.urls',
DEBUG=True,
TEMPLATE_DEBUG=True,
ENCRYPTED_FIELD_KEYS_DIR=KEY_LOCS,
)
if django.VERSION[:2] >= (1, 7):
django.setup()
apps = ['django_extensions']
if django.VERSION[:2] >= (1, 6):
apps.append('django_extensions.tests.testapp')
apps.append('django_extensions.tests')
from django.core.management import call_command
from django.test.utils import get_runner
try:
from django.contrib.auth import get_user_model
except ImportError:
USERNAME_FIELD = "username"
else:
USERNAME_FIELD = get_user_model().USERNAME_FIELD
DjangoTestRunner = get_runner(settings)
class TestRunner(DjangoTestRunner):
def setup_databases(self, *args, **kwargs):
result = super(TestRunner, self).setup_databases(*args, **kwargs)
kwargs = {
"interactive": False,
"email": "admin@doesnotexit.com",
USERNAME_FIELD: "admin",
}
call_command("createsuperuser", **kwargs)
return result
failures = TestRunner(verbosity=2, interactive=True).run_tests(apps)
sys.exit(failures)
finally:
for name, path in KEY_LOCS.items():
# cleanup crypto key temp dirs
shutil.rmtree(path)
if __name__ == '__main__':
main()