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)