Merge pull request #6498 from blueyed/test_terminal_colors

test_terminal: improve color handling
This commit is contained in:
Daniel Hahler 2020-01-18 13:36:42 +01:00 committed by GitHub
commit 59bc6efbf2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 15 deletions

View File

@ -3,6 +3,7 @@ terminal reporting of the full testing process.
""" """
import collections import collections
import os import os
import re
import sys import sys
import textwrap import textwrap
from io import StringIO from io import StringIO
@ -21,10 +22,14 @@ from _pytest.terminal import getreportopt
from _pytest.terminal import TerminalReporter from _pytest.terminal import TerminalReporter
DistInfo = collections.namedtuple("DistInfo", ["project_name", "version"]) DistInfo = collections.namedtuple("DistInfo", ["project_name", "version"])
RED = r"\x1b\[31m"
GREEN = r"\x1b\[32m" COLORS = {
YELLOW = r"\x1b\[33m" "red": "\x1b[31m",
RESET = r"\x1b\[0m" "green": "\x1b[32m",
"yellow": "\x1b[33m",
"reset": "\x1b[0m",
}
RE_COLORS = {k: re.escape(v) for k, v in COLORS.items()}
class Option: class Option:
@ -1548,18 +1553,15 @@ class TestProgressOutputStyle:
def test_foobar(i): raise ValueError() def test_foobar(i): raise ValueError()
""", """,
) )
output = testdir.runpytest() result = testdir.runpytest()
output.stdout.re_match_lines( result.stdout.re_match_lines(
[ [
r"test_bar.py ({green}\.{reset}){{10}}{green} \s+ \[ 50%\]{reset}".format( line.format(**RE_COLORS)
green=GREEN, reset=RESET for line in [
), r"test_bar.py ({green}\.{reset}){{10}}{green} \s+ \[ 50%\]{reset}",
r"test_foo.py ({green}\.{reset}){{5}}{yellow} \s+ \[ 75%\]{reset}".format( r"test_foo.py ({green}\.{reset}){{5}}{yellow} \s+ \[ 75%\]{reset}",
green=GREEN, reset=RESET, yellow=YELLOW r"test_foobar.py ({red}F{reset}){{5}}{red} \s+ \[100%\]{reset}",
), ]
r"test_foobar.py ({red}F{reset}){{5}}{red} \s+ \[100%\]{reset}".format(
reset=RESET, red=RED
),
] ]
) )