From 5ff3740063c1ac57f17ecd697bcd06cc1de4e75c Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Mon, 6 Jan 2025 06:56:10 +0000 Subject: [PATCH] Adapt tests for Pygments 2.19 --- tests/test_builders/test_build_html_code.py | 8 +++++++- tests/test_builders/test_build_latex.py | 9 +++++++-- tests/test_directives/test_directive_code.py | 15 +++++++++++++-- tests/test_extensions/test_ext_viewcode.py | 8 +++++++- tests/test_highlighting.py | 2 +- tests/test_intl/test_intl.py | 15 +++++++++++++-- 6 files changed, 48 insertions(+), 9 deletions(-) diff --git a/tests/test_builders/test_build_html_code.py b/tests/test_builders/test_build_html_code.py index 349e1d164..02684b22e 100644 --- a/tests/test_builders/test_build_html_code.py +++ b/tests/test_builders/test_build_html_code.py @@ -1,5 +1,6 @@ from __future__ import annotations +import pygments import pytest @@ -34,11 +35,16 @@ def test_html_codeblock_linenos_style_inline(app): @pytest.mark.sphinx('html', testroot='reST-code-role') def test_html_code_role(app): + if tuple(map(int, pygments.__version__.split('.')[:2])) >= (2, 19): + sp = ' ' + else: + sp = ' ' + app.build() content = (app.outdir / 'index.html').read_text(encoding='utf8') common_content = ( - 'def foo' + f'def{sp}foo' '(' '1 ' '+ ' diff --git a/tests/test_builders/test_build_latex.py b/tests/test_builders/test_build_latex.py index 3e63aca70..4626b7fbe 100644 --- a/tests/test_builders/test_build_latex.py +++ b/tests/test_builders/test_build_latex.py @@ -11,6 +11,7 @@ from pathlib import Path from shutil import copyfile from subprocess import CalledProcessError +import pygments import pytest from sphinx.builders.latex import default_latex_documents @@ -2115,12 +2116,16 @@ def test_latex_container(app): @pytest.mark.sphinx('latex', testroot='reST-code-role') def test_latex_code_role(app): + if tuple(map(int, pygments.__version__.split('.')[:2])) >= (2, 19): + sp = r'\PYG{+w}{ }' + else: + sp = ' ' + app.build() content = (app.outdir / 'projectnamenotset.tex').read_text(encoding='utf8') common_content = ( - r'\PYG{k}{def} ' - r'\PYG{n+nf}{foo}' + r'\PYG{k}{def}' + sp + r'\PYG{n+nf}{foo}' r'\PYG{p}{(}' r'\PYG{l+m+mi}{1} ' r'\PYG{o}{+} ' diff --git a/tests/test_directives/test_directive_code.py b/tests/test_directives/test_directive_code.py index 4e6c03a66..d54b320ce 100644 --- a/tests/test_directives/test_directive_code.py +++ b/tests/test_directives/test_directive_code.py @@ -2,6 +2,7 @@ from __future__ import annotations +import pygments import pytest from docutils import nodes @@ -394,6 +395,11 @@ def test_literal_include_block_start_with_comment_or_brank(app): @pytest.mark.sphinx('html', testroot='directive-code') def test_literal_include_linenos(app): + if tuple(map(int, pygments.__version__.split('.')[:2])) >= (2, 19): + sp = ' ' + else: + sp = ' ' + app.build(filenames=[app.srcdir / 'linenos.rst']) html = (app.outdir / 'linenos.html').read_text(encoding='utf8') @@ -411,7 +417,7 @@ def test_literal_include_linenos(app): # :lines: 5-9 assert ( - '5class ' + f'5class{sp}' 'Foo:' ) in html @@ -556,12 +562,17 @@ def test_code_block_highlighted(app): @pytest.mark.sphinx('html', testroot='directive-code') def test_linenothreshold(app): + if tuple(map(int, pygments.__version__.split('.')[:2])) >= (2, 19): + sp = ' ' + else: + sp = ' ' + app.build(filenames=[app.srcdir / 'linenothreshold.rst']) html = (app.outdir / 'linenothreshold.html').read_text(encoding='utf8') # code-block using linenothreshold assert ( - '1class ' + f'1class{sp}' 'Foo:' ) in html diff --git a/tests/test_extensions/test_ext_viewcode.py b/tests/test_extensions/test_ext_viewcode.py index 5721dfb63..92455ee5a 100644 --- a/tests/test_extensions/test_ext_viewcode.py +++ b/tests/test_extensions/test_ext_viewcode.py @@ -6,6 +6,7 @@ import re import shutil from typing import TYPE_CHECKING +import pygments import pytest if TYPE_CHECKING: @@ -13,6 +14,11 @@ if TYPE_CHECKING: def check_viewcode_output(app: SphinxTestApp) -> str: + if tuple(map(int, pygments.__version__.split('.')[:2])) >= (2, 19): + sp = ' ' + else: + sp = ' ' + warnings = re.sub(r'\\+', '/', app.warning.getvalue()) assert re.findall( r"index.rst:\d+: WARNING: Object named 'func1' not found in include " @@ -41,7 +47,7 @@ def check_viewcode_output(app: SphinxTestApp) -> str: '[docs]\n' ) in result assert '@decorator\n' in result - assert 'class Class1:\n' in result + assert f'class{sp}Class1:\n' in result assert ' """\n' in result assert ' this is Class1\n' in result assert ' """\n' in result diff --git a/tests/test_highlighting.py b/tests/test_highlighting.py index 91f887633..141de9702 100644 --- a/tests/test_highlighting.py +++ b/tests/test_highlighting.py @@ -12,7 +12,7 @@ from pygments.token import Name, Text from sphinx.highlighting import PygmentsBridge -if tuple(map(int, pygments.__version__.split('.')[:2]))[:2] < (2, 18): +if tuple(map(int, pygments.__version__.split('.')[:2])) < (2, 18): from pygments.formatter import Formatter Formatter.__class_getitem__ = classmethod(lambda cls, name: cls) # type: ignore[attr-defined] diff --git a/tests/test_intl/test_intl.py b/tests/test_intl/test_intl.py index ab104b556..1280a3d04 100644 --- a/tests/test_intl/test_intl.py +++ b/tests/test_intl/test_intl.py @@ -11,6 +11,7 @@ import shutil import time from typing import TYPE_CHECKING +import pygments import pytest from babel.messages import mofile, pofile from babel.messages.catalog import Catalog @@ -1487,6 +1488,11 @@ def test_xml_strange_markup(app): @pytest.mark.sphinx('html', testroot='intl') @pytest.mark.test_params(shared_result='test_intl_basic') def test_additional_targets_should_not_be_translated(app): + if tuple(map(int, pygments.__version__.split('.')[:2])) >= (2, 19): + sp = ' ' + else: + sp = ' ' + app.build() # [literalblock.txt] result = (app.outdir / 'literalblock.html').read_text(encoding='utf8') @@ -1525,7 +1531,7 @@ def test_additional_targets_should_not_be_translated(app): # doctest block should not be translated but be highlighted expected_expr = ( """>>> """ - """import sys """ + f"""import{sp}sys """ """# sys importing""" ) assert_count(expected_expr, result, 1) @@ -1570,6 +1576,11 @@ def test_additional_targets_should_not_be_translated(app): }, ) def test_additional_targets_should_be_translated(app): + if tuple(map(int, pygments.__version__.split('.')[:2])) >= (2, 19): + sp = ' ' + else: + sp = ' ' + app.build() # [literalblock.txt] result = (app.outdir / 'literalblock.html').read_text(encoding='utf8') @@ -1619,7 +1630,7 @@ def test_additional_targets_should_be_translated(app): # doctest block should not be translated but be highlighted expected_expr = ( """>>> """ - """import sys """ + f"""import{sp}sys """ """# SYS IMPORTING""" ) assert_count(expected_expr, result, 1)