summaryrefslogtreecommitdiff
path: root/tests/test_intl.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_intl.py')
-rw-r--r--tests/test_intl.py60
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")