mirror of
https://github.com/django/django.git
synced 2025-03-28 18:20:49 +00:00
Fixed #27019 -- Made teardown_test_environment() restore the old DEBUG.
This commit is contained in:
parent
a757c68129
commit
7f9fd42b93
@ -9,7 +9,6 @@ import textwrap
|
|||||||
import unittest
|
import unittest
|
||||||
from importlib import import_module
|
from importlib import import_module
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.db import DEFAULT_DB_ALIAS, connections
|
from django.db import DEFAULT_DB_ALIAS, connections
|
||||||
from django.test import SimpleTestCase, TestCase
|
from django.test import SimpleTestCase, TestCase
|
||||||
@ -413,8 +412,7 @@ class DiscoverRunner(object):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def setup_test_environment(self, **kwargs):
|
def setup_test_environment(self, **kwargs):
|
||||||
setup_test_environment()
|
setup_test_environment(debug=self.debug_mode)
|
||||||
settings.DEBUG = self.debug_mode
|
|
||||||
unittest.installHandler()
|
unittest.installHandler()
|
||||||
|
|
||||||
def build_suite(self, test_labels=None, extra_tests=None, **kwargs):
|
def build_suite(self, test_labels=None, extra_tests=None, **kwargs):
|
||||||
|
@ -94,18 +94,28 @@ def instrumented_test_render(self, context):
|
|||||||
return self.nodelist.render(context)
|
return self.nodelist.render(context)
|
||||||
|
|
||||||
|
|
||||||
def setup_test_environment():
|
class _SavedSettings(object):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def setup_test_environment(debug=None):
|
||||||
"""
|
"""
|
||||||
Perform global pre-test setup, such as installing the instrumented template
|
Perform global pre-test setup, such as installing the instrumented template
|
||||||
renderer and setting the email backend to the locmem email backend.
|
renderer and setting the email backend to the locmem email backend.
|
||||||
"""
|
"""
|
||||||
if hasattr(Template, '_original_render'):
|
if hasattr(_SavedSettings, 'debug'):
|
||||||
# Executing this function twice would overwrite the saved values.
|
# Executing this function twice would overwrite the saved values.
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
"setup_test_environment() was already called and can't be called "
|
"setup_test_environment() was already called and can't be called "
|
||||||
"again without first calling teardown_test_environment()."
|
"again without first calling teardown_test_environment()."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if debug is None:
|
||||||
|
debug = settings.DEBUG
|
||||||
|
|
||||||
|
_SavedSettings.debug = settings.DEBUG
|
||||||
|
settings.DEBUG = debug
|
||||||
|
|
||||||
Template._original_render = Template._render
|
Template._original_render = Template._render
|
||||||
Template._render = instrumented_test_render
|
Template._render = instrumented_test_render
|
||||||
|
|
||||||
@ -129,6 +139,9 @@ def teardown_test_environment():
|
|||||||
Perform any global post-test teardown, such as restoring the original
|
Perform any global post-test teardown, such as restoring the original
|
||||||
template renderer and restoring the email sending functions.
|
template renderer and restoring the email sending functions.
|
||||||
"""
|
"""
|
||||||
|
settings.DEBUG = _SavedSettings.debug
|
||||||
|
del _SavedSettings.debug
|
||||||
|
|
||||||
Template._render = Template._original_render
|
Template._render = Template._original_render
|
||||||
del Template._original_render
|
del Template._original_render
|
||||||
|
|
||||||
|
@ -612,11 +612,18 @@ Testing utilities
|
|||||||
To assist in the creation of your own test runner, Django provides a number of
|
To assist in the creation of your own test runner, Django provides a number of
|
||||||
utility methods in the ``django.test.utils`` module.
|
utility methods in the ``django.test.utils`` module.
|
||||||
|
|
||||||
.. function:: setup_test_environment()
|
.. function:: setup_test_environment(debug=None)
|
||||||
|
|
||||||
Performs global pre-test setup, such as installing instrumentation for the
|
Performs global pre-test setup, such as installing instrumentation for the
|
||||||
template rendering system and setting up the dummy email outbox.
|
template rendering system and setting up the dummy email outbox.
|
||||||
|
|
||||||
|
If ``debug`` isn't ``None``, the :setting:`DEBUG` setting is updated to its
|
||||||
|
value.
|
||||||
|
|
||||||
|
.. versionchanged:: 1.11
|
||||||
|
|
||||||
|
The ``debug`` argument was added.
|
||||||
|
|
||||||
.. function:: teardown_test_environment()
|
.. function:: teardown_test_environment()
|
||||||
|
|
||||||
Performs global post-test teardown, such as removing instrumentation from
|
Performs global post-test teardown, such as removing instrumentation from
|
||||||
|
Loading…
x
Reference in New Issue
Block a user