# 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")