Rearranged some i18n tests

Compilation/extraction tests are now properly skipped when gettext
commands are unavailable.
This commit is contained in:
Claude Paroz 2013-10-28 14:17:48 +01:00
parent 35db9d58d6
commit 0336d0d95e
3 changed files with 12 additions and 16 deletions

View File

@ -1,15 +1,19 @@
import os import os
import unittest
from django.core.management import call_command, CommandError from django.core.management import call_command, CommandError
from django.core.management.utils import find_command
from django.test import SimpleTestCase from django.test import SimpleTestCase
from django.test.utils import override_settings from django.test.utils import override_settings
from django.utils import translation from django.utils import translation
from django.utils._os import upath from django.utils._os import upath
from django.utils.six import StringIO from django.utils.six import StringIO
test_dir = os.path.abspath(os.path.dirname(upath(__file__))) test_dir = os.path.abspath(os.path.join(os.path.dirname(upath(__file__)), 'commands'))
has_msgfmt = find_command('msgfmt')
@unittest.skipUnless(has_msgfmt, 'msgfmt is mandatory for compilation tests')
class MessageCompilationTests(SimpleTestCase): class MessageCompilationTests(SimpleTestCase):
def setUp(self): def setUp(self):

View File

@ -5,10 +5,11 @@ import io
import os import os
import re import re
import shutil import shutil
from unittest import SkipTest from unittest import SkipTest, skipUnless
import warnings import warnings
from django.core import management from django.core import management
from django.core.management.utils import find_command
from django.test import SimpleTestCase from django.test import SimpleTestCase
from django.utils.encoding import force_text from django.utils.encoding import force_text
from django.utils._os import upath from django.utils._os import upath
@ -18,14 +19,17 @@ from django.utils.translation import TranslatorCommentWarning
LOCALE = 'de' LOCALE = 'de'
has_xgettext = find_command('xgettext')
@skipUnless(has_xgettext, 'xgettext is mandatory for extraction tests')
class ExtractorTests(SimpleTestCase): class ExtractorTests(SimpleTestCase):
PO_FILE = 'locale/%s/LC_MESSAGES/django.po' % LOCALE PO_FILE = 'locale/%s/LC_MESSAGES/django.po' % LOCALE
def setUp(self): def setUp(self):
self._cwd = os.getcwd() self._cwd = os.getcwd()
self.test_dir = os.path.abspath(os.path.dirname(upath(__file__))) self.test_dir = os.path.abspath(
os.path.join(os.path.dirname(upath(__file__)), 'commands'))
def _rmrf(self, dname): def _rmrf(self, dname):
if os.path.commonprefix([self.test_dir, os.path.abspath(dname)]) != self.test_dir: if os.path.commonprefix([self.test_dir, os.path.abspath(dname)]) != self.test_dir:
@ -302,8 +306,7 @@ class IgnoredExtractorTests(ExtractorTests):
class SymlinkExtractorTests(ExtractorTests): class SymlinkExtractorTests(ExtractorTests):
def setUp(self): def setUp(self):
self._cwd = os.getcwd() super(SymlinkExtractorTests, self).setUp()
self.test_dir = os.path.abspath(os.path.dirname(upath(__file__)))
self.symlinked_dir = os.path.join(self.test_dir, 'templates_symlinked') self.symlinked_dir = os.path.join(self.test_dir, 'templates_symlinked')
def tearDown(self): def tearDown(self):

View File

@ -9,7 +9,6 @@ import pickle
from threading import local from threading import local
from django.conf import settings from django.conf import settings
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
@ -34,16 +33,6 @@ from django.utils.translation import (activate, deactivate,
npgettext, npgettext_lazy, npgettext, npgettext_lazy,
check_for_language) check_for_language)
if find_command('xgettext'):
from .commands.extraction import (ExtractorTests, BasicExtractorTests,
JavascriptExtractorTests, IgnoredExtractorTests, SymlinkExtractorTests,
CopyPluralFormsExtractorTests, NoWrapExtractorTests,
LocationCommentsTests, KeepPotFileExtractorTests,
MultipleLocaleExtractionTests)
if find_command('msgfmt'):
from .commands.compilation import (PoFileTests, PoFileContentsTests,
PercentRenderingTests, MultipleLocaleCompilationTests,
CompilationErrorHandling)
from .forms import I18nForm, SelectDateForm, SelectDateWidget, CompanyForm from .forms import I18nForm, SelectDateForm, SelectDateWidget, CompanyForm
from .models import Company, TestModel from .models import Company, TestModel