def test_line_reader(self): reader, writer = os.pipe() try: loop = EventLoop() data = [ 'Lorem ipsum\n', 'dolor\nsit\namet, ', 'consectetur', ' adipiscing ', 'elit.\nAliquam magna dolor, ', # no newline character at the end ] # Reverse because list.pop() pops at the end. data = data[::-1] start = time.time() @loop.add_timer(.01, repeat=True) def slow_write(): if data: d = data.pop() assert os.write(writer, d) == len(d) else: loop.stop() lines = [] loop.line_reader(reader, max_block_size=5)(lines.append) loop.run() assert lines == [ 'Lorem ipsum\n', 'dolor\n', 'sit\n', 'amet, consectetur adipiscing elit.\n' ] finally: os.close(reader) os.close(writer)