import pytest from calculate.utils.files import Process from subprocess import run, PIPE @pytest.mark.files_utils class TestUtils(): def test_if_single_correct_command_executed_using_Process_object__it_successfully_executes(self): try: ls_process = Process('ls', '-a', cwd='/') ls_result = run('ls -a', shell=True, stdout=PIPE, cwd='/') except Exception as error: print('error:', str(error)) assert False output = ls_process.read().strip() result = ls_result.stdout.decode().strip() assert output == result def test_if_pipe_is_executed_using_Process_object__it_has_successfully_executed(self): try: pipe = Process('grep', 'VGA', stdin=Process('/usr/sbin/lspci') ) pipe_result = run('/usr/sbin/lspci | grep "VGA"', shell=True, stdout=PIPE) except Exception as error: print('error:', str(error)) assert False output = pipe.read().strip() result = pipe_result.stdout.decode().strip() assert output == result def test_if_a_pipe_Process_object_uses_for_several_writes_without_readings__it_successfully_executes(self): input_lines = ['KEY: important line.\n', 'NONE: not important line.\n', 'NONE: nothing interesting.\n', 'KEY: another line.\n'] output_text = 'KEY: important line.\nKEY: another line.\n' try: pipe = Process('grep', 'KEY', stdin=Process('cat', stdin=PIPE) ) except Exception as error: print('error:', str(error)) assert False for line in input_lines: pipe.write(line) output = pipe.read() assert output == output_text def test_if_a_pipe_Process_object_uses_for_several_writes__it_successfully_executes_even_after_read(self): input_lines = ['KEY: important line.\n', 'NONE: not important line.\n', 'NONE: nothing interesting.\n', 'KEY: another line.\n'] output_lines = ['KEY: important line.\n', 'KEY: another line.\n'] try: pipe = Process('grep', 'KEY', stdin=Process('cat', stdin=PIPE) ) except Exception as error: print('error:', str(error)) assert False output = [] for line in input_lines: pipe.write(line) output_line = pipe.read() if output_line: output.append(output_line) assert output == output_lines