From c115c0990f22701f1d8a81ca86c225d348f41652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Sun, 26 Oct 2025 13:07:31 +0100 Subject: [PATCH 1/2] gh-133346: add tests for `_colorize.Theme` (GH-139687) (cherry picked from commit 37827c17526b7d3e1275861a1207be71aef6b284) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> --- Lib/test/test__colorize.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) 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): From 5c31942f86e06794a5d7d015ba3af1624ff47fe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Sun, 26 Oct 2025 13:23:16 +0100 Subject: [PATCH 2/2] Remove redundant assertion for difflib --- Lib/test/test__colorize.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Lib/test/test__colorize.py b/Lib/test/test__colorize.py index 25012466840f18..3ac89987f91e44 100644 --- a/Lib/test/test__colorize.py +++ b/Lib/test/test__colorize.py @@ -40,7 +40,6 @@ def test_copy_with(self): 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)