44from textwrap import dedent
55from unittest import TestCase
66from unittest .mock import MagicMock
7+ from test .support import force_colorized_test_class , force_not_colorized_test_class
78
89from .support import handle_all_events , handle_events_narrow_console
910from .support import ScreenEqualMixin , code_to_events
10- from .support import prepare_console , reader_force_colors
11- from .support import reader_no_colors as prepare_reader
11+ from .support import prepare_reader , prepare_console
1212from _pyrepl .console import Event
1313from _pyrepl .reader import Reader
1414from _colorize import default_theme
1818colors = {overrides .get (k , k [0 ].lower ()): v for k , v in default_theme .repl .items ()}
1919
2020
21+ @force_not_colorized_test_class
2122class TestReader (ScreenEqualMixin , TestCase ):
2223 def test_calc_screen_wrap_simple (self ):
2324 events = code_to_events (10 * "a" )
@@ -127,13 +128,6 @@ def test_setpos_for_xy_simple(self):
127128 reader .setpos_from_xy (0 , 0 )
128129 self .assertEqual (reader .pos , 0 )
129130
130- def test_control_characters (self ):
131- code = 'flag = "🏳️🌈"'
132- events = code_to_events (code )
133- reader , _ = handle_all_events (events , prepare_reader = reader_force_colors )
134- self .assert_screen_equal (reader , 'flag = "🏳️\\ u200d🌈"' , clean = True )
135- self .assert_screen_equal (reader , 'flag {o}={z} {s}"🏳️\\ u200d🌈"{z}' .format (** colors ))
136-
137131 def test_setpos_from_xy_multiple_lines (self ):
138132 # fmt: off
139133 code = (
@@ -364,6 +358,8 @@ def test_setpos_from_xy_for_non_printing_char(self):
364358 reader .setpos_from_xy (8 , 0 )
365359 self .assertEqual (reader .pos , 7 )
366360
361+ @force_colorized_test_class
362+ class TestReaderInColor (ScreenEqualMixin , TestCase ):
367363 def test_syntax_highlighting_basic (self ):
368364 code = dedent (
369365 """\
@@ -403,7 +399,7 @@ def funct(case: str = sys.platform) -> None:
403399 )
404400 expected_sync = expected .format (a = "" , ** colors )
405401 events = code_to_events (code )
406- reader , _ = handle_all_events (events , prepare_reader = reader_force_colors )
402+ reader , _ = handle_all_events (events )
407403 self .assert_screen_equal (reader , code , clean = True )
408404 self .assert_screen_equal (reader , expected_sync )
409405 self .assertEqual (reader .pos , 2 ** 7 + 2 ** 8 )
@@ -416,7 +412,7 @@ def funct(case: str = sys.platform) -> None:
416412 [Event (evt = "key" , data = "up" , raw = bytearray (b"\x1b OA" ))] * 13 ,
417413 code_to_events ("async " ),
418414 )
419- reader , _ = handle_all_events (more_events , prepare_reader = reader_force_colors )
415+ reader , _ = handle_all_events (more_events )
420416 self .assert_screen_equal (reader , expected_async )
421417 self .assertEqual (reader .pos , 21 )
422418 self .assertEqual (reader .cxy , (6 , 1 ))
@@ -433,7 +429,7 @@ def unfinished_function(arg: str = "still typing
433429 """
434430 ).format (** colors )
435431 events = code_to_events (code )
436- reader , _ = handle_all_events (events , prepare_reader = reader_force_colors )
432+ reader , _ = handle_all_events (events )
437433 self .assert_screen_equal (reader , code , clean = True )
438434 self .assert_screen_equal (reader , expected )
439435
@@ -451,7 +447,7 @@ def unfinished_function(
451447 """
452448 ).format (** colors )
453449 events = code_to_events (code )
454- reader , _ = handle_all_events (events , prepare_reader = reader_force_colors )
450+ reader , _ = handle_all_events (events )
455451 self .assert_screen_equal (reader , code , clean = True )
456452 self .assert_screen_equal (reader , expected )
457453
@@ -471,7 +467,7 @@ def unfinished_function():
471467 """
472468 ).format (** colors )
473469 events = code_to_events (code )
474- reader , _ = handle_all_events (events , prepare_reader = reader_force_colors )
470+ reader , _ = handle_all_events (events )
475471 self .assert_screen_equal (reader , code , clean = True )
476472 self .assert_screen_equal (reader , expected )
477473
@@ -497,6 +493,13 @@ def unfinished_function():
497493 """
498494 ).format (OB = "{" , CB = "}" , ** colors )
499495 events = code_to_events (code )
500- reader , _ = handle_all_events (events , prepare_reader = reader_force_colors )
496+ reader , _ = handle_all_events (events )
501497 self .assert_screen_equal (reader , code , clean = True )
502498 self .assert_screen_equal (reader , expected )
499+
500+ def test_control_characters (self ):
501+ code = 'flag = "🏳️🌈"'
502+ events = code_to_events (code )
503+ reader , _ = handle_all_events (events )
504+ self .assert_screen_equal (reader , 'flag = "🏳️\\ u200d🌈"' , clean = True )
505+ self .assert_screen_equal (reader , 'flag {o}={z} {s}"🏳️\\ u200d🌈"{z}' .format (** colors ))
0 commit comments