Skip to content

Commit 4fc6853

Browse files
Simplify tests for reader with buggy prompt
1 parent 5293313 commit 4fc6853

File tree

1 file changed

+43
-50
lines changed

1 file changed

+43
-50
lines changed

Lib/test/test_pyrepl/test_reader.py

Lines changed: 43 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,23 @@
1212
from _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+
1532
class 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:\nsome_function()\nsome_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:\nfunc()\nfunc()"),
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:\nsome_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:\nsome_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

Comments
 (0)