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.py81
1 files changed, 48 insertions, 33 deletions
diff --git a/tests/test_intl.py b/tests/test_intl.py
index d0c64b589..00f599595 100644
--- a/tests/test_intl.py
+++ b/tests/test_intl.py
@@ -5,7 +5,7 @@
Test message patching for internationalization purposes. Runs the text
builder in the test root.
- :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -13,14 +13,13 @@ import os
import re
import pytest
-from babel.messages import pofile, mofile
+from babel.messages import mofile, pofile
+from babel.messages.catalog import Catalog
from docutils import nodes
-from sphinx.testing.util import (
- path, etree_parse, strip_escseq,
- assert_re_search, assert_not_re_search, assert_startswith, assert_node
-)
-
+from sphinx import locale
+from sphinx.testing.util import (assert_node, assert_not_re_search, assert_re_search,
+ assert_startswith, etree_parse, path, strip_escseq)
sphinx_intl = pytest.mark.sphinx(
testroot='intl',
@@ -93,15 +92,6 @@ def assert_count(expected_expr, result, count):
@sphinx_intl
@pytest.mark.sphinx('text')
@pytest.mark.test_params(shared_result='test_intl_basic')
-def test_text_toctree(app):
- app.build()
- result = (app.outdir / 'index.txt').read_text()
- assert_startswith(result, "CONTENTS\n********\n\nTABLE OF CONTENTS\n")
-
-
-@sphinx_intl
-@pytest.mark.sphinx('text')
-@pytest.mark.test_params(shared_result='test_intl_basic')
def test_text_emit_warnings(app, warning):
app.build()
# test warnings in translation
@@ -437,11 +427,16 @@ def test_text_admonitions(app):
@pytest.mark.test_params(shared_result='test_intl_gettext')
def test_gettext_toctree(app):
app.build()
- # --- toctree
+ # --- toctree (index.rst)
expect = read_po(app.srcdir / 'xx' / 'LC_MESSAGES' / 'index.po')
actual = read_po(app.outdir / 'index.pot')
for expect_msg in [m for m in expect if m.id]:
assert expect_msg.id in [m.id for m in actual if m.id]
+ # --- toctree (toctree.rst)
+ expect = read_po(app.srcdir / 'xx' / 'LC_MESSAGES' / 'toctree.po')
+ actual = read_po(app.outdir / 'toctree.pot')
+ for expect_msg in [m for m in expect if m.id]:
+ assert expect_msg.id in [m.id for m in actual if m.id]
@sphinx_intl
@@ -469,23 +464,16 @@ def test_text_table(app):
@sphinx_intl
-@pytest.mark.sphinx('gettext')
-@pytest.mark.test_params(shared_result='test_intl_gettext')
-def test_gettext_toctree(app):
- app.build()
- # --- toctree
- expect = read_po(app.srcdir / 'xx' / 'LC_MESSAGES' / 'toctree.po')
- actual = read_po(app.outdir / 'toctree.pot')
- for expect_msg in [m for m in expect if m.id]:
- assert expect_msg.id in [m.id for m in actual if m.id]
-
-
-@sphinx_intl
@pytest.mark.sphinx('text')
@pytest.mark.test_params(shared_result='test_intl_basic')
def test_text_toctree(app):
app.build()
- # --- toctree
+ # --- toctree (index.rst)
+ # Note: index.rst contains contents that is not shown in text.
+ result = (app.outdir / 'index.txt').read_text()
+ assert 'CONTENTS' in result
+ assert 'TABLE OF CONTENTS' in result
+ # --- toctree (toctree.rst)
result = (app.outdir / 'toctree.txt').read_text()
expect = read_po(app.srcdir / 'xx' / 'LC_MESSAGES' / 'toctree.po')
for expect_msg in [m for m in expect if m.id]:
@@ -956,9 +944,9 @@ def test_xml_role_xref(app):
'glossary_terms#term-Some-term'])
assert_elem(
para2[1],
- ['LINK TO', 'SAME TYPE LINKS', 'AND',
- "I18N ROCK'N ROLE XREF", '.'],
- ['same-type-links', 'i18n-role-xref'])
+ ['LINK TO', 'LABEL', 'AND',
+ 'SAME TYPE LINKS', 'AND', 'SAME TYPE LINKS', '.'],
+ ['i18n-role-xref', 'same-type-links', 'same-type-links'])
assert_elem(
para2[2],
['LINK TO', 'I18N WITH GLOSSARY TERMS', 'AND', 'CONTENTS', '.'],
@@ -1289,3 +1277,30 @@ def test_image_glob_intl_using_figure_language_filename(app):
def getwarning(warnings):
return strip_escseq(warnings.getvalue().replace(os.sep, '/'))
+
+
+@pytest.mark.sphinx('html', testroot='basic', confoverrides={'language': 'de'})
+def test_customize_system_message(make_app, app_params, sphinx_test_tempdir):
+ try:
+ # clear translators cache
+ locale.translators.clear()
+
+ # prepare message catalog (.po)
+ locale_dir = sphinx_test_tempdir / 'basic' / 'locales' / 'de' / 'LC_MESSAGES'
+ locale_dir.makedirs()
+ with (locale_dir / 'sphinx.po').open('wb') as f:
+ catalog = Catalog()
+ catalog.add('Quick search', 'QUICK SEARCH')
+ pofile.write_po(f, catalog)
+
+ # construct application and convert po file to .mo
+ args, kwargs = app_params
+ app = make_app(*args, **kwargs)
+ assert (locale_dir / 'sphinx.mo').exists()
+ assert app.translator.gettext('Quick search') == 'QUICK SEARCH'
+
+ app.build()
+ content = (app.outdir / 'index.html').read_text()
+ assert 'QUICK SEARCH' in content
+ finally:
+ locale.translators.clear()