forked from cppcheck-opensource/cppcheck
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfuzz_test.py
More file actions
46 lines (32 loc) · 1.3 KB
/
fuzz_test.py
File metadata and controls
46 lines (32 loc) · 1.3 KB
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
import os
import subprocess
from testutils import cppcheck
__script_dir = os.path.dirname(os.path.abspath(__file__))
def test_fuzz_crash():
failures = {}
fuzz_crash_dir = os.path.join(__script_dir, 'fuzz-crash')
for f in os.listdir(fuzz_crash_dir):
ret, stdout, stderr = cppcheck(['-q', '--language=c++', '--enable=all', '--inconclusive', f], cwd=fuzz_crash_dir)
if ret != 0:
failures[f] = stdout + stderr
assert failures == {}
def test_fuzz_crash_c():
failures = {}
fuzz_crash_dir = os.path.join(__script_dir, 'fuzz-crash_c')
# TODO: remove check if we have test data
if not os.path.exists(fuzz_crash_dir):
return
for f in os.listdir(fuzz_crash_dir):
ret, stdout, stderr = cppcheck(['-q', '--language=c', '--enable=all', '--inconclusive', f], cwd=fuzz_crash_dir)
if ret != 0:
failures[f] = stdout + stderr
assert failures == {}
def test_fuzz_timeout():
failures = []
fuzz_timeout_dir = os.path.join(__script_dir, 'fuzz-timeout')
for f in os.listdir(fuzz_timeout_dir):
try:
cppcheck(['-q', '--language=c++', '--enable=all', '--inconclusive', f], cwd=fuzz_timeout_dir, timeout=5)
except subprocess.TimeoutExpired:
failures.append(f)
assert failures == []