-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.py
More file actions
28 lines (20 loc) · 778 Bytes
/
test.py
File metadata and controls
28 lines (20 loc) · 778 Bytes
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
import os
import pytest
def check_parser(parser, scanner, text, capfd, filename):
parser.parse(text, lexer=scanner.lexer)
out, err = capfd.readouterr()
assert out == "", f"Failed on {filename}"
def test_parser(capfd):
from src.parser import parser as parser_module
from src.scanner import scanner
parser = parser_module.parser
example_dir = "examples"
for filename in os.listdir(example_dir):
filename = os.path.join(example_dir, filename)
file = open(filename, "r")
text = file.read()
if "error" in filename:
with pytest.raises(AssertionError):
check_parser(parser, scanner, text, capfd, filename)
else:
check_parser(parser, scanner, text, capfd, filename)