diff --git a/_pytest/capture.py b/_pytest/capture.py index a63738315..c5ad88f2f 100644 --- a/_pytest/capture.py +++ b/_pytest/capture.py @@ -426,7 +426,7 @@ class StdCaptureBase(object): if hasattr(self, '_reset'): raise ValueError("was already reset") self._reset = True - outfile, errfile = self.stop_capturing(save=False) + outfile, errfile = self.stop_capturing() out, err = "", "" if outfile and not outfile.closed: out = outfile.read() @@ -452,24 +452,9 @@ class StdCaptureFD(StdCaptureBase): is invalid it will not be captured. """ def __init__(self, out=True, err=True, in_=True, patchsys=True): - self._options = { - "out": out, - "err": err, - "in_": in_, - "patchsys": patchsys, - } - self._save() - - def _save(self): - in_ = self._options['in_'] - out = self._options['out'] - err = self._options['err'] - patchsys = self._options['patchsys'] if in_: try: - self.in_ = FDCapture( - 0, tmpfile=None, - patchsys=patchsys) + self.in_ = FDCapture(0, tmpfile=None, patchsys=patchsys) except OSError: pass if out: @@ -477,10 +462,7 @@ class StdCaptureFD(StdCaptureBase): if hasattr(out, 'write'): tmpfile = out try: - self.out = FDCapture( - 1, tmpfile=tmpfile, - patchsys=patchsys) - self._options['out'] = self.out.tmpfile + self.out = FDCapture(1, tmpfile=tmpfile, patchsys=patchsys) except OSError: pass if err: @@ -489,10 +471,7 @@ class StdCaptureFD(StdCaptureBase): else: tmpfile = None try: - self.err = FDCapture( - 2, tmpfile=tmpfile, - patchsys=patchsys) - self._options['err'] = self.err.tmpfile + self.err = FDCapture(2, tmpfile=tmpfile, patchsys=patchsys) except OSError: pass @@ -507,7 +486,7 @@ class StdCaptureFD(StdCaptureBase): #def pytest_sessionfinish(self): # self.reset_capturings() - def stop_capturing(self, save=True): + def stop_capturing(self): """ return (outfile, errfile) and stop capturing. """ outfile = errfile = None if hasattr(self, 'out') and not self.out.tmpfile.closed: @@ -516,8 +495,6 @@ class StdCaptureFD(StdCaptureBase): errfile = self.err.done() if hasattr(self, 'in_'): self.in_.done() - if save: - self._save() return outfile, errfile def readouterr(self): @@ -577,7 +554,7 @@ class StdCapture(StdCaptureBase): if self.in_: sys.stdin = self.in_ = DontReadFromInput() - def stop_capturing(self, save=True): + def stop_capturing(self): """ return (outfile, errfile) and stop capturing. """ outfile = errfile = None if self.out and not self.out.closed: diff --git a/testing/test_capture.py b/testing/test_capture.py index ed5e6c7d8..1a98b556d 100644 --- a/testing/test_capture.py +++ b/testing/test_capture.py @@ -873,25 +873,6 @@ class TestStdCapture: pytest.raises(IOError, "sys.stdin.read()") out, err = cap.reset() - def test_suspend_resume(self): - cap = self.getcapture(out=True, err=False, in_=False) - try: - print ("hello") - sys.stderr.write("error\n") - out, err = cap.readouterr() - cap.stop_capturing() - assert out == "hello\n" - assert not err - print ("in between") - sys.stderr.write("in between\n") - cap.start_capturing() - print ("after") - sys.stderr.write("error_after\n") - finally: - out, err = cap.reset() - assert out == "after\n" - assert not err - class TestStdCaptureFD(TestStdCapture): pytestmark = needsosdup @@ -925,12 +906,9 @@ class TestStdCaptureFD(TestStdCapture): @needsosdup def test_stdcapture_fd_tmpfile(tmpfile): capfd = capture.StdCaptureFD(out=tmpfile) - try: - os.write(1, "hello".encode("ascii")) - os.write(2, "world".encode("ascii")) - outf, errf = capfd.stop_capturing() - finally: - capfd.reset() + os.write(1, "hello".encode("ascii")) + os.write(2, "world".encode("ascii")) + outf, errf = capfd.stop_capturing() assert outf == tmpfile