xfstestsdb/tests/test_colors.py

106 lines
4.6 KiB
Python

# Copyright 2023 (c) Anna Schumaker.
"""Tests our color handling code."""
import os
import termcolor
import unittest
import unittest.mock
import xfstestsdb.colors
class TestColors(unittest.TestCase):
"""Test color handling code."""
def test_get_default_colors(self):
"""Test getting the default color scheme."""
os.unsetenv("XFSTESTSDB_COLORS")
self.assertEqual(xfstestsdb.colors.get_default_colors(), "dark")
os.environ["XFSTESTSDB_COLORS"] = "light"
self.assertEqual(xfstestsdb.colors.get_default_colors(), "light")
os.environ["XFSTESTSDB_COLORS"] = "none"
self.assertEqual(xfstestsdb.colors.get_default_colors(), "none")
os.environ["XFSTESTSDB_COLORS"] = "dark"
self.assertEqual(xfstestsdb.colors.get_default_colors(), "dark")
os.environ["XFSTESTSDB_COLORS"] = "invalid"
self.assertEqual(xfstestsdb.colors.get_default_colors(), "dark")
@unittest.mock.patch.dict("os.environ", {"FORCE_COLOR": "1"})
def test_dark_colors(self):
"""Test the dark color scheme."""
scheme = xfstestsdb.colors.get_colors("dark")
self.assertIsInstance(scheme, xfstestsdb.colors.ColorScheme)
self.assertIsInstance(scheme, xfstestsdb.colors.DarkScheme)
self.assertEqual(scheme.name, "dark")
self.assertEqual(scheme["diff-+"], "green")
self.assertEqual(scheme["diff--"], "red")
self.assertEqual(scheme["diff-@"], "magenta")
self.assertEqual(scheme["diff- "], "light_grey")
self.assertEqual(scheme["fg"], "light_grey")
self.assertEqual(scheme["fg-odd"], "light_grey")
self.assertEqual(scheme["fg-even"], "cyan")
self.assertEqual(scheme["fg-header"], "yellow")
self.assertEqual(scheme["fg-passed"], "green")
self.assertEqual(scheme["fg-failure"], "red")
self.assertEqual(scheme["fg-skipped"], "dark_grey")
self.assertEqual(scheme["fg-testcase"], "cyan")
self.assertFalse(scheme["fg-dark"])
self.assertEqual(scheme["table-bg"], "black")
self.assertEqual(scheme["table-border"], "dark_grey")
self.assertEqual(scheme["any-key"], None)
self.assertEqual(scheme.format("text", bgcolor="table-bg",
bold=True, dark="fg-dark"),
termcolor.colored("text", on_color="on_black",
attrs=["bold"]))
self.assertEqual(scheme.format("text", bgcolor="other", bold=False),
termcolor.colored("text", on_color=None))
@unittest.mock.patch.dict("os.environ", {"FORCE_COLOR": "1"})
def test_light_colors(self):
"""Test the light color scheme."""
scheme = xfstestsdb.colors.get_colors("light")
self.assertIsInstance(scheme, xfstestsdb.colors.ColorScheme)
self.assertIsInstance(scheme, xfstestsdb.colors.LightScheme)
self.assertEqual(scheme.name, "light")
self.assertEqual(scheme["diff-+"], "green")
self.assertEqual(scheme["diff--"], "red")
self.assertEqual(scheme["diff-@"], "magenta")
self.assertEqual(scheme["diff- "], "light_grey")
self.assertEqual(scheme["fg"], "dark_grey")
self.assertEqual(scheme["fg-odd"], "dark_grey")
self.assertEqual(scheme["fg-even"], "green")
self.assertEqual(scheme["fg-header"], "blue")
self.assertEqual(scheme["fg-passed"], "green")
self.assertEqual(scheme["fg-failure"], "red")
self.assertEqual(scheme["fg-skipped"], "light_grey")
self.assertEqual(scheme["fg-testcase"], "cyan")
self.assertTrue(scheme["fg-dark"])
self.assertEqual(scheme["table-bg"], "white")
self.assertEqual(scheme["table-border"], "light_grey")
self.assertEqual(scheme["any-key"], None)
self.assertEqual(scheme.format("text", dark="fg-dark"),
termcolor.colored("text", attrs=["dark"]))
self.assertEqual(scheme.format("text", dark=True),
termcolor.colored("text", attrs=["dark"]))
@unittest.mock.patch.dict("os.environ", {"FORCE_COLOR": "1"})
def test_none_colors(self):
"""Test the fallback color scheme."""
scheme = xfstestsdb.colors.get_colors("none")
self.assertIsInstance(scheme, xfstestsdb.colors.ColorScheme)
self.assertIsInstance(scheme, xfstestsdb.colors.NoneScheme)
self.assertEqual(scheme.name, "none")
self.assertFalse(scheme["fg-dark"])
self.assertEqual(scheme["any-key"], None)
self.assertEqual(scheme.format("text", bgcolor="table-bg", bold=True),
"text")