|
11 | 11 | def popen_stdout_buffer(popen_mock): |
12 | 12 | buffer = "\n".join(["🔷🔶🔺🔻"[i % 4] + " xxxx" * 20 for i in range(100)]).encode() |
13 | 13 | popen_mock.communicate.side_effect = [ |
14 | | - *[subprocess.TimeoutExpired("cmd", 1, output=buffer[:idx]) for idx in range(0, len(buffer), 38)], |
| 14 | + *[subprocess.TimeoutExpired("cmd", 1, output=buffer[:idx], stderr=b"") for idx in range(0, len(buffer), 38)], |
| 15 | + (buffer, b""), |
15 | 16 | (buffer, b""), |
16 | 17 | ] |
17 | 18 | return buffer |
18 | 19 |
|
19 | 20 |
|
20 | 21 | @pytest.mark.unit |
21 | 22 | def test_stream_iterator(popen_mock, popen_stdout_buffer, tmp_logs_folder): |
22 | | - cmd_log_path = pathlib.Path(tmp_logs_folder) / "cmd-log.txt" |
| 23 | + cmd_log_stdout_path = pathlib.Path(tmp_logs_folder) / "cmd-log-out.txt" |
| 24 | + cmd_log_stderr_path = pathlib.Path(tmp_logs_folder) / "cmd-log-err.txt" |
23 | 25 |
|
24 | | - with stream_iterator(popen_mock, "stdout", cmd_log_path) as stdout_iter: |
| 26 | + with ( |
| 27 | + stream_iterator(popen_mock, "stdout", cmd_log_stdout_path) as stdout_iter, |
| 28 | + stream_iterator(popen_mock, "stderr", cmd_log_stderr_path) as stderr_iter, |
| 29 | + ): |
25 | 30 | for stdout_line, buffer_line in itertools.zip_longest(stdout_iter, popen_stdout_buffer.splitlines()): |
26 | 31 | assert stdout_line == buffer_line.decode() |
| 32 | + assert list(stderr_iter) == [] |
27 | 33 |
|
28 | | - assert cmd_log_path.read_bytes() == popen_stdout_buffer |
| 34 | + assert cmd_log_stdout_path.read_bytes() == popen_stdout_buffer |
| 35 | + assert not cmd_log_stderr_path.exists() |
29 | 36 |
|
30 | 37 |
|
31 | 38 | @pytest.mark.unit |
|
0 commit comments