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
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')
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()
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))