Remove some more boilerplate from the actual tests in test_pdb.

This commit is contained in:
Georg Brandl 2009-09-16 16:22:12 +00:00
parent a50d20a5b1
commit 6c39f06ab2
1 changed files with 33 additions and 26 deletions

View File

@ -12,23 +12,33 @@ from test import test_support
from test_doctest import _FakeInput from test_doctest import _FakeInput
class PdbTestInput(object):
"""Context manager that makes testing Pdb in doctests easier."""
def __init__(self, input):
self.input = input
def __enter__(self):
self.real_stdin = sys.stdin
sys.stdin = _FakeInput(self.input)
def __exit__(self, *exc):
sys.stdin = self.real_stdin
def test_pdb_skip_modules(): def test_pdb_skip_modules():
"""This illustrates the simple case of module skipping. """This illustrates the simple case of module skipping.
>>> def skip_module(): >>> def skip_module():
... import string ... import string
... import pdb;pdb.Pdb(skip=['string*']).set_trace() ... import pdb; pdb.Pdb(skip=['string*']).set_trace()
... string.lower('FOO') ... string.lower('FOO')
>>> real_stdin = sys.stdin
>>> sys.stdin = _FakeInput([
... 'step',
... 'continue',
... ])
>>> try: >>> with PdbTestInput([
... 'step',
... 'continue'
... ]):
... skip_module() ... skip_module()
... finally:
... sys.stdin = real_stdin
> <doctest test.test_pdb.test_pdb_skip_modules[0]>(4)skip_module() > <doctest test.test_pdb.test_pdb_skip_modules[0]>(4)skip_module()
-> string.lower('FOO') -> string.lower('FOO')
(Pdb) step (Pdb) step
@ -36,7 +46,7 @@ def test_pdb_skip_modules():
> <doctest test.test_pdb.test_pdb_skip_modules[0]>(4)skip_module()->None > <doctest test.test_pdb.test_pdb_skip_modules[0]>(4)skip_module()->None
-> string.lower('FOO') -> string.lower('FOO')
(Pdb) continue (Pdb) continue
""" """
# Module for testing skipping of module that makes a callback # Module for testing skipping of module that makes a callback
@ -50,22 +60,19 @@ def test_pdb_skip_modules_with_callback():
>>> def skip_module(): >>> def skip_module():
... def callback(): ... def callback():
... return None ... return None
... import pdb;pdb.Pdb(skip=['module_to_skip*']).set_trace() ... import pdb; pdb.Pdb(skip=['module_to_skip*']).set_trace()
... mod.foo_pony(callback) ... mod.foo_pony(callback)
>>> real_stdin = sys.stdin
>>> sys.stdin = _FakeInput([ >>> with PdbTestInput([
... 'step', ... 'step',
... 'step', ... 'step',
... 'step', ... 'step',
... 'step', ... 'step',
... 'step', ... 'step',
... 'continue', ... 'continue',
... ]) ... ]):
>>> try:
... skip_module() ... skip_module()
... finally: ... pass # provides something to "step" to
... sys.stdin = real_stdin
> <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(5)skip_module() > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(5)skip_module()
-> mod.foo_pony(callback) -> mod.foo_pony(callback)
(Pdb) step (Pdb) step
@ -84,10 +91,10 @@ def test_pdb_skip_modules_with_callback():
> <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(5)skip_module()->None > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(5)skip_module()->None
-> mod.foo_pony(callback) -> mod.foo_pony(callback)
(Pdb) step (Pdb) step
> <doctest test.test_pdb.test_pdb_skip_modules_with_callback[3]>(4)<module>() > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[1]>(10)<module>()
-> sys.stdin = real_stdin -> pass # provides something to "step" to
(Pdb) continue (Pdb) continue
""" """
def test_main(): def test_main():