-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathtest_readme.py
33 lines (25 loc) · 1.05 KB
/
test_readme.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import re
import pytest
import exit
with open("README.md") as fp:
pattern = re.compile("\\| (\\d+) \\| `(\\w+)` \\| .* \\|")
expected_constants = {}
for line in fp:
if result := pattern.match(line):
expected_constants[result.group(2)] = int(result.group(1))
actual_constants = {code.name: code.value for code in exit.Code}
@pytest.mark.parametrize("code_name", set(expected_constants) | set(actual_constants))
def test_foo(code_name):
if code_name not in actual_constants:
assert (
False
), f"exit.py does not define the exit code {code_name} ({expected_constants[code_name]})"
if code_name not in expected_constants:
assert (
False
), f"exit.py defines an undocumented exit code {code_name} ({actual_constants[code_name]})"
if actual_constants[code_name] != expected_constants[code_name]:
assert False, (
f"exit.py defines {code_name} as {actual_constants[code_name]},"
f"README.md defines it as {expected_constants[code_name]}"
)