forked from danmar/cppcheck
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsamples_test.py
More file actions
45 lines (34 loc) · 1.7 KB
/
samples_test.py
File metadata and controls
45 lines (34 loc) · 1.7 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
import os
import sys
from testutils import cppcheck
__script_dir = os.path.dirname(os.path.abspath(__file__))
__root_dir = os.path.abspath(os.path.join(__script_dir, '..', '..'))
def test_samples():
failures = {}
samples_dir = os.path.join(__root_dir, 'samples')
for entry in os.listdir(samples_dir):
sample_dir = os.path.join(samples_dir, entry)
if not os.path.isdir(sample_dir):
continue
with open(os.path.join(sample_dir, 'out.txt')) as out_in:
out_txt = out_in.read()
if not sys.platform == 'win32':
out_txt = out_txt.replace('\\', '/')
if not os.path.exists(os.path.join(sample_dir, 'good.c')):
good_src = os.path.join('samples', entry, 'good.cpp')
bad_src = os.path.join('samples', entry, 'bad.cpp')
else:
good_src = os.path.join('samples', entry, 'good.c')
bad_src = os.path.join('samples', entry, 'bad.c')
# check that good input does not produce any warnings
ret, _, stderr = cppcheck(['-q', '--enable=all', '--disable=missingInclude', '--inconclusive', '--check-level=exhaustive', '--error-exitcode=1', good_src], cwd=__root_dir)
if not ret == 0:
failures[good_src] = stderr
# check that the bad inout produces a warning
ret, _, stderr = cppcheck(['-q', '--enable=all', '--disable=missingInclude', '--inconclusive', '--check-level=exhaustive', '--error-exitcode=1', bad_src], cwd=__root_dir)
if not ret == 1:
failures[bad_src] = stderr
# check that the bad input procudes the expected output
if not stderr == out_txt:
failures[bad_src] = stderr
assert failures == {}