diff options
Diffstat (limited to 'tests/test_intl.py')
-rw-r--r-- | tests/test_intl.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/test_intl.py b/tests/test_intl.py new file mode 100644 index 000000000..9459a1b76 --- /dev/null +++ b/tests/test_intl.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +""" + test_intl + ~~~~~~~~~ + + Test message patching for internationalization purposes. Runs the text + builder in the test root. + + :copyright: Copyright 2010 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from subprocess import Popen, PIPE + +from util import * +from util import SkipTest + + +def setup_module(): + (test_root / 'xx' / 'LC_MESSAGES').makedirs() + # Compile all required catalogs into binary format (*.mo). + for catalog in 'bom', 'subdir': + try: + p = Popen(['msgfmt', test_root / '%s.po' % catalog, '-o', + test_root / 'xx' / 'LC_MESSAGES' / '%s.mo' % catalog], + stdout=PIPE, stderr=PIPE) + except OSError: + raise SkipTest # most likely msgfmt was not found + else: + stdout, stderr = p.communicate() + if p.returncode != 0: + print stdout + print stderr + assert False, 'msgfmt exited with return code %s' % p.returncode + assert (test_root / 'xx' / 'LC_MESSAGES' / ('%s.mo' % catalog) + ).isfile(), 'msgfmt failed' + + +def teardown_module(): + (test_root / '_build').rmtree(True) + (test_root / 'xx').rmtree(True) + + +@with_app(buildername='text', + confoverrides={'language': 'xx', 'locale_dirs': ['.']}) +def test_simple(app): + app.builder.build(['bom']) + result = (app.outdir / 'bom.txt').text(encoding='utf-8') + expect = (u"\nDatei mit UTF-8" + u"\n***************\n" # underline matches new translation + u"\nThis file has umlauts: äöü.\n") + assert result == expect + + +@with_app(buildername='text', + confoverrides={'language': 'xx', 'locale_dirs': ['.']}) +def test_subdir(app): + app.builder.build(['subdir/includes']) + result = (app.outdir / 'subdir' / 'includes.txt').text(encoding='utf-8') + assert result.startswith(u"\ntranslation\n***********\n\n") |