https://github.com/python/cpython/commit/37827c17526b7d3e1275861a1207be71aef6b284
commit: 37827c17526b7d3e1275861a1207be71aef6b284
branch: main
author: Bénédikt Tran <[email protected]>
committer: picnixz <[email protected]>
date: 2025-10-26T12:07:31Z
summary:
gh-133346: add tests for `_colorize.Theme` (#139687)
files:
M Lib/test/test__colorize.py
diff --git a/Lib/test/test__colorize.py b/Lib/test/test__colorize.py
index b2f0bb1386fe5b..25012466840f18 100644
--- a/Lib/test/test__colorize.py
+++ b/Lib/test/test__colorize.py
@@ -1,4 +1,5 @@
import contextlib
+import dataclasses
import io
import sys
import unittest
@@ -21,6 +22,42 @@ def supports_virtual_terminal():
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.difflib, theme.difflib)
+ 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):
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]