|
1 | | -import io |
2 | | -import sys |
3 | | -from typing import Callable |
4 | | - |
5 | 1 | import pytest |
6 | 2 |
|
7 | 3 | from cowsay import char_funcs, char_names |
8 | 4 | from . import solutions |
9 | 5 |
|
10 | 6 |
|
11 | | -def capture_output(function: Callable, arguments: str) -> str: |
12 | | - captured_output = io.StringIO() |
13 | | - sys.stdout = captured_output |
14 | | - function(arguments) |
15 | | - sys.stdout = sys.__stdout__ |
16 | | - captured_output.seek(0) |
17 | | - return captured_output.read() |
18 | | - |
19 | | - |
20 | | -def delete_empty_lines(data): |
21 | | - new_data = [] |
22 | | - for line in data.splitlines(): |
23 | | - if len(line.strip()) > 0: |
24 | | - new_data.append(line.rstrip()) |
25 | | - return new_data |
26 | | - |
27 | | - |
28 | 7 | @pytest.mark.parametrize('char', char_names, ids=char_names) |
29 | | -def test_char_solution(char): |
| 8 | +def test_char_solution(char, capsys): |
30 | 9 |
|
31 | 10 | lorem: str = ( |
32 | 11 | 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam' |
33 | 12 | 'nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,' |
34 | 13 | 'sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.' |
35 | 14 | ) |
36 | 15 |
|
37 | | - output = capture_output(char_funcs[char], lorem) |
38 | | - output = delete_empty_lines(output) |
39 | | - solution = delete_empty_lines(solutions.CHARS_SOLUTIONS[char]) |
40 | | - assert output == solution |
| 16 | + char_funcs[char](lorem) |
| 17 | + out, _ = capsys.readouterr() |
| 18 | + assert out == solutions.CHARS_SOLUTIONS[char].lstrip('\n') |
0 commit comments