Exemple #1
0
def test_consoleread_empty():
    def sayyes(prompt):
        return ''

    with utils.obj_in_module(callbacks, 'consoleread', sayyes):
        prompt = openrlib.ffi.new('char []', b'foo')
        n = 1000
        buf = openrlib.ffi.new('char [%i]' % n)
        res = callbacks._consoleread(prompt, buf, n, 0)
    assert res == 0
    assert len(openrlib.ffi.string(buf).decode('utf-8')) == 0
Exemple #2
0
def test_consoleread():
    msg = 'yes'

    def sayyes(prompt):
        return msg

    with utils.obj_in_module(callbacks, 'consoleread', sayyes):
        prompt = openrlib.ffi.new('char []', b'foo')
        n = 1000
        buf = openrlib.ffi.new('char [%i]' % n)
        res = callbacks._consoleread(prompt, buf, n, 0)
    assert res == 1
    assert (msg + os.linesep) == openrlib.ffi.string(buf).decode('ascii')
Exemple #3
0
def test_consoleread():
    msg_orig = 'yes'

    def sayyes(prompt):
        return msg_orig

    with utils.obj_in_module(callbacks, 'consoleread', sayyes):
        prompt = openrlib.ffi.new('char []', b'foo')
        n = 1000
        buf = openrlib.ffi.new('char [%i]' % n)
        res = callbacks._consoleread(prompt, buf, n, 0)
    assert res == 1
    msg = openrlib.ffi.string(buf).decode('utf-8')
    assert msg_orig == msg.rstrip()
Exemple #4
0
def test_console_read_with_error(caplog):

    msg = "Doesn't work."

    def f(prompt):
        raise Exception(msg)

    with utils.obj_in_module(callbacks, 'consoleread', f),\
            caplog.at_level(logging.ERROR, logger='callbacks.logger'):
        caplog.clear()
        prompt = openrlib.ffi.new('char []', b'foo')
        n = 1000
        buf = openrlib.ffi.new('char [%i]' % n)
        res = callbacks._consoleread(prompt, buf, n, 0)
        assert res == 0
        assert len(caplog.record_tuples) > 0
        for x in caplog.record_tuples:
            assert x == ('rpy2.rinterface_lib.callbacks', logging.ERROR,
                         (callbacks._READCONSOLE_EXCEPTION_LOG % msg))