diff --git a/CHANGES b/CHANGES index 0f26145e7..14272aeb1 100644 --- a/CHANGES +++ b/CHANGES @@ -16,10 +16,11 @@ Features added Bugs fixed ---------- +* #5037: LaTeX ``\sphinxupquote{}`` breaks in Russian +* sphinx.testing uses deprecated pytest API; ``Node.get_marker(name)`` * #5016: ``character_level_inline_markup`` setting is not initialized for combination of non reST source parsers (ex. recommonmark) and docutils-0.13 - Testing -------- diff --git a/sphinx/testing/fixtures.py b/sphinx/testing/fixtures.py index be0037b70..741dbb353 100644 --- a/sphinx/testing/fixtures.py +++ b/sphinx/testing/fixtures.py @@ -39,7 +39,10 @@ def app_params(request, test_params, shared_result, sphinx_test_tempdir, rootdir # ##### process pytest.mark.sphinx - markers = request.node.get_marker("sphinx") + if hasattr(request.node, 'iter_markers'): # pytest-3.6.0 or newer + markers = request.node.iter_markers("sphinx") + else: + markers = request.node.get_marker("sphinx") pargs = {} kwargs = {} # type: Dict[str, str] @@ -86,7 +89,10 @@ def test_params(request): have same 'shared_result' value. **NOTE**: You can not specify shared_result and srcdir in same time. """ - env = request.node.get_marker('test_params') + if hasattr(request.node, 'get_closest_marker'): # pytest-3.6.0 or newer + env = request.node.get_closest_marker('test_params') + else: + env = request.node.get_marker('test_params') kwargs = env.kwargs if env else {} result = { 'shared_result': None, diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index bd88ca842..0e5462ea2 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -200,15 +200,10 @@ class ExtBabel(Babel): def get_shorthandoff(self): # type: () -> unicode - shortlang = self.language.split('_')[0] - if shortlang in ('de', 'ngerman', 'sl', 'slovene', 'pt', 'portuges', - 'es', 'spanish', 'nl', 'dutch', 'pl', 'polish', 'it', - 'italian', 'pt-BR', 'brazil'): - return '\\ifnum\\catcode`\\"=\\active\\shorthandoff{"}\\fi' - elif shortlang in ('tr', 'turkish'): - # memo: if ever Sphinx starts supporting 'Latin', do as for Turkish - return '\\ifnum\\catcode`\\=\\string=\\active\\shorthandoff{=}\\fi' - return '' + return ('\\ifdefined\\shorthandoff\n' + ' \\ifnum\\catcode`\\=\\string=\\active\\shorthandoff{=}\\fi\n' + ' \\ifnum\\catcode`\\"=\\active\\shorthandoff{"}\\fi\n' + '\\fi') def uses_cyrillic(self): # type: () -> bool @@ -568,6 +563,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.elements['classoptions'] = ',dvipdfmx' # disable babel which has not publishing quality in Japanese self.elements['babel'] = '' + self.elements['shorthandoff'] = '' self.elements['multilingual'] = '' # disable fncychap in Japanese documents self.elements['fncychap'] = '' diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 96ae14089..68704d9a3 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -467,7 +467,7 @@ def test_babel_with_language_ru(app, status, warning): assert '\\addto\\captionsrussian{\\renewcommand{\\tablename}{Table.}}\n' in result assert (u'\\addto\\extrasrussian{\\def\\pageautorefname' u'{\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430}}\n' in result) - assert '\\shorthandoff' not in result + assert '\\shorthandoff' in result @pytest.mark.sphinx( @@ -529,7 +529,7 @@ def test_babel_with_unknown_language(app, status, warning): assert '\\addto\\captionsenglish{\\renewcommand{\\figurename}{Fig.}}\n' in result assert '\\addto\\captionsenglish{\\renewcommand{\\tablename}{Table.}}\n' in result assert '\\addto\\extrasenglish{\\def\\pageautorefname{page}}\n' in result - assert '\\shorthandoff' not in result + assert '\\shorthandoff' in result assert "WARNING: no Babel option known for language 'unknown'" in warning.getvalue() diff --git a/tests/test_ext_apidoc.py b/tests/test_ext_apidoc.py index d3d61d1e0..8c81a6e12 100644 --- a/tests/test_ext_apidoc.py +++ b/tests/test_ext_apidoc.py @@ -32,7 +32,10 @@ def apidoc(rootdir, tempdir, apidoc_params): @pytest.fixture def apidoc_params(request): - markers = request.node.get_marker("apidoc") + if hasattr(request.node, 'iter_markers'): # pytest-3.6.0 or newer + markers = request.node.iter_markers("apidoc") + else: + markers = request.node.get_marker("apidoc") pargs = {} kwargs = {} diff --git a/tests/test_setup_command.py b/tests/test_setup_command.py index facb8879d..cd1f89c0c 100644 --- a/tests/test_setup_command.py +++ b/tests/test_setup_command.py @@ -27,7 +27,10 @@ def setup_command(request, tempdir, rootdir): Run `setup.py build_sphinx` with args and kwargs, pass it to the test and clean up properly. """ - marker = request.node.get_marker('setup_command') + if hasattr(request.node, 'get_closest_marker'): # pytest-3.6.0 or newer + marker = request.node.get_closest_marker('setup_command') + else: + marker = request.node.get_marker('setup_command') args = marker.args if marker else [] pkgrootdir = tempdir / 'test-setup'