diff --git a/pygments.patch b/pygments.patch new file mode 100644 index 0000000..081c351 --- /dev/null +++ b/pygments.patch @@ -0,0 +1,224 @@ +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(-) + +Index: sphinx-8.1.3/tests/test_builders/test_build_html_code.py +=================================================================== +--- sphinx-8.1.3.orig/tests/test_builders/test_build_html_code.py ++++ sphinx-8.1.3/tests/test_builders/test_build_html_code.py +@@ -1,3 +1,4 @@ ++import pygments + import pytest + + +@@ -32,11 +33,16 @@ def test_html_codeblock_linenos_style_in + + @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 ' + '+ ' +Index: sphinx-8.1.3/tests/test_builders/test_build_latex.py +=================================================================== +--- sphinx-8.1.3.orig/tests/test_builders/test_build_latex.py ++++ sphinx-8.1.3/tests/test_builders/test_build_latex.py +@@ -8,6 +8,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 +@@ -2127,12 +2128,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}{+} ' +Index: sphinx-8.1.3/tests/test_directives/test_directive_code.py +=================================================================== +--- sphinx-8.1.3.orig/tests/test_directives/test_directive_code.py ++++ sphinx-8.1.3/tests/test_directives/test_directive_code.py +@@ -2,6 +2,7 @@ + + import os.path + ++import pygments + import pytest + from docutils import nodes + +@@ -393,6 +394,11 @@ def test_literal_include_block_start_wit + + @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') + +@@ -410,7 +416,7 @@ def test_literal_include_linenos(app): + + # :lines: 5-9 + assert ( +- '5class ' ++ f'5class{sp}' + 'Foo:' + ) in html + +@@ -560,12 +566,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 + +Index: sphinx-8.1.3/tests/test_extensions/test_ext_viewcode.py +=================================================================== +--- sphinx-8.1.3.orig/tests/test_extensions/test_ext_viewcode.py ++++ sphinx-8.1.3/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: SphinxTes + '[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 +Index: sphinx-8.1.3/tests/test_highlighting.py +=================================================================== +--- sphinx-8.1.3.orig/tests/test_highlighting.py ++++ sphinx-8.1.3/tests/test_highlighting.py +@@ -10,7 +10,7 @@ from pygments.token import Name, Text + + from sphinx.highlighting import PygmentsBridge + +-if tuple(map(int, pygments.__version__.split('.')))[: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] +Index: sphinx-8.1.3/tests/test_intl/test_intl.py +=================================================================== +--- sphinx-8.1.3.orig/tests/test_intl/test_intl.py ++++ sphinx-8.1.3/tests/test_intl/test_intl.py +@@ -10,6 +10,7 @@ import shutil + import time + from io import StringIO + ++import pygments + import pytest + from babel.messages import mofile, pofile + from babel.messages.catalog import Catalog +@@ -1473,6 +1474,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') +@@ -1511,7 +1517,7 @@ def test_additional_targets_should_not_b + # 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) +@@ -1556,6 +1562,11 @@ def test_additional_targets_should_not_b + }, + ) + 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') +@@ -1605,7 +1616,7 @@ def test_additional_targets_should_be_tr + # 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) diff --git a/python-Sphinx.changes b/python-Sphinx.changes index 93e408c..81e807e 100644 --- a/python-Sphinx.changes +++ b/python-Sphinx.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Fri Jan 17 11:52:23 UTC 2025 - Markéta Machová + +- Add pygments.patch to fix tests with Pygments 2.19 + ------------------------------------------------------------------- Wed Nov 20 17:51:19 UTC 2024 - Dirk Müller diff --git a/python-Sphinx.spec b/python-Sphinx.spec index 2e16744..219c9ed 100644 --- a/python-Sphinx.spec +++ b/python-Sphinx.spec @@ -1,7 +1,7 @@ # # spec file for package python-Sphinx # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -42,6 +42,8 @@ Source3: requests.inv Source4: readthedocs.inv Source5: update-intersphinx.sh Source99: python-Sphinx.keyring +# PATCH-FIX-UPSTREAM https://github.com/sphinx-doc/sphinx/commit/5ff3740063c1ac57f17ecd697bcd06cc1de4e75c Adapt tests for Pygments 2.19 +Patch: pygments.patch BuildRequires: %{python_module base} BuildRequires: %{python_module flit-core} BuildRequires: %{python_module pip} @@ -55,29 +57,24 @@ Requires: python-Babel >= 1.3 Requires: python-Jinja2 >= 2.3 Requires: python-Pygments >= 2.14 Requires: python-alabaster >= 0.7 -Requires: python-defusedxml >= 0.7.1 Requires: python-docutils >= 0.12 Requires: python-imagesize Requires: python-packaging Requires: python-requests >= 2.5.0 Requires: python-snowballstemmer >= 1.1 -Requires: python-sphinx_rtd_theme Requires: python-sphinxcontrib-applehelp Requires: python-sphinxcontrib-devhelp Requires: python-sphinxcontrib-htmlhelp >= 2.0.0 Requires: python-sphinxcontrib-jsmath Requires: python-sphinxcontrib-qthelp >= 1.0.2 Requires: python-sphinxcontrib-serializinghtml >= 1.1.9 -Requires: python-sphinxcontrib-websupport Requires(post): update-alternatives Requires(postun): update-alternatives Recommends: python-SQLAlchemy >= 0.9 Recommends: python-Sphinx-doc-man Recommends: python-Whoosh >= 2.0 +Suggests: python-sphinx_rtd_theme BuildArch: noarch -%if 0%{?python_version_nodots} < 310 -Requires: python-importlib-metadata >= 4.4 -%endif %if %{with test} BuildRequires: %{python_module Cython} BuildRequires: %{python_module Sphinx = %{version}}