106 lines
4.6 KiB
Python
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")
|