diff options
-rwxr-xr-x | tests/path.py | 21 | ||||
-rw-r--r-- | tests/test_intl.py | 19 | ||||
-rw-r--r-- | tests/util.py | 2 |
3 files changed, 31 insertions, 11 deletions
diff --git a/tests/path.py b/tests/path.py index 2f0cdc062..0c4823005 100755 --- a/tests/path.py +++ b/tests/path.py @@ -12,7 +12,7 @@ import sys import shutil from codecs import open -from six import PY2, text_type +from six import PY2, text_type, binary_type FILESYSTEMENCODING = sys.getfilesystemencoding() or sys.getdefaultencoding() @@ -142,9 +142,11 @@ class path(text_type): """ f = open(self, mode='U', **kwargs) try: - return f.read() + text = f.read() finally: f.close() + contents = repr_as(text, '<%s contents>' % self.basename()) + return contents def bytes(self): """ @@ -205,3 +207,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 5c6be546a..719829174 100644 --- a/tests/test_intl.py +++ b/tests/test_intl.py @@ -21,7 +21,7 @@ from six import string_types from util import tempdir, rootdir, path, gen_with_app, SkipTest, \ assert_re_search, assert_not_re_search, assert_in, assert_not_in, \ - assert_startswith + assert_startswith, repr_as root = tempdir / 'test-intl' @@ -112,7 +112,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 @@ -149,7 +149,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 = ( @@ -170,7 +170,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 @@ -197,7 +197,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 @@ -208,7 +208,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') @@ -449,7 +449,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 @@ -580,7 +580,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 @@ -748,3 +748,6 @@ def test_additional_targets_should_be_translated(app, status, warning): expected_expr = """<img alt="IMG -> I18N" src="_images/i18n.png" />""" yield assert_count(expected_expr, result, 1) + +def getwarning(warnings): + return repr_as(warnings.getvalue().replace(os.sep, '/'), '<warnings>') diff --git a/tests/util.py b/tests/util.py index f7d8411c7..ebd981584 100644 --- a/tests/util.py +++ b/tests/util.py @@ -23,7 +23,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 |