Commit f6989e55 authored by Jacob Kaplan-Moss's avatar Jacob Kaplan-Moss
Browse files

Merge remote-tracking branch 'ptone/18985-fix'

parents 34a50e99 e79b857a
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ a list of all possible variables.

import logging
import os
import sys
import time     # Needed for Windows
import warnings

@@ -57,6 +58,7 @@ class LazySettings(LazyObject):
        """
        Setup logging from LOGGING_CONFIG and LOGGING settings.
        """
        if not sys.warnoptions:
            try:
                # Route warnings through python logging
                logging.captureWarnings(True)
+17 −0
Original line number Diff line number Diff line
import logging
import sys
import os
from optparse import make_option, OptionParser
@@ -6,6 +7,7 @@ from django.conf import settings
from django.core.management.base import BaseCommand
from django.test.utils import get_runner


class Command(BaseCommand):
    option_list = BaseCommand.option_list + (
        make_option('--noinput',
@@ -57,6 +59,21 @@ class Command(BaseCommand):
                            version=self.get_version(),
                            option_list=options)

    def execute(self, *args, **options):
        if int(options['verbosity']) > 0:
            # ensure that deprecation warnings are displayed during testing
            # the following state is assumed:
            # logging.capturewarnings is true
            # a "default" level warnings filter has been added for
            # DeprecationWarning. See django.conf.LazySettings._configure_logging
            logger = logging.getLogger('py.warnings')
            handler = logging.StreamHandler()
            logger.addHandler(handler)
        super(Command, self).execute(*args, **options)
        if int(options['verbosity']) > 0:
            # remove the testing-specific handler
            logger.removeHandler(handler)

    def handle(self, *test_labels, **options):
        from django.conf import settings
        from django.test.utils import get_runner
+0 −13
Original line number Diff line number Diff line
import logging
import unittest as real_unittest

from django.conf import settings
@@ -366,19 +365,7 @@ class DjangoTestSuiteRunner(object):
        self.setup_test_environment()
        suite = self.build_suite(test_labels, extra_tests)
        old_config = self.setup_databases()
        if self.verbosity > 0:
            # ensure that deprecation warnings are displayed during testing
            # the following state is assumed:
            # logging.capturewarnings is true
            # a "default" level warnings filter has been added for
            # DeprecationWarning. See django.conf.LazySettings._configure_logging
            logger = logging.getLogger('py.warnings')
            handler = logging.StreamHandler()
            logger.addHandler(handler)
        result = self.run_suite(suite)
        if self.verbosity > 0:
            # remove the testing-specific handler
            logger.removeHandler(handler)
        self.teardown_databases(old_config)
        self.teardown_test_environment()
        return self.suite_result(suite, result)
+9 −0
Original line number Diff line number Diff line
#!/usr/bin/env python
import logging
import os
import shutil
import subprocess
@@ -82,6 +83,14 @@ def setup(verbosity, test_labels):
    settings.LANGUAGE_CODE = 'en'
    settings.SITE_ID = 1

    if verbosity > 0:
        # Ensure any warnings captured to logging are piped through a verbose
        # logging handler.  If any -W options were passed explicitly on command
        # line, warnings are not captured, and this has no effect.
        logger = logging.getLogger('py.warnings')
        handler = logging.StreamHandler()
        logger.addHandler(handler)

    # Load all the ALWAYS_INSTALLED_APPS.
    get_apps()

+2 −0
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@ import warnings

from django.test import TestCase

warnings.warn("module-level warning from deprecation_app", DeprecationWarning)

class DummyTest(TestCase):
    def test_warn(self):
        warnings.warn("warning from test", DeprecationWarning)
Loading