Fixes bug with stdout/stderr capture on pdb

This commit is contained in:
foxx 2016-01-08 12:41:01 +00:00
parent 29b05c8391
commit f46de68804
3 changed files with 20 additions and 1 deletions

View File

@ -73,3 +73,4 @@ Simon Gomizelj
Russel Winder
Ben Webb
Alexei Kozlenok
Cal Leeming

View File

@ -53,7 +53,9 @@ class PdbInvoke:
def pytest_exception_interact(self, node, call, report):
capman = node.config.pluginmanager.getplugin("capturemanager")
if capman:
capman.suspendcapture(in_=True)
out, err = capman.suspendcapture(in_=True)
sys.stdout.write(out)
sys.stdout.write(err)
_enter_pdb(node, call.excinfo, report)
def pytest_internalerror(self, excrepr, excinfo):

View File

@ -75,6 +75,22 @@ class TestPDB:
if child.isalive():
child.wait()
def test_pdb_interaction_capture(self, testdir):
p1 = testdir.makepyfile("""
def test_1():
print("getrekt")
assert False
""")
child = testdir.spawn_pytest("--pdb %s" % p1)
child.expect("getrekt")
child.expect("(Pdb)")
child.sendeof()
rest = child.read().decode("utf8")
assert "1 failed" in rest
assert "getrekt" not in rest
if child.isalive():
child.wait()
def test_pdb_interaction_exception(self, testdir):
p1 = testdir.makepyfile("""
import pytest