mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-10-31 16:07:38 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			93 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| 
 | |
| import django
 | |
| from django.core import management
 | |
| 
 | |
| 
 | |
| def pytest_addoption(parser):
 | |
|     parser.addoption('--staticfiles', action='store_true', default=False,
 | |
|                      help='Run tests with static files collection, using manifest '
 | |
|                           'staticfiles storage. Used for testing the distribution.')
 | |
| 
 | |
| 
 | |
| def pytest_configure(config):
 | |
|     from django.conf import settings
 | |
| 
 | |
|     settings.configure(
 | |
|         DEBUG_PROPAGATE_EXCEPTIONS=True,
 | |
|         DATABASES={
 | |
|             'default': {
 | |
|                 'ENGINE': 'django.db.backends.sqlite3',
 | |
|                 'NAME': ':memory:'
 | |
|             },
 | |
|             'secondary': {
 | |
|                 'ENGINE': 'django.db.backends.sqlite3',
 | |
|                 'NAME': ':memory:'
 | |
|             }
 | |
|         },
 | |
|         SITE_ID=1,
 | |
|         SECRET_KEY='not very secret in tests',
 | |
|         USE_I18N=True,
 | |
|         STATIC_URL='/static/',
 | |
|         ROOT_URLCONF='tests.urls',
 | |
|         TEMPLATES=[
 | |
|             {
 | |
|                 'BACKEND': 'django.template.backends.django.DjangoTemplates',
 | |
|                 'APP_DIRS': True,
 | |
|                 'OPTIONS': {
 | |
|                     "debug": True,  # We want template errors to raise
 | |
|                 }
 | |
|             },
 | |
|         ],
 | |
|         MIDDLEWARE=(
 | |
|             'django.middleware.common.CommonMiddleware',
 | |
|             'django.contrib.sessions.middleware.SessionMiddleware',
 | |
|             'django.contrib.auth.middleware.AuthenticationMiddleware',
 | |
|             'django.contrib.messages.middleware.MessageMiddleware',
 | |
|         ),
 | |
|         INSTALLED_APPS=(
 | |
|             'django.contrib.admin',
 | |
|             'django.contrib.auth',
 | |
|             'django.contrib.contenttypes',
 | |
|             'django.contrib.sessions',
 | |
|             'django.contrib.sites',
 | |
|             'django.contrib.staticfiles',
 | |
|             'rest_framework',
 | |
|             'rest_framework.authtoken',
 | |
|             'tests.authentication',
 | |
|             'tests.generic_relations',
 | |
|             'tests.importable',
 | |
|             'tests',
 | |
|         ),
 | |
|         PASSWORD_HASHERS=(
 | |
|             'django.contrib.auth.hashers.MD5PasswordHasher',
 | |
|         ),
 | |
|     )
 | |
| 
 | |
|     # guardian is optional
 | |
|     try:
 | |
|         import guardian  # NOQA
 | |
|     except ImportError:
 | |
|         pass
 | |
|     else:
 | |
|         settings.ANONYMOUS_USER_ID = -1
 | |
|         settings.AUTHENTICATION_BACKENDS = (
 | |
|             'django.contrib.auth.backends.ModelBackend',
 | |
|             'guardian.backends.ObjectPermissionBackend',
 | |
|         )
 | |
|         settings.INSTALLED_APPS += (
 | |
|             'guardian',
 | |
|         )
 | |
| 
 | |
|     # Manifest storage will raise an exception if static files are not present (ie, a packaging failure).
 | |
|     if config.getoption('--staticfiles'):
 | |
|         import rest_framework
 | |
|         settings.STATIC_ROOT = os.path.join(os.path.dirname(rest_framework.__file__), 'static-root')
 | |
|         backend = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
 | |
|         settings.STORAGES['staticfiles']['BACKEND'] = backend
 | |
| 
 | |
|     django.setup()
 | |
| 
 | |
|     if config.getoption('--staticfiles'):
 | |
|         management.call_command('collectstatic', verbosity=0, interactive=False)
 |