Browse Source

Prevented calling setup() inside catch_warnings

When django.setup() (and then configure_logging) is called inside
catch_warnings, logging setup is negatively affected (notably
warnings.showwarning definition).
Claude Paroz 11 years ago
parent
commit
b2d78939d1
2 changed files with 8 additions and 5 deletions
  1. 2 2
      tests/logging_tests/tests.py
  2. 6 3
      tests/runtests.py

+ 2 - 2
tests/logging_tests/tests.py

@@ -91,8 +91,8 @@ class WarningLoggerTests(TestCase):
     """
     def setUp(self):
         # If tests are invoke with "-Wall" (or any -W flag actually) then
-        # warning logging gets disabled (see django/conf/__init__.py). However,
-        # these tests expect warnings to be logged, so manually force warnings
+        # warning logging gets disabled (see configure_logging in django/utils/log.py).
+        # However, these tests expect warnings to be logged, so manually force warnings
         # to the logs. Use getattr() here because the logging capture state is
         # undocumented and (I assume) brittle.
         self._old_capture_state = bool(getattr(logging, '_warnings_showwarning', False))

+ 6 - 3
tests/runtests.py

@@ -125,10 +125,13 @@ def setup(verbosity, test_labels):
         handler = logging.StreamHandler()
         logger.addHandler(handler)
 
+    warnings.filterwarnings(
+        'ignore',
+        'django.contrib.comments is deprecated and will be removed before Django 1.8.',
+        DeprecationWarning
+    )
     # Load all the ALWAYS_INSTALLED_APPS.
-    with warnings.catch_warnings():
-        warnings.filterwarnings('ignore', 'django.contrib.comments is deprecated and will be removed before Django 1.8.', DeprecationWarning)
-        django.setup()
+    django.setup()
 
     # Load all the test model apps.
     test_modules = get_test_modules()