public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Michał Górny" <mgorny@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-python/pytest/, dev-python/pytest/files/
Date: Tue, 18 Feb 2025 12:50:10 +0000 (UTC)	[thread overview]
Message-ID: <1739882988.55fc42718e2a6e2a4155b0f3f069646173041aa4.mgorny@gentoo> (raw)

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 <me@the-compiler.org>
+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	other threads:[~2025-02-18 12:50 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-18 12:50 Michał Górny [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-06-22 15:01 [gentoo-commits] repo/gentoo:master commit in: dev-python/pytest/, dev-python/pytest/files/ Michał Górny
2024-05-19 11:47 Michał Górny
2022-05-13 12:29 Michał Górny
2021-10-03 19:24 Michał Górny
2021-06-02 19:46 Michał Górny
2020-05-27  6:11 Michał Górny
2019-11-27 13:17 Michał Górny
2019-07-06  8:43 Tim Harder
2018-07-11 22:11 Michał Górny

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1739882988.55fc42718e2a6e2a4155b0f3f069646173041aa4.mgorny@gentoo \
    --to=mgorny@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox