summaryrefslogtreecommitdiff
path: root/testing/test_terminal.py
diff options
context:
space:
mode:
authorDaniel Hahler <git@thequod.de>2020-01-18 13:08:38 +0100
committerDaniel Hahler <git@thequod.de>2020-01-18 15:49:59 +0100
commit38fc2082051ed043820925267bd221062208afe8 (patch)
tree8e3d26d3d8fe9c21789d02837f926e56b578fd7e /testing/test_terminal.py
parentac41f36a0221a87d8c3e4bdfa27097a7d9cbf64e (diff)
downloadpytest-38fc2082051ed043820925267bd221062208afe8.tar.gz
tests: terminal: harden/improve test_color_yes
Diffstat (limited to 'testing/test_terminal.py')
-rw-r--r--testing/test_terminal.py69
1 files changed, 65 insertions, 4 deletions
diff --git a/testing/test_terminal.py b/testing/test_terminal.py
index 16fee37d6..09c9d5485 100644
--- a/testing/test_terminal.py
+++ b/testing/test_terminal.py
@@ -27,6 +27,7 @@ COLORS = {
"red": "\x1b[31m",
"green": "\x1b[32m",
"yellow": "\x1b[33m",
+ "bold": "\x1b[1m",
"reset": "\x1b[0m",
}
RE_COLORS = {k: re.escape(v) for k, v in COLORS.items()}
@@ -833,10 +834,70 @@ def test_pass_output_reporting(testdir):
def test_color_yes(testdir):
- testdir.makepyfile("def test_this(): assert 1")
- result = testdir.runpytest("--color=yes")
- assert "test session starts" in result.stdout.str()
- assert "\x1b[1m" in result.stdout.str()
+ p1 = testdir.makepyfile(
+ """
+ def fail():
+ assert 0
+
+ def test_this():
+ fail()
+ """
+ )
+ result = testdir.runpytest("--color=yes", str(p1))
+ if sys.version_info < (3, 6):
+ # py36 required for ordered markup
+ output = result.stdout.str()
+ assert "test session starts" in output
+ assert "\x1b[1m" in output
+ return
+ result.stdout.fnmatch_lines(
+ [
+ line.format(**COLORS).replace("[", "[[]")
+ for line in [
+ "{bold}=*= test session starts =*={reset}",
+ "collected 1 item",
+ "",
+ "test_color_yes.py {red}F{reset}{red} * [100%]{reset}",
+ "",
+ "=*= FAILURES =*=",
+ "{red}{bold}_*_ test_this _*_{reset}",
+ "",
+ "{bold} def test_this():{reset}",
+ "{bold}> fail(){reset}",
+ "",
+ "{bold}{red}test_color_yes.py{reset}:5: ",
+ "_ _ * _ _*",
+ "",
+ "{bold} def fail():{reset}",
+ "{bold}> assert 0{reset}",
+ "{bold}{red}E assert 0{reset}",
+ "",
+ "{bold}{red}test_color_yes.py{reset}:2: AssertionError",
+ "{red}=*= {red}{bold}1 failed{reset}{red} in *s{reset}{red} =*={reset}",
+ ]
+ ]
+ )
+ result = testdir.runpytest("--color=yes", "--tb=short", str(p1))
+ result.stdout.fnmatch_lines(
+ [
+ line.format(**COLORS).replace("[", "[[]")
+ for line in [
+ "{bold}=*= test session starts =*={reset}",
+ "collected 1 item",
+ "",
+ "test_color_yes.py {red}F{reset}{red} * [100%]{reset}",
+ "",
+ "=*= FAILURES =*=",
+ "{red}{bold}_*_ test_this _*_{reset}",
+ "{bold}{red}test_color_yes.py{reset}:5: in test_this",
+ "{bold} fail(){reset}",
+ "{bold}{red}test_color_yes.py{reset}:2: in fail",
+ "{bold} assert 0{reset}",
+ "{bold}{red}E assert 0{reset}",
+ "{red}=*= {red}{bold}1 failed{reset}{red} in *s{reset}{red} =*={reset}",
+ ]
+ ]
+ )
def test_color_no(testdir):