commit:     55fc42718e2a6e2a4155b0f3f069646173041aa4
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Feb 18 11:29:35 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Feb 18 12:49:48 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=55fc4271

dev-python/pytest: Backport a test fix for pygments-2.19

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../pytest/files/pytest-8.3.4-pygments-2.19.patch  | 106 +++++++++++++++++++++
 dev-python/pytest/pytest-8.3.4.ebuild              |   5 +
 2 files changed, 111 insertions(+)

diff --git a/dev-python/pytest/files/pytest-8.3.4-pygments-2.19.patch 
b/dev-python/pytest/files/pytest-8.3.4-pygments-2.19.patch
new file mode 100644
index 000000000000..5674f72ead18
--- /dev/null
+++ b/dev-python/pytest/files/pytest-8.3.4-pygments-2.19.patch
@@ -0,0 +1,106 @@
+From ad4081f63985ff42f54fc52baa7ce0e7b5cffba4 Mon Sep 17 00:00:00 2001
+From: Florian Bruhin <[email protected]>
+Date: Wed, 8 Jan 2025 18:04:15 +0100
+Subject: [PATCH] Merge pull request #13113 from
+ The-Compiler/fix-pygments-whitespace
+
+Fix selftests with Pygments >= 2.19.0
+
+(cherry picked from commit bdfc3a99bd733f385f150446caef6d5843bb6418)
+---
+ changelog/13112.contrib.rst |  1 +
+ testing/conftest.py         |  7 +++++++
+ testing/test_terminal.py    | 10 +++++-----
+ 3 files changed, 13 insertions(+), 5 deletions(-)
+ create mode 100644 changelog/13112.contrib.rst
+
+diff --git a/changelog/13112.contrib.rst b/changelog/13112.contrib.rst
+new file mode 100644
+index 000000000..5e59a736e
+--- /dev/null
++++ b/changelog/13112.contrib.rst
+@@ -0,0 +1 @@
++Fixed selftest failures in ``test_terminal.py`` with Pygments >= 2.19.0
+diff --git a/testing/conftest.py b/testing/conftest.py
+index 69af03324..194da0f83 100644
+--- a/testing/conftest.py
++++ b/testing/conftest.py
+@@ -2,10 +2,13 @@
+ from __future__ import annotations
+ 
+ import dataclasses
++import importlib.metadata
+ import re
+ import sys
+ from typing import Generator
+ 
++from packaging.version import Version
++
+ from _pytest.monkeypatch import MonkeyPatch
+ from _pytest.pytester import Pytester
+ import pytest
+@@ -168,6 +171,9 @@ def color_mapping():
+ 
+     Used by tests which check the actual colors output by pytest.
+     """
++    # 
https://github.com/pygments/pygments/commit/d24e272894a56a98b1b718d9ac5fabc20124882a
++    pygments_version = Version(importlib.metadata.version("pygments"))
++    pygments_has_kwspace_hl = pygments_version >= Version("2.19")
+ 
+     class ColorMapping:
+         COLORS = {
+@@ -180,6 +186,7 @@ def color_mapping():
+             "bold": "\x1b[1m",
+             "reset": "\x1b[0m",
+             "kw": "\x1b[94m",
++            "kwspace": "\x1b[90m \x1b[39;49;00m" if pygments_has_kwspace_hl 
else " ",
+             "hl-reset": "\x1b[39;49;00m",
+             "function": "\x1b[92m",
+             "number": "\x1b[94m",
+diff --git a/testing/test_terminal.py b/testing/test_terminal.py
+index 14c152d61..cbbe9cbd7 100644
+--- a/testing/test_terminal.py
++++ b/testing/test_terminal.py
+@@ -1299,13 +1299,13 @@ def test_color_yes(pytester: Pytester, color_mapping) 
-> None:
+                 "=*= FAILURES =*=",
+                 "{red}{bold}_*_ test_this _*_{reset}",
+                 "",
+-                "    {reset}{kw}def{hl-reset} 
{function}test_this{hl-reset}():{endline}",
++                "    
{reset}{kw}def{hl-reset}{kwspace}{function}test_this{hl-reset}():{endline}",
+                 ">       fail(){endline}",
+                 "",
+                 "{bold}{red}test_color_yes.py{reset}:5: ",
+                 "_ _ * _ _*",
+                 "",
+-                "    {reset}{kw}def{hl-reset} 
{function}fail{hl-reset}():{endline}",
++                "    
{reset}{kw}def{hl-reset}{kwspace}{function}fail{hl-reset}():{endline}",
+                 ">       {kw}assert{hl-reset} {number}0{hl-reset}{endline}",
+                 "{bold}{red}E       assert 0{reset}",
+                 "",
+@@ -2585,7 +2585,7 @@ class TestCodeHighlight:
+         result.stdout.fnmatch_lines(
+             color_mapping.format_for_fnmatch(
+                 [
+-                    "    {reset}{kw}def{hl-reset} 
{function}test_foo{hl-reset}():{endline}",
++                    "    
{reset}{kw}def{hl-reset}{kwspace}{function}test_foo{hl-reset}():{endline}",
+                     ">       {kw}assert{hl-reset} {number}1{hl-reset} == 
{number}10{hl-reset}{endline}",
+                     "{bold}{red}E       assert 1 == 10{reset}",
+                 ]
+@@ -2607,7 +2607,7 @@ class TestCodeHighlight:
+         result.stdout.fnmatch_lines(
+             color_mapping.format_for_fnmatch(
+                 [
+-                    "    {reset}{kw}def{hl-reset} 
{function}test_foo{hl-reset}():{endline}",
++                    "    
{reset}{kw}def{hl-reset}{kwspace}{function}test_foo{hl-reset}():{endline}",
+                     "        
{print}print{hl-reset}({str}'''{hl-reset}{str}{hl-reset}",
+                     ">   {str}    {hl-reset}{str}'''{hl-reset}); 
{kw}assert{hl-reset} {number}0{hl-reset}{endline}",
+                     "{bold}{red}E       assert 0{reset}",
+@@ -2630,7 +2630,7 @@ class TestCodeHighlight:
+         result.stdout.fnmatch_lines(
+             color_mapping.format_for_fnmatch(
+                 [
+-                    "    {reset}{kw}def{hl-reset} 
{function}test_foo{hl-reset}():{endline}",
++                    "    
{reset}{kw}def{hl-reset}{kwspace}{function}test_foo{hl-reset}():{endline}",
+                     ">       {kw}assert{hl-reset} {number}1{hl-reset} == 
{number}10{hl-reset}{endline}",
+                     "{bold}{red}E       assert 1 == 10{reset}",
+                 ]

diff --git a/dev-python/pytest/pytest-8.3.4.ebuild 
b/dev-python/pytest/pytest-8.3.4.ebuild
index cd59dc91caa9..835e9a6ea2d6 100644
--- a/dev-python/pytest/pytest-8.3.4.ebuild
+++ b/dev-python/pytest/pytest-8.3.4.ebuild
@@ -50,6 +50,11 @@ BDEPEND="
        )
 "
 
+PATCHES=(
+       # ad4081f63985ff42f54fc52baa7ce0e7b5cffba4
+       "${FILESDIR}/${P}-pygments-2.19.patch"
+)
+
 src_test() {
        # workaround new readline defaults
        echo "set enable-bracketed-paste off" > "${T}"/inputrc || die

Reply via email to