[1.6.x] Fixed #21307 -- Moved TransRealMixin to django.test.utils.

51d2e1fb23 from master.
This commit is contained in:
Ramiro Morales 2013-10-22 20:38:11 -03:00
parent 2e74d6cb53
commit bcc65c13a0
8 changed files with 24 additions and 32 deletions

View File

@ -11,7 +11,7 @@ from django.conf import settings
from django.contrib.humanize.templatetags import humanize from django.contrib.humanize.templatetags import humanize
from django.template import Template, Context, defaultfilters from django.template import Template, Context, defaultfilters
from django.test import TestCase from django.test import TestCase
from django.test.utils import override_settings from django.test.utils import override_settings, TransRealMixin
from django.utils.html import escape from django.utils.html import escape
from django.utils.timezone import utc from django.utils.timezone import utc
from django.utils import translation from django.utils import translation
@ -19,8 +19,6 @@ from django.utils.translation import ugettext as _
from django.utils import tzinfo from django.utils import tzinfo
from django.utils.unittest import skipIf from django.utils.unittest import skipIf
from i18n import TransRealMixin
# Mock out datetime in some tests so they don't fail occasionally when they # Mock out datetime in some tests so they don't fail occasionally when they
# run too slow. Use a fixed datetime for datetime.now(). DST change in # run too slow. Use a fixed datetime for datetime.now(). DST change in

View File

@ -2,6 +2,7 @@ from contextlib import contextmanager
import logging import logging
import re import re
import sys import sys
from threading import local
import time import time
import warnings import warnings
from functools import wraps from functools import wraps
@ -441,6 +442,23 @@ def patch_logger(logger_name, log_level):
setattr(logger, log_level, orig) setattr(logger, log_level, orig)
class TransRealMixin(object):
"""This is the only way to reset the translation machinery. Otherwise
the test suite occasionally fails because of global state pollution
between tests."""
def flush_caches(self):
from django.utils.translation import trans_real
trans_real._translations = {}
trans_real._active = local()
trans_real._default = None
trans_real._accepted = {}
trans_real._checked_languages = {}
def tearDown(self):
self.flush_caches()
super(TransRealMixin, self).tearDown()
# On OSes that don't provide tzset (Windows), we can't set the timezone # On OSes that don't provide tzset (Windows), we can't set the timezone
# in which the program runs. As a consequence, we must skip tests that # in which the program runs. As a consequence, we must skip tests that
# don't enforce a specific timezone (with timezone.override or equivalent), # don't enforce a specific timezone (with timezone.override or equivalent),

View File

@ -6,13 +6,12 @@ import decimal
from django.template.defaultfilters import * from django.template.defaultfilters import *
from django.test import TestCase from django.test import TestCase
from django.test.utils import TransRealMixin
from django.utils import six from django.utils import six
from django.utils import unittest, translation from django.utils import unittest, translation
from django.utils.safestring import SafeData from django.utils.safestring import SafeData
from django.utils.encoding import python_2_unicode_compatible from django.utils.encoding import python_2_unicode_compatible
from i18n import TransRealMixin
class DefaultFiltersTests(TestCase): class DefaultFiltersTests(TestCase):

View File

@ -8,7 +8,7 @@ from django.test import TestCase
from django.utils.translation import ugettext_lazy, override from django.utils.translation import ugettext_lazy, override
from forms_tests.models import Cheese from forms_tests.models import Cheese
from i18n import TransRealMixin from django.test.utils import TransRealMixin
class FormsRegressionsTestCase(TransRealMixin, TestCase): class FormsRegressionsTestCase(TransRealMixin, TestCase):

View File

@ -1,18 +0,0 @@
from threading import local
class TransRealMixin(object):
"""This is the only way to reset the translation machinery. Otherwise
the test suite occasionally fails because of global state pollution
between tests."""
def flush_caches(self):
from django.utils.translation import trans_real
trans_real._translations = {}
trans_real._active = local()
trans_real._default = None
trans_real._accepted = {}
trans_real._checked_languages = {}
def tearDown(self):
self.flush_caches()
super(TransRealMixin, self).tearDown()

View File

@ -5,13 +5,11 @@ import os
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.test import TestCase from django.test import TestCase
from django.test.utils import override_settings from django.test.utils import override_settings, TransRealMixin
from django.utils._os import upath from django.utils._os import upath
from django.utils import six from django.utils import six
from django.utils import translation from django.utils import translation
from i18n import TransRealMixin
@override_settings( @override_settings(
USE_I18N=True, USE_I18N=True,

View File

@ -12,7 +12,7 @@ from django.core.management.utils import find_command
from django.template import Template, Context from django.template import Template, Context
from django.template.base import TemplateSyntaxError from django.template.base import TemplateSyntaxError
from django.test import TestCase, RequestFactory from django.test import TestCase, RequestFactory
from django.test.utils import override_settings from django.test.utils import override_settings, TransRealMixin
from django.utils import translation from django.utils import translation
from django.utils.formats import (get_format, date_format, time_format, from django.utils.formats import (get_format, date_format, time_format,
localize, localize_input, iter_format_modules, get_format_modules, localize, localize_input, iter_format_modules, get_format_modules,
@ -44,7 +44,6 @@ if find_command('msgfmt'):
from .commands.compilation import (PoFileTests, PoFileContentsTests, from .commands.compilation import (PoFileTests, PoFileContentsTests,
PercentRenderingTests, MultipleLocaleCompilationTests, PercentRenderingTests, MultipleLocaleCompilationTests,
CompilationErrorHandling) CompilationErrorHandling)
from . import TransRealMixin
from .forms import I18nForm, SelectDateForm, SelectDateWidget, CompanyForm from .forms import I18nForm, SelectDateForm, SelectDateWidget, CompanyForm
from .models import Company, TestModel from .models import Company, TestModel

View File

@ -22,7 +22,7 @@ from django.template import (base as template_base, loader, Context,
from django.template.loaders import app_directories, filesystem, cached from django.template.loaders import app_directories, filesystem, cached
from django.test import RequestFactory, TestCase from django.test import RequestFactory, TestCase
from django.test.utils import (setup_test_template_loader, from django.test.utils import (setup_test_template_loader,
restore_template_loaders, override_settings) restore_template_loaders, override_settings, TransRealMixin)
from django.utils import unittest from django.utils import unittest
from django.utils.encoding import python_2_unicode_compatible from django.utils.encoding import python_2_unicode_compatible
from django.utils.formats import date_format from django.utils.formats import date_format
@ -33,8 +33,6 @@ from django.utils import six
from django.utils.six.moves.urllib.parse import urljoin from django.utils.six.moves.urllib.parse import urljoin
from django.utils.tzinfo import LocalTimezone from django.utils.tzinfo import LocalTimezone
from i18n import TransRealMixin
try: try:
from .loaders import RenderToStringTest, EggLoaderTest from .loaders import RenderToStringTest, EggLoaderTest
except ImportError as e: except ImportError as e: