Skip to content

Commit 888cf3f

Browse files
committedJan 8, 2025·
Fix selftests with Pygments >= 2.19.0
With Pygments 2.19, the Python lexer now emits Text.Whitespace (rather than Text) tokens after "def", which get highlighted as "bright black". See pygments/pygments#1905 Fixes #13112
1 parent 5d58b1f commit 888cf3f

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed
 

‎changelog/13112.contrib.rst

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixed selftest failures in ``test_terminal.py`` with Pygments >= 2.19.0

‎testing/conftest.py

+8
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@
22
from __future__ import annotations
33

44
from collections.abc import Generator
5+
import importlib.metadata
56
import dataclasses
67
import re
78
import sys
89

10+
import pygments
11+
from packaging.version import Version
12+
913
from _pytest.monkeypatch import MonkeyPatch
1014
from _pytest.pytester import Pytester
1115
import pytest
@@ -168,6 +172,9 @@ def color_mapping():
168172
169173
Used by tests which check the actual colors output by pytest.
170174
"""
175+
# https://github.com/pygments/pygments/commit/d24e272894a56a98b1b718d9ac5fabc20124882a
176+
pygments_version = Version(importlib.metadata.version("pygments"))
177+
pygments_has_kwspace_hl = pygments_version >= Version("2.19")
171178

172179
class ColorMapping:
173180
COLORS = {
@@ -180,6 +187,7 @@ class ColorMapping:
180187
"bold": "\x1b[1m",
181188
"reset": "\x1b[0m",
182189
"kw": "\x1b[94m",
190+
"kwspace": "\x1b[90m \x1b[39;49;00m" if pygments_has_kwspace_hl else " ",
183191
"hl-reset": "\x1b[39;49;00m",
184192
"function": "\x1b[92m",
185193
"number": "\x1b[94m",

‎testing/test_terminal.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -1294,13 +1294,13 @@ def test_this():
12941294
"=*= FAILURES =*=",
12951295
"{red}{bold}_*_ test_this _*_{reset}",
12961296
"",
1297-
" {reset}{kw}def{hl-reset} {function}test_this{hl-reset}():{endline}",
1297+
" {reset}{kw}def{hl-reset}{kwspace}{function}test_this{hl-reset}():{endline}",
12981298
"> fail(){endline}",
12991299
"",
13001300
"{bold}{red}test_color_yes.py{reset}:5: ",
13011301
"_ _ * _ _*",
13021302
"",
1303-
" {reset}{kw}def{hl-reset} {function}fail{hl-reset}():{endline}",
1303+
" {reset}{kw}def{hl-reset}{kwspace}{function}fail{hl-reset}():{endline}",
13041304
"> {kw}assert{hl-reset} {number}0{hl-reset}{endline}",
13051305
"{bold}{red}E assert 0{reset}",
13061306
"",
@@ -2580,7 +2580,7 @@ def test_foo():
25802580
result.stdout.fnmatch_lines(
25812581
color_mapping.format_for_fnmatch(
25822582
[
2583-
" {reset}{kw}def{hl-reset} {function}test_foo{hl-reset}():{endline}",
2583+
" {reset}{kw}def{hl-reset}{kwspace}{function}test_foo{hl-reset}():{endline}",
25842584
"> {kw}assert{hl-reset} {number}1{hl-reset} == {number}10{hl-reset}{endline}",
25852585
"{bold}{red}E assert 1 == 10{reset}",
25862586
]
@@ -2602,7 +2602,7 @@ def test_foo():
26022602
result.stdout.fnmatch_lines(
26032603
color_mapping.format_for_fnmatch(
26042604
[
2605-
" {reset}{kw}def{hl-reset} {function}test_foo{hl-reset}():{endline}",
2605+
" {reset}{kw}def{hl-reset}{kwspace}{function}test_foo{hl-reset}():{endline}",
26062606
" {print}print{hl-reset}({str}'''{hl-reset}{str}{hl-reset}",
26072607
"> {str} {hl-reset}{str}'''{hl-reset}); {kw}assert{hl-reset} {number}0{hl-reset}{endline}",
26082608
"{bold}{red}E assert 0{reset}",
@@ -2625,7 +2625,7 @@ def test_foo():
26252625
result.stdout.fnmatch_lines(
26262626
color_mapping.format_for_fnmatch(
26272627
[
2628-
" {reset}{kw}def{hl-reset} {function}test_foo{hl-reset}():{endline}",
2628+
" {reset}{kw}def{hl-reset}{kwspace}{function}test_foo{hl-reset}():{endline}",
26292629
"> {kw}assert{hl-reset} {number}1{hl-reset} == {number}10{hl-reset}{endline}",
26302630
"{bold}{red}E assert 1 == 10{reset}",
26312631
]

0 commit comments

Comments
 (0)
Please sign in to comment.