import contextlib
+import dataclasses
import io
import sys
import unittest
return contextlib.nullcontext()
+class TestTheme(unittest.TestCase):
+
+ def test_attributes(self):
+ # only theme configurations attributes by default
+ for field in dataclasses.fields(_colorize.Theme):
+ with self.subTest(field.name):
+ self.assertIsSubclass(field.type, _colorize.ThemeSection)
+ self.assertIsNotNone(field.default_factory)
+
+ def test_copy_with(self):
+ theme = _colorize.Theme()
+
+ copy = theme.copy_with()
+ self.assertEqual(theme, copy)
+
+ unittest_no_colors = _colorize.Unittest.no_colors()
+ copy = theme.copy_with(unittest=unittest_no_colors)
+ self.assertEqual(copy.argparse, theme.argparse)
+ self.assertEqual(copy.syntax, theme.syntax)
+ self.assertEqual(copy.traceback, theme.traceback)
+ self.assertEqual(copy.unittest, unittest_no_colors)
+
+ def test_no_colors(self):
+ # idempotence test
+ theme_no_colors = _colorize.Theme().no_colors()
+ theme_no_colors_no_colors = theme_no_colors.no_colors()
+ self.assertEqual(theme_no_colors, theme_no_colors_no_colors)
+
+ # attributes check
+ for section in dataclasses.fields(_colorize.Theme):
+ with self.subTest(section.name):
+ section_theme = getattr(theme_no_colors, section.name)
+ self.assertEqual(section_theme, section.type.no_colors())
+
+
class TestColorizeFunction(unittest.TestCase):
def test_colorized_detection_checks_for_environment_variables(self):
def check(env, fallback, expected):