예제 #1
0
def test_redirect_input():
    loop = pyuv.Loop.default_loop()
    monitored = []
    def cb(evtype, info):
        monitored.append(info['data'])

    if sys.platform == 'win32':
        p = Process(loop, "someid", "echo", "cmd.exe",
                args=["/c", "proc_stdin_stdout.py"],
                redirect_output=["stdout"], redirect_input=True)

    else:
        p = Process(loop, "someid", "echo", "./proc_stdin_stdout.py",
            cwd=os.path.dirname(__file__),
            redirect_output=["stdout"], redirect_input=True)
    p.spawn()
    time.sleep(0.2)
    p.monitor_io("stdout", cb)
    p.write(b"ECHO" + linesep)

    def stop(handle):
        p.unmonitor_io("stdout", cb)
        p.stop()

    t = pyuv.Timer(loop)
    t.start(stop, 0.3, 0.0)
    loop.run()

    assert len(monitored) == 1
    assert monitored == [b'ECHO\n\n']
예제 #2
0
def test_redirect_input():
    loop = pyuv.Loop.default_loop()
    monitored = []

    def cb(evtype, info):
        monitored.append(info['data'])

    if sys.platform == 'win32':
        p = Process(loop,
                    "someid",
                    "echo",
                    "cmd.exe",
                    args=["/c", "proc_stdin_stdout.py"],
                    redirect_output=["stdout"],
                    redirect_input=True)

    else:
        p = Process(loop,
                    "someid",
                    "echo",
                    "./proc_stdin_stdout.py",
                    cwd=os.path.dirname(__file__),
                    redirect_output=["stdout"],
                    redirect_input=True)
    p.spawn()
    time.sleep(0.2)
    p.monitor_io("stdout", cb)
    p.write(b"ECHO" + linesep)

    def stop(handle):
        p.unmonitor_io("stdout", cb)
        p.stop()

    t = pyuv.Timer(loop)
    t.start(stop, 0.3, 0.0)
    loop.run()

    assert len(monitored) == 1
    assert monitored == [b'ECHO\n\n']