-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconftest.py
86 lines (66 loc) · 2.57 KB
/
conftest.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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#=========================================================================
# conftest
#=========================================================================
import pytest
import random
def pytest_addoption(parser):
parser.addoption( "--dump-vcd", action="store_true",
help="dump vcd for each test" )
parser.addoption( "--dump-asm", action="store_true",
help="dump asm file for each test" )
parser.addoption( "--dump-bin", action="store_true",
help="dump binary file for each test" )
parser.addoption( "--test-verilog", action="store",
default='', nargs='?', const='zeros',
choices=[ '', 'zeros', 'ones', 'rand' ],
help="run verilog translation" )
parser.addoption( "--prtl", action="store_true",
help="use PRTL implementations" )
parser.addoption( "--vrtl", action="store_true",
help="use VRTL implementations" )
@pytest.fixture(autouse=True)
def fix_randseed():
"""Set the random seed prior to each test case."""
random.seed(0xdeadbeef)
@pytest.fixture()
def dump_vcd(request):
"""Dump VCD for each test."""
if request.config.option.dump_vcd:
test_module = request.module.__name__
test_name = request.node.name
return '{}.{}.vcd'.format( test_module, test_name )
else:
return ''
@pytest.fixture()
def dump_asm(request):
"""Dump Assembly File for each test."""
return request.config.option.dump_asm
@pytest.fixture()
def dump_bin(request):
"""Dump Binary File for each test."""
return request.config.option.dump_bin
@pytest.fixture
def test_verilog(request):
"""Test Verilog translation rather than python."""
return request.config.option.test_verilog
def pytest_cmdline_preparse(config, args):
"""Don't write *.pyc and __pycache__ files."""
import sys
sys.dont_write_bytecode = True
def pytest_runtest_setup(item):
test_verilog = item.config.option.test_verilog
if test_verilog and 'test_verilog' not in item.funcargnames:
pytest.skip("ignoring non-Verilog tests")
def pytest_report_header(config):
if config.option.prtl:
return "forcing RTL language to be pymtl"
elif config.option.vrtl:
return "forcing RTL language to be verilog"
# From:
# https://pytest.org/latest/example/simple.html#detect-if-running-from-within-a-pytest-run
def pytest_configure(config):
import sys
sys._called_from_test = True
def pytest_unconfigure(config):
import sys
del sys._called_from_test