1212from _pyrepl .utils import DEFAULT_PS1 , DEFAULT_PS2 , DEFAULT_PS3 , DEFAULT_PS4
1313
1414
15+ def prepare_reader_with_prompt (
16+ console , ps1 = DEFAULT_PS1 , ps2 = DEFAULT_PS2 , ps3 = DEFAULT_PS3 , ps4 = DEFAULT_PS4 ):
17+ reader = prepare_reader (
18+ console ,
19+ can_colorize = False ,
20+ paste_mode = False ,
21+ ps1 = ps1 ,
22+ ps2 = ps2 ,
23+ ps3 = ps3 ,
24+ ps4 = ps4
25+ )
26+
27+ # we should use original get_prompt from reader to get exceptions
28+ del reader .get_prompt
29+ return reader
30+
31+
1532class TestReader (ScreenEqualMixin , TestCase ):
1633 def test_calc_screen_wrap_simple (self ):
1734 events = code_to_events (10 * "a" )
@@ -304,21 +321,14 @@ def test_prompt_ps1_raise_exception(self):
304321 class Prompt :
305322 def __str__ (self ): 1 / 0
306323
307- def prepare_reader_keep_prompts (* args , ** kwargs ):
308- reader = prepare_reader (* args , ** kwargs )
309- del reader .get_prompt
310- reader .ps1 = Prompt ()
311- reader .ps2 = "... "
312- reader .ps3 = "... "
313- reader .ps4 = ""
314- reader .can_colorize = False
315- reader .paste_mode = False
316- return reader
324+ _prepare_reader = functools .partial (
325+ prepare_reader_with_prompt ,
326+ ps1 = Prompt (),
327+ )
317328
318- events = code_to_events ("a=1" )
319- reader , _ = handle_events_narrow_console (
320- events ,
321- prepare_reader = prepare_reader_keep_prompts ,
329+ reader , _ = handle_all_events (
330+ events = code_to_events ("a=1" ),
331+ prepare_reader = _prepare_reader
322332 )
323333
324334 prompt = reader .get_prompt (0 , False )
@@ -329,21 +339,17 @@ def test_prompt_ps2_ps3_ps4_raise_exception(self):
329339 class Prompt :
330340 def __str__ (self ): 1 / 0
331341
332- def prepare_reader_keep_prompts (* args , ** kwargs ):
333- reader = prepare_reader (* args , ** kwargs )
334- del reader .get_prompt
335- reader .ps1 = Prompt ()
336- reader .ps2 = Prompt ()
337- reader .ps3 = Prompt ()
338- reader .ps4 = Prompt ()
339- reader .can_colorize = False
340- reader .paste_mode = False
341- return reader
342+ _prepare_reader = functools .partial (
343+ prepare_reader_with_prompt ,
344+ ps1 = Prompt (),
345+ ps2 = Prompt (),
346+ ps3 = Prompt (),
347+ ps4 = Prompt (),
348+ )
342349
343- events = code_to_events ("if some_condition:\n some_function()\n some_function()" )
344- reader , _ = handle_events_narrow_console (
345- events ,
346- prepare_reader = prepare_reader_keep_prompts ,
350+ reader , _ = handle_all_events (
351+ events = code_to_events ("if cond:\n func()\n func()" ),
352+ prepare_reader = _prepare_reader
347353 )
348354
349355 prompt = reader .get_prompt (0 , False )
@@ -359,20 +365,11 @@ def test_prompt_arg_raise_exception(self):
359365 # Handles exceptions from arg prompt
360366 class Prompt :
361367 def __str__ (self ): 1 / 0
362-
363368 def __rmul__ (self , b ): return b
364369
365- def prepare_reader_keep_prompts (* args , ** kwargs ):
366- reader = prepare_reader (* args , ** kwargs )
367- del reader .get_prompt
368- reader .can_colorize = False
369- reader .paste_mode = False
370- return reader
371-
372- events = code_to_events ("if some_condition:\n some_function()" )
373- reader , _ = handle_events_narrow_console (
374- events ,
375- prepare_reader = prepare_reader_keep_prompts ,
370+ reader , _ = handle_all_events (
371+ events = code_to_events ("if some_condition:\n some_function()" ),
372+ prepare_reader = prepare_reader_with_prompt ,
376373 )
377374
378375 reader .arg = Prompt ()
@@ -391,19 +388,15 @@ def test_prompt_raise_exception(self):
391388 class Prompt :
392389 def __str__ (self ): raise cls (msg )
393390
394- def prepare_reader_keep_prompts (* args , ** kwargs ):
395- reader = prepare_reader (* args , ** kwargs )
396- del reader .get_prompt
397- reader .ps1 = Prompt ()
398- reader .can_colorize = False
399- reader .paste_mode = False
400- return reader
391+ _prepare_reader = functools .partial (
392+ prepare_reader_with_prompt ,
393+ ps1 = Prompt (),
394+ )
401395
402396 with self .assertRaisesRegex (cls , msg ):
403- events = code_to_events ("a=1" )
404397 handle_events_narrow_console (
405- events ,
406- prepare_reader = prepare_reader_keep_prompts ,
398+ events = code_to_events ( "a=1" ) ,
399+ prepare_reader = _prepare_reader ,
407400 )
408401
409402 def test_completions_updated_on_key_press (self ):
0 commit comments