from os import stat from os.path import exists from stat import S_ISFIFO import pytest from echo_server import EchoPipeIOServer @pytest.fixture def pipe_io(): pipe_server = EchoPipeIOServer() pipe_server.run() yield pipe_server pipe_server.stop() def test_pipes_exist(pipe_io): for path in (pipe_io.in_pipe, pipe_io.out_pipe): assert exists(path) def test_pipes_isfifo(pipe_io): for path in (pipe_io.in_pipe, pipe_io.out_pipe): assert S_ISFIFO(stat(path).st_mode) @pytest.mark.parametrize( 'test_data', [ 'cats', 'cheese', 'You ever wonder why we are here?', 'Lorem ipsum dolor sit amet', 'You always have a plan, Dutch!' ] ) def test_echo_server(pipe_io, test_data): File(pipe_io.in_pipe).write(test_data) assert File(pipe_io.out_pipe).read() == test_data class File: def __init__(self, path): self.path = path def write(self, what): with open(self.path, 'w') as ofile: ofile.write(what) def read(self): with open(self.path, 'r') as ifile: return ifile.read()