summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/path.py21
-rw-r--r--tests/test_intl.py21
-rw-r--r--tests/util.py2
3 files changed, 33 insertions, 11 deletions
diff --git a/tests/path.py b/tests/path.py
index f4b2612f6..901c9ce96 100755
--- a/tests/path.py
+++ b/tests/path.py
@@ -12,7 +12,7 @@ import sys
import shutil
from io import open
-from six import PY2, text_type
+from six import PY2, text_type, binary_type
FILESYSTEMENCODING = sys.getfilesystemencoding() or sys.getdefaultencoding()
@@ -143,7 +143,9 @@ class path(text_type):
Returns the text in the file.
"""
with open(self, mode='U', encoding=encoding, **kwargs) as f:
- return f.read()
+ text = f.read()
+ contents = repr_as(text, '<%s contents>' % self.basename())
+ return contents
def bytes(self):
"""
@@ -198,3 +200,18 @@ class path(text_type):
def __repr__(self):
return '%s(%s)' % (self.__class__.__name__, text_type.__repr__(self))
+
+
+# Lives here only to avoid circular references; use it from util.py!
+class _repr_text(text_type):
+ def __repr__(self):
+ return self._repr
+class _repr_bin(binary_type):
+ def __repr__(self):
+ return self._repr
+
+def repr_as(string, repr_):
+ wrapper = _repr_text if isinstance(string, text_type) else _repr_bin
+ proxy = wrapper(string)
+ proxy._repr = repr_
+ return proxy
diff --git a/tests/test_intl.py b/tests/test_intl.py
index 29d068d65..a2b4f0e3b 100644
--- a/tests/test_intl.py
+++ b/tests/test_intl.py
@@ -24,7 +24,7 @@ from six import string_types
from util import tempdir, rootdir, path, gen_with_app, with_app, SkipTest, \
assert_re_search, assert_not_re_search, assert_in, assert_not_in, \
- assert_startswith, assert_node
+ assert_startswith, assert_node, repr_as
root = tempdir / 'test-intl'
@@ -120,7 +120,7 @@ def test_text_builder(app, status, warning):
# --- warnings in translation
- warnings = warning.getvalue().replace(os.sep, '/')
+ warnings = getwarning(warning)
warning_expr = u'.*/warnings.txt:4: ' \
u'WARNING: Inline literal start-string without end-string.\n'
yield assert_re_search, warning_expr, warnings
@@ -157,7 +157,7 @@ def test_text_builder(app, status, warning):
u"\n[100] THIS IS A NUMBERED FOOTNOTE.\n")
yield assert_equal, result, expect
- warnings = warning.getvalue().replace(os.sep, '/')
+ warnings = getwarning(warning)
warning_fmt = u'.*/refs_inconsistency.txt:\\d+: ' \
u'WARNING: inconsistent %s in translated message\n'
expected_warning_expr = (
@@ -178,7 +178,7 @@ def test_text_builder(app, status, warning):
u"\n<SYSTEM MESSAGE:")
yield assert_startswith, result, expect
- warnings = warning.getvalue().replace(os.sep, '/')
+ warnings = getwarning(warning)
expected_warning_expr = u'.*/literalblock.txt:\\d+: ' \
u'WARNING: Literal block expected; none found.'
yield assert_re_search, expected_warning_expr, warnings
@@ -210,7 +210,7 @@ def test_text_builder(app, status, warning):
u"\n THE CORRESPONDING GLOSSARY #2\n"
u"\nLINK TO *SOME NEW TERM*.\n")
yield assert_equal, result, expect
- warnings = warning.getvalue().replace(os.sep, '/')
+ warnings = getwarning(warning)
yield assert_not_in, 'term not in glossary', warnings
# --- glossary term inconsistencies: regression test for #1090
@@ -221,7 +221,7 @@ def test_text_builder(app, status, warning):
u"\n1. LINK TO *SOME NEW TERM*.\n")
yield assert_equal, result, expect
- warnings = warning.getvalue().replace(os.sep, '/')
+ warnings = getwarning(warning)
expected_warning_expr = (
u'.*/glossary_terms_inconsistency.txt:\\d+: '
u'WARNING: inconsistent term references in translated message\n')
@@ -487,7 +487,7 @@ def test_xml_builder(app, status, warning):
None,
['ref'])
- warnings = warning.getvalue().replace(os.sep, '/')
+ warnings = getwarning(warning)
warning_expr = u'.*/footnote.xml:\\d*: SEVERE: Duplicate ID: ".*".\n'
yield assert_not_re_search, warning_expr, warnings
@@ -618,7 +618,7 @@ def test_xml_builder(app, status, warning):
['same-type-links', 'i18n-role-xref'])
# warnings
- warnings = warning.getvalue().replace(os.sep, '/')
+ warnings = getwarning(warning)
yield assert_not_in, 'term not in glossary', warnings
yield assert_not_in, 'undefined label', warnings
yield assert_not_in, 'unknown document', warnings
@@ -789,6 +789,7 @@ def test_additional_targets_should_be_translated(app, status, warning):
yield assert_count(expected_expr, result, 1)
+<<<<<<< HEAD
@gen_with_intl_app('text', freshenv=True)
def test_references(app, status, warning):
app.builder.build_specific([app.srcdir / 'refs.txt'])
@@ -880,3 +881,7 @@ def test_image_glob_intl_using_figure_language_filename(app, status, warning):
assert_node(doctree[0][3][0], nodes.image, uri='subdir/svgimg.*',
candidates={'application/pdf': 'subdir/svgimg.pdf',
'image/svg+xml': 'subdir/svgimg.svg'})
+
+
+def getwarning(warnings):
+ return repr_as(warnings.getvalue().replace(os.sep, '/'), '<warnings>')
diff --git a/tests/util.py b/tests/util.py
index 969c4e5c4..454cc0d9c 100644
--- a/tests/util.py
+++ b/tests/util.py
@@ -26,7 +26,7 @@ from sphinx.theming import Theme
from sphinx.ext.autodoc import AutoDirective
from sphinx.pycode import ModuleAnalyzer
-from path import path
+from path import path, repr_as
try:
# Python >=3.3