mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #14508 - test suite silences warnings.
Utility functions get_warnings_state and save_warnings_state have been added to django.test.utils, and methods to django.test.TestCase for convenience. The implementation is based on the catch_warnings context manager from Python 2.6. git-svn-id: http://code.djangoproject.com/svn/django/trunk@14526 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -11,6 +11,7 @@ from django.db import transaction, connection, connections, DEFAULT_DB_ALIAS
|
||||
from django.http import QueryDict
|
||||
from django.test import _doctest as doctest
|
||||
from django.test.client import Client
|
||||
from django.test.utils import get_warnings_state, restore_warnings_state
|
||||
from django.utils import simplejson, unittest as ut2
|
||||
from django.utils.encoding import smart_str
|
||||
from django.utils.functional import wraps
|
||||
@@ -328,6 +329,19 @@ class TransactionTestCase(ut2.TestCase):
|
||||
settings.ROOT_URLCONF = self._old_root_urlconf
|
||||
clear_url_caches()
|
||||
|
||||
def save_warnings_state(self):
|
||||
"""
|
||||
Saves the state of the warnings module
|
||||
"""
|
||||
self._warnings_state = get_warnings_state()
|
||||
|
||||
def restore_warnings_state(self):
|
||||
"""
|
||||
Restores the sate of the warnings module to the state
|
||||
saved by save_warnings_state()
|
||||
"""
|
||||
restore_warnings_state(self._warnings_state)
|
||||
|
||||
def assertRedirects(self, response, expected_url, status_code=302,
|
||||
target_status_code=200, host=None, msg_prefix=''):
|
||||
"""Asserts that a response redirected to a specific URL, and that the
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import sys
|
||||
import time
|
||||
import os
|
||||
import warnings
|
||||
from django.conf import settings
|
||||
from django.core import mail
|
||||
from django.core.mail.backends import locmem
|
||||
@@ -46,6 +47,7 @@ class ContextList(list):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def instrumented_test_render(self, context):
|
||||
"""
|
||||
An instrumented Template render method, providing a signal
|
||||
@@ -75,6 +77,7 @@ def setup_test_environment():
|
||||
|
||||
deactivate()
|
||||
|
||||
|
||||
def teardown_test_environment():
|
||||
"""Perform any global post-test teardown. This involves:
|
||||
|
||||
@@ -93,6 +96,25 @@ def teardown_test_environment():
|
||||
|
||||
del mail.outbox
|
||||
|
||||
|
||||
def get_warnings_state():
|
||||
"""
|
||||
Returns an object containing the state of the warnings module
|
||||
"""
|
||||
# There is no public interface for doing this, but this implementation of
|
||||
# get_warnings_state and restore_warnings_state appears to work on Python
|
||||
# 2.4 to 2.7.
|
||||
return warnings.filters[:]
|
||||
|
||||
|
||||
def restore_warnings_state(state):
|
||||
"""
|
||||
Restores the state of the warnings module when passed an object that was
|
||||
returned by get_warnings_state()
|
||||
"""
|
||||
warnings.filters = state[:]
|
||||
|
||||
|
||||
def get_runner(settings):
|
||||
test_path = settings.TEST_RUNNER.split('.')
|
||||
# Allow for Python 2.5 relative paths
|
||||
|
||||
Reference in New Issue
Block a user