[3.14] gh-133346: add tests for _colorize.Theme (GH-139687) (#140622)

* gh-133346: add tests for `_colorize.Theme` (GH-139687)
(cherry picked from commit 37827c1752)

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
This commit is contained in:
Miss Islington (bot) 2025-10-26 13:49:20 +01:00 committed by GitHub
parent d664102a45
commit 46a3fd2da5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,4 +1,5 @@
import contextlib import contextlib
import dataclasses
import io import io
import sys import sys
import unittest import unittest
@ -21,6 +22,41 @@ def supports_virtual_terminal():
return contextlib.nullcontext() 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): class TestColorizeFunction(unittest.TestCase):
def test_colorized_detection_checks_for_environment_variables(self): def test_colorized_detection_checks_for_environment_variables(self):
def check(env, fallback, expected): def check(env, fallback, expected):