2024-05-01 21:27:06 +03:00
|
|
|
import contextlib
|
|
|
|
import sys
|
|
|
|
import unittest
|
|
|
|
import unittest.mock
|
|
|
|
import _colorize
|
|
|
|
from test.support import force_not_colorized
|
|
|
|
|
|
|
|
ORIGINAL_CAN_COLORIZE = _colorize.can_colorize
|
|
|
|
|
|
|
|
|
|
|
|
def setUpModule():
|
|
|
|
_colorize.can_colorize = lambda: False
|
|
|
|
|
|
|
|
|
|
|
|
def tearDownModule():
|
|
|
|
_colorize.can_colorize = ORIGINAL_CAN_COLORIZE
|
|
|
|
|
|
|
|
|
|
|
|
class TestColorizeFunction(unittest.TestCase):
|
|
|
|
@force_not_colorized
|
|
|
|
def test_colorized_detection_checks_for_environment_variables(self):
|
2024-12-14 22:25:49 +07:00
|
|
|
flags = unittest.mock.MagicMock(ignore_environment=False)
|
|
|
|
with (unittest.mock.patch("os.isatty") as isatty_mock,
|
|
|
|
unittest.mock.patch("sys.stderr") as stderr_mock,
|
|
|
|
unittest.mock.patch("sys.flags", flags),
|
|
|
|
unittest.mock.patch("_colorize.can_colorize", ORIGINAL_CAN_COLORIZE),
|
|
|
|
(unittest.mock.patch("nt._supports_virtual_terminal", return_value=False)
|
|
|
|
if sys.platform == "win32" else
|
|
|
|
contextlib.nullcontext()) as vt_mock):
|
|
|
|
|
|
|
|
isatty_mock.return_value = True
|
|
|
|
stderr_mock.fileno.return_value = 2
|
|
|
|
stderr_mock.isatty.return_value = True
|
|
|
|
with unittest.mock.patch("os.environ", {'TERM': 'dumb'}):
|
|
|
|
self.assertEqual(_colorize.can_colorize(), False)
|
|
|
|
with unittest.mock.patch("os.environ", {'PYTHON_COLORS': '1'}):
|
|
|
|
self.assertEqual(_colorize.can_colorize(), True)
|
|
|
|
with unittest.mock.patch("os.environ", {'PYTHON_COLORS': '0'}):
|
|
|
|
self.assertEqual(_colorize.can_colorize(), False)
|
|
|
|
with unittest.mock.patch("os.environ", {'NO_COLOR': '1'}):
|
|
|
|
self.assertEqual(_colorize.can_colorize(), False)
|
|
|
|
with unittest.mock.patch("os.environ",
|
|
|
|
{'NO_COLOR': '1', "PYTHON_COLORS": '1'}):
|
|
|
|
self.assertEqual(_colorize.can_colorize(), True)
|
|
|
|
with unittest.mock.patch("os.environ", {'FORCE_COLOR': '1'}):
|
|
|
|
self.assertEqual(_colorize.can_colorize(), True)
|
|
|
|
with unittest.mock.patch("os.environ",
|
|
|
|
{'FORCE_COLOR': '1', 'NO_COLOR': '1'}):
|
|
|
|
self.assertEqual(_colorize.can_colorize(), False)
|
|
|
|
with unittest.mock.patch("os.environ",
|
|
|
|
{'FORCE_COLOR': '1', "PYTHON_COLORS": '0'}):
|
|
|
|
self.assertEqual(_colorize.can_colorize(), False)
|
|
|
|
|
|
|
|
with unittest.mock.patch("os.environ", {}):
|
|
|
|
if sys.platform == "win32":
|
2024-05-01 21:27:06 +03:00
|
|
|
self.assertEqual(_colorize.can_colorize(), False)
|
2024-12-14 22:25:49 +07:00
|
|
|
|
|
|
|
vt_mock.return_value = True
|
2024-05-01 21:27:06 +03:00
|
|
|
self.assertEqual(_colorize.can_colorize(), True)
|
2024-12-14 22:25:49 +07:00
|
|
|
else:
|
2024-05-01 21:27:06 +03:00
|
|
|
self.assertEqual(_colorize.can_colorize(), True)
|
2024-12-14 22:25:49 +07:00
|
|
|
|
2024-05-01 21:27:06 +03:00
|
|
|
isatty_mock.return_value = False
|
2024-12-14 22:25:49 +07:00
|
|
|
stderr_mock.isatty.return_value = False
|
|
|
|
self.assertEqual(_colorize.can_colorize(), False)
|
2024-05-01 21:27:06 +03:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
unittest.main()
|