Beispiel #1
0
def StdCaptureFD(  # noqa: N802
        out: bool = True,
        err: bool = True,
        in_: bool = True) -> MultiCapture[str]:
    return capture.MultiCapture(
        in_=capture.FDCapture(0) if in_ else None,
        out=capture.FDCapture(1) if out else None,
        err=capture.FDCapture(2) if err else None,
    )
Beispiel #2
0
 def test_simple(self, tmpfile):
     fd = tmpfile.fileno()
     cap = capture.FDCapture(fd)
     data = b"hello"
     os.write(fd, data)
     pytest.raises(AssertionError, cap.snap)
     cap.done()
     cap = capture.FDCapture(fd)
     cap.start()
     os.write(fd, data)
     s = cap.snap()
     cap.done()
     assert s == "hello"
Beispiel #3
0
    def test_simple_resume_suspend(self):
        with saved_fd(1):
            cap = capture.FDCapture(1)
            cap.start()
            data = b"hello"
            os.write(1, data)
            sys.stdout.write("whatever")
            s = cap.snap()
            assert s == "hellowhatever"
            cap.suspend()
            os.write(1, b"world")
            sys.stdout.write("qlwkej")
            assert not cap.snap()
            cap.resume()
            os.write(1, b"but now")
            sys.stdout.write(" yes\n")
            s = cap.snap()
            assert s == "but now yes\n"
            cap.suspend()
            cap.done()
            pytest.raises(AssertionError, cap.suspend)

            assert repr(cap) == (
                "<FDCapture 1 oldfd={} _state='done' tmpfile={!r}>".format(
                    cap.targetfd_save, cap.tmpfile))
            # Should not crash with missing "_old".
            assert repr(cap.syscapture) == (
                "<SysCapture stdout _old=<UNSET> _state='done' tmpfile={!r}>".
                format(cap.syscapture.tmpfile))
Beispiel #4
0
 def test_stderr(self):
     cap = capture.FDCapture(2)
     cap.start()
     print("hello", file=sys.stderr)
     s = cap.snap()
     cap.done()
     assert s == "hello\n"
Beispiel #5
0
 def test_writeorg(self, tmpfile):
     data1, data2 = b"foo", b"bar"
     cap = capture.FDCapture(tmpfile.fileno())
     cap.start()
     tmpfile.write(data1)
     tmpfile.flush()
     cap.writeorg(data2.decode("ascii"))
     scap = cap.snap()
     cap.done()
     assert scap == data1.decode("ascii")
     with open(tmpfile.name, "rb") as stmp_file:
         stmp = stmp_file.read()
         assert stmp == data2
Beispiel #6
0
 def test_stdin(self):
     cap = capture.FDCapture(0)
     cap.start()
     x = os.read(0, 100).strip()
     cap.done()
     assert x == b""
Beispiel #7
0
 def test_simple_fail_second_start(self, tmpfile):
     fd = tmpfile.fileno()
     cap = capture.FDCapture(fd)
     cap.done()
     pytest.raises(AssertionError, cap.start)