Fixed #21307 -- Moved TransRealMixin to django.test.utils.

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

View File

@ -12,14 +12,12 @@ from django.conf import settings
from django.contrib.humanize.templatetags import humanize
from django.template import Template, Context, defaultfilters
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.timezone import utc, get_fixed_timezone
from django.utils import translation
from django.utils.translation import ugettext as _
from i18n import TransRealMixin
# 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

View File

@ -2,6 +2,7 @@ from contextlib import contextmanager
import logging
import re
import sys
from threading import local
import time
from unittest import skipUnless
import warnings
@ -415,6 +416,23 @@ def patch_logger(logger_name, log_level):
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
# in which the program runs. As a consequence, we must skip tests that
# don't enforce a specific timezone (with timezone.override or equivalent),

View File

@ -17,13 +17,12 @@ from django.template.defaultfilters import (
urlize, urlizetrunc, wordcount, wordwrap, yesno,
)
from django.test import TestCase
from django.test.utils import TransRealMixin
from django.utils import six
from django.utils import translation
from django.utils.safestring import SafeData
from django.utils.encoding import python_2_unicode_compatible
from i18n import TransRealMixin
class DefaultFiltersTests(TestCase):

View File

@ -12,7 +12,7 @@ from django.test import TestCase
from django.utils.translation import ugettext_lazy, override
from forms_tests.models import Cheese
from i18n import TransRealMixin
from django.test.utils import TransRealMixin
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.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 import six
from django.utils import translation
from i18n import TransRealMixin
@override_settings(
USE_I18N=True,

View File

@ -13,7 +13,7 @@ from django.core.management.utils import find_command
from django.template import Template, Context
from django.template.base import TemplateSyntaxError
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.formats import (get_format, date_format, time_format,
localize, localize_input, iter_format_modules, get_format_modules,
@ -44,7 +44,6 @@ if find_command('msgfmt'):
from .commands.compilation import (PoFileTests, PoFileContentsTests,
PercentRenderingTests, MultipleLocaleCompilationTests,
CompilationErrorHandling)
from . import TransRealMixin
from .forms import I18nForm, SelectDateForm, SelectDateWidget, CompanyForm
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.test import RequestFactory, TestCase
from django.test.utils import (setup_test_template_loader,
restore_template_loaders, override_settings)
restore_template_loaders, override_settings, TransRealMixin)
from django.utils.encoding import python_2_unicode_compatible
from django.utils.formats import date_format
from django.utils._os import upath
@ -31,8 +31,6 @@ from django.utils.safestring import mark_safe
from django.utils import six
from django.utils.six.moves.urllib.parse import urljoin
from i18n import TransRealMixin
# NumPy installed?
try:
import numpy