commit:     fd6692ff2e08e177bb267905ae7ca3efb1c50371
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon May 19 10:19:07 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon May 19 10:22:18 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fd6692ff

dev-python/docutils: Fix test failures

Closes: https://bugs.gentoo.org/947406
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/docutils/docutils-0.21.2.ebuild         |   8 ++
 .../docutils/files/docutils-0.21.2-pillow.patch    |  15 +++
 .../files/docutils-0.21.2-pygments-2.19.patch      | 106 +++++++++++++++++++++
 3 files changed, 129 insertions(+)

diff --git a/dev-python/docutils/docutils-0.21.2.ebuild 
b/dev-python/docutils/docutils-0.21.2.ebuild
index 1406f9208214..c4b7480a2863 100644
--- a/dev-python/docutils/docutils-0.21.2.ebuild
+++ b/dev-python/docutils/docutils-0.21.2.ebuild
@@ -27,6 +27,14 @@ BDEPEND="
        ${RDEPEND}
 "
 
+PATCHES=(
+       # r10019 upstream
+       "${FILESDIR}/${P}-pygments-2.19.patch"
+       # this changed back at some point, but upstream didn't hit it
+       # because of https://sourceforge.net/p/docutils/bugs/500/
+       "${FILESDIR}/${P}-pillow.patch"
+)
+
 python_compile_all() {
        # Generate html docs from reStructured text sources.
 

diff --git a/dev-python/docutils/files/docutils-0.21.2-pillow.patch 
b/dev-python/docutils/files/docutils-0.21.2-pillow.patch
new file mode 100644
index 000000000000..993283ed798d
--- /dev/null
+++ b/dev-python/docutils/files/docutils-0.21.2-pillow.patch
@@ -0,0 +1,15 @@
+diff --git a/test/test_writers/test_html5_polyglot_parts.py 
b/test/test_writers/test_html5_polyglot_parts.py
+index 7122f8469..749f541e4 100644
+--- a/test/test_writers/test_html5_polyglot_parts.py
++++ b/test/test_writers/test_html5_polyglot_parts.py
+@@ -43,10 +43,6 @@ if PIL:
+     REQUIRES_PIL = ''
+     ONLY_LOCAL = 'Can only read local images.'
+     DUMMY_PNG_NOT_FOUND = "[Errno 2] No such file or directory: 'dummy.png'"
+-    # Pillow reports the absolute path since version 10.3.0 (cf. [bugs: 485])
+-    if (tuple(int(i) for i in PIL.__version__.split('.')) >= (10, 3)):
+-        DUMMY_PNG_NOT_FOUND = ("[Errno 2] No such file or directory: '%s'"
+-                               % Path('dummy.png').resolve())
+     SCALING_OUTPUT = 'style="width: 32.0px; height: 32.0px;" '
+     NO_PIL_SYSTEM_MESSAGE = ''
+ else:

diff --git a/dev-python/docutils/files/docutils-0.21.2-pygments-2.19.patch 
b/dev-python/docutils/files/docutils-0.21.2-pygments-2.19.patch
new file mode 100644
index 000000000000..e667226d19de
--- /dev/null
+++ b/dev-python/docutils/files/docutils-0.21.2-pygments-2.19.patch
@@ -0,0 +1,106 @@
+From 5854d09635b3fa1048d84bba17de4c38805beccd Mon Sep 17 00:00:00 2001
+From: aa-turner <aa-turner@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>
+Date: Fri, 7 Mar 2025 22:49:46 +0000
+Subject: [PATCH] Support Pygments 2.19 in tests
+
+git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@10019 
929543f6-e4f2-0310-98a6-ba3bd3dd1d04
+---
+ .../test_rst/test_directives/test_code.py        | 16 +++++++++++-----
+ .../test_rst/test_directives/test_code_long.py   |  7 +++----
+ test/test_writers/test_html5_polyglot_parts.py   |  4 +---
+ 3 files changed, 15 insertions(+), 12 deletions(-)
+
+diff --git a/test/test_parsers/test_rst/test_directives/test_code.py 
b/test/test_parsers/test_rst/test_directives/test_code.py
+index a54901dfe..a714f8fc5 100755
+--- a/test/test_parsers/test_rst/test_directives/test_code.py
++++ b/test/test_parsers/test_rst/test_directives/test_code.py
+@@ -25,10 +25,16 @@ from docutils.utils.code_analyzer import with_pygments
+ 
+ if with_pygments:
+     import pygments
+-    _pv = re.match(r'^([0-9]+)\.([0-9]*)', pygments.__version__)
+-    PYGMENTS_2_14_PLUS = (int(_pv[1]), int(_pv[2])) >= (2, 14)
++
++    pygments_version = tuple(map(int, pygments.__version__.split('.')[:2]))
++else:
++    pygments_version = (0, 0)
++
++PYGMENTS_2_14_PLUS = pygments_version >= (2, 14)
++if pygments_version >= (2, 19):
++    def_ws = '<inline classes="whitespace">\n             '
+ else:
+-    PYGMENTS_2_14_PLUS = None
++    def_ws = ' '
+ 
+ 
+ class ParserTestCase(unittest.TestCase):
+@@ -160,14 +166,14 @@ totest['code_parsing'] = [
+       # and now for something completely different
+       print(8/2)
+ """,
+-"""\
++f"""\
+ <document source="test data">
+     <literal_block classes="code python3 testclass" ids="my-function" 
names="my_function" xml:space="preserve">
+         <inline classes="ln">
+              7 \n\
+         <inline classes="keyword">
+             def
+-         \n\
++        {def_ws}
+         <inline classes="name function">
+             my_function
+         <inline classes="punctuation">
+diff --git a/test/test_parsers/test_rst/test_directives/test_code_long.py 
b/test/test_parsers/test_rst/test_directives/test_code_long.py
+index 89cb4b172..037768c01 100755
+--- a/test/test_parsers/test_rst/test_directives/test_code_long.py
++++ b/test/test_parsers/test_rst/test_directives/test_code_long.py
+@@ -22,8 +22,7 @@ from docutils.parsers.rst import Parser
+ from docutils.utils import new_document
+ from docutils.utils.code_analyzer import with_pygments
+ from test.test_parsers.test_rst.test_directives.test_code \
+-    import PYGMENTS_2_14_PLUS
+-
++    import PYGMENTS_2_14_PLUS, def_ws
+ 
+ @unittest.skipUnless(with_pygments, 'needs Pygments')
+ class ParserTestCase(unittest.TestCase):
+@@ -55,14 +54,14 @@ totest['code_parsing_long'] = [
+       # and now for something completely different
+       print(8/2)
+ """,
+-"""\
++f"""\
+ <document source="test data">
+     <literal_block classes="code python3" xml:space="preserve">
+         <inline classes="ln">
+              7 \n\
+         <inline classes="keyword">
+             def
+-         \n\
++        {def_ws}
+         <inline classes="name function">
+             my_function
+         <inline classes="punctuation">
+diff --git a/test/test_writers/test_html5_polyglot_parts.py 
b/test/test_writers/test_html5_polyglot_parts.py
+index 7122f8469..afe504d41 100644
+--- a/test/test_writers/test_html5_polyglot_parts.py
++++ b/test/test_writers/test_html5_polyglot_parts.py
+@@ -14,7 +14,6 @@ standard values, and any entries with empty values.
+ 
+ from pathlib import Path
+ import os
+-import re
+ import sys
+ import unittest
+ 
+@@ -30,8 +29,7 @@ from docutils.utils.code_analyzer import with_pygments
+ 
+ if with_pygments:
+     import pygments
+-    _pv = re.match(r'^([0-9]+)\.([0-9]*)', pygments.__version__)
+-    if (int(_pv[1]), int(_pv[2])) >= (2, 14):
++    if tuple(map(int, pygments.__version__.split('.')[:2])) >= (2, 14):
+         # pygments output changed in version 2.14
+         with_pygments = False
+ 

Reply via email to