55import os
66from testutils import create_gui_project_file , cppcheck
77
8- COMPILE_COMMANDS_JSON = 'compile_commands.json'
9-
10- ERR_A = ( '%s:1:7: error: Division by zero. [zerodiv] \n ' +
11- 'x = 3 / 0; \n ' +
12- ' ^ \n ' ) % os . path . join ( 'a' , 'a.c' )
13- ERR_B = ('%s:1:7: error: Division by zero. [zerodiv]\n ' +
14- 'x = 3 / 0;\n ' +
15- ' ^\n ' ) % os .path .join ('b ' , 'b .c' )
16-
17- def realpath ( s ):
18- return os .path .realpath ( s ). replace ( ' \\ ' , '/ ' )
19-
20- def create_compile_commands ():
21- j = [{'directory' : realpath ( 'proj2/ a' ), 'command' : 'gcc -c a.c' , 'file' : 'a.c' },
22- {'directory' : realpath ( 'proj2' ) , 'command' : 'gcc -c b/b.c' , 'file' : 'b/b.c' }]
23- with open ('proj2/' + COMPILE_COMMANDS_JSON , 'wt' ) as f :
8+ __script_dir = os . path . dirname ( os . path . abspath ( __file__ ))
9+ __proj_dir = os . path . join ( __script_dir , 'proj2' )
10+
11+ __COMPILE_COMMANDS_JSON = 'compile_commands.json'
12+
13+ __ERR_A = ('%s:1:7: error: Division by zero. [zerodiv]\n ' +
14+ 'x = 3 / 0;\n ' +
15+ ' ^\n ' ) % os .path .join ('a ' , 'a .c' )
16+ __ERR_B = ( '%s:1:7: error: Division by zero. [zerodiv] \n ' +
17+ 'x = 3 / 0; \n ' +
18+ ' ^ \n ' ) % os .path .join ( 'b ' , 'b.c ' )
19+
20+ def __create_compile_commands ():
21+ j = [{'directory' : os . path . join ( __proj_dir , ' a' ), 'command' : 'gcc -c a.c' , 'file' : 'a.c' },
22+ {'directory' : __proj_dir , 'command' : 'gcc -c b/b.c' , 'file' : 'b/b.c' }]
23+ with open (os . path . join ( __proj_dir , __COMPILE_COMMANDS_JSON ) , 'wt' ) as f :
2424 f .write (json .dumps (j ))
2525
26- # Run Cppcheck from project path
27- def cppcheck_local (args ):
28- cwd = os .getcwd ()
29- os .chdir ('proj2' )
30- ret , stdout , stderr = cppcheck (args )
31- os .chdir (cwd )
32- return ret , stdout , stderr
3326
3427def test_file_filter ():
35- ret , stdout , _ = cppcheck (['proj2/' ,'--file-filter=proj2/a/*' ])
28+ ret , stdout , _ = cppcheck (['proj2/' ,'--file-filter=proj2/a/*' ], cwd = __script_dir )
3629 file1 = os .path .join ('proj2' , 'a' , 'a.c' )
3730 file2 = os .path .join ('proj2' , 'b' , 'b.c' )
38- assert ret == 0
31+ assert ret == 0 , stdout
3932 assert stdout .find ('Checking %s ...' % file1 ) >= 0
40- ret , stdout , _ = cppcheck (['proj2/' ,'--file-filter=proj2/b*' ])
33+ ret , stdout , _ = cppcheck (['proj2/' ,'--file-filter=proj2/b*' ], cwd = __script_dir )
4134 assert ret == 0 , stdout
4235 assert stdout .find ('Checking %s ...' % file2 ) >= 0
4336
4437def test_local_path ():
45- create_compile_commands ()
46- ret , stdout , _ = cppcheck_local (['--project=compile_commands.json' ])
38+ __create_compile_commands ()
39+ ret , stdout , _ = cppcheck (['--project=compile_commands.json' ], cwd = __proj_dir )
4740 file1 = os .path .join ('a' , 'a.c' )
4841 file2 = os .path .join ('b' , 'b.c' )
4942 assert ret == 0 , stdout
5043 assert stdout .find ('Checking %s ...' % file1 ) >= 0
5144 assert stdout .find ('Checking %s ...' % file2 ) >= 0
5245
5346def test_local_path_force ():
54- create_compile_commands ()
55- ret , stdout , _ = cppcheck_local (['--project=compile_commands.json' , '--force' ])
47+ __create_compile_commands ()
48+ ret , stdout , _ = cppcheck (['--project=compile_commands.json' , '--force' ], cwd = __proj_dir )
5649 assert ret == 0 , stdout
5750 assert stdout .find ('AAA' ) >= 0
5851
5952def test_local_path_maxconfigs ():
60- create_compile_commands ()
61- ret , stdout , _ = cppcheck_local (['--project=compile_commands.json' , '--max-configs=2' ])
53+ __create_compile_commands ()
54+ ret , stdout , _ = cppcheck (['--project=compile_commands.json' , '--max-configs=2' ], cwd = __proj_dir )
6255 assert ret == 0 , stdout
6356 assert stdout .find ('AAA' ) >= 0
6457
6558def test_relative_path ():
66- create_compile_commands ()
67- ret , stdout , _ = cppcheck (['--project=proj2/' + COMPILE_COMMANDS_JSON ] )
59+ __create_compile_commands ()
60+ ret , stdout , _ = cppcheck (['--project=proj2/' + __COMPILE_COMMANDS_JSON ], cwd = __script_dir )
6861 file1 = os .path .join ('proj2' , 'a' , 'a.c' )
6962 file2 = os .path .join ('proj2' , 'b' , 'b.c' )
7063 assert ret == 0 , stdout
7164 assert stdout .find ('Checking %s ...' % file1 ) >= 0
7265 assert stdout .find ('Checking %s ...' % file2 ) >= 0
7366
7467def test_absolute_path ():
75- create_compile_commands ()
76- ret , stdout , _ = cppcheck (['--project=' + os .path .realpath ( 'proj2/' + COMPILE_COMMANDS_JSON )] )
77- file1 = os .path .realpath ( 'proj2/a/ a.c' )
78- file2 = os .path .realpath ( 'proj2/b/ b.c' )
68+ __create_compile_commands ()
69+ ret , stdout , _ = cppcheck (['--project=' + os .path .join ( __proj_dir , __COMPILE_COMMANDS_JSON )], cwd = __script_dir )
70+ file1 = os .path .join ( __proj_dir , 'a' , ' a.c' )
71+ file2 = os .path .join ( __proj_dir , 'b' , ' b.c' )
7972 assert ret == 0 , stdout
8073 assert stdout .find ('Checking %s ...' % file1 ) >= 0
8174 assert stdout .find ('Checking %s ...' % file2 ) >= 0
8275
8376def test_gui_project_loads_compile_commands_1 ():
84- create_compile_commands ()
85- ret , stdout , _ = cppcheck (['--project=proj2/proj2.cppcheck' ])
77+ __create_compile_commands ()
78+ ret , stdout , _ = cppcheck (['--project=proj2/proj2.cppcheck' ], cwd = __script_dir )
8679 file1 = os .path .join ('proj2' , 'a' , 'a.c' )
8780 file2 = os .path .join ('proj2' , 'b' , 'b.c' )
8881 assert ret == 0 , stdout
8982 assert stdout .find ('Checking %s ...' % file1 ) >= 0
9083 assert stdout .find ('Checking %s ...' % file2 ) >= 0
9184
9285def test_gui_project_loads_compile_commands_2 ():
93- create_compile_commands ()
86+ __create_compile_commands ()
9487 exclude_path_1 = 'proj2/b'
95- create_gui_project_file ('proj2/ test.cppcheck' ,
88+ create_gui_project_file (os . path . join ( __proj_dir , ' test.cppcheck') ,
9689 import_project = 'compile_commands.json' ,
9790 exclude_paths = [exclude_path_1 ])
98- ret , stdout , _ = cppcheck (['--project=proj2/ test.cppcheck' ] )
91+ ret , stdout , _ = cppcheck (['--project=' + os . path . join ( ' proj2' , ' test.cppcheck')], cwd = __script_dir )
9992 file1 = os .path .join ('proj2' , 'a' , 'a.c' )
10093 file2 = os .path .join ('proj2' , 'b' , 'b.c' ) # Excluded by test.cppcheck
10194 assert ret == 0 , stdout
@@ -104,8 +97,8 @@ def test_gui_project_loads_compile_commands_2():
10497
10598
10699def test_gui_project_loads_relative_vs_solution ():
107- create_gui_project_file ('test.cppcheck' , import_project = 'proj2/proj2.sln' )
108- ret , stdout , _ = cppcheck (['--project=test.cppcheck' ])
100+ create_gui_project_file (os . path . join ( __script_dir , 'test.cppcheck' ) , import_project = 'proj2/proj2.sln' )
101+ ret , stdout , _ = cppcheck (['--project=test.cppcheck' ], cwd = __script_dir )
109102 file1 = os .path .join ('proj2' , 'a' , 'a.c' )
110103 file2 = os .path .join ('proj2' , 'b' , 'b.c' )
111104 assert ret == 0 , stdout
@@ -119,11 +112,10 @@ def test_gui_project_loads_relative_vs_solution():
119112 assert stdout .find ('Checking %s Release|x64...' % file2 ) >= 0
120113
121114def test_gui_project_loads_absolute_vs_solution ():
122- create_gui_project_file ('test.cppcheck' , import_project = realpath ('proj2/proj2.sln' ))
123- ret , stdout , _ = cppcheck (['--project=test.cppcheck' ])
124- file1 = os .path .realpath ('proj2/a/a.c' )
125- file2 = os .path .realpath ('proj2/b/b.c' )
126- print (stdout )
115+ create_gui_project_file (os .path .join (__script_dir , 'test.cppcheck' ), import_project = os .path .join (__proj_dir , 'proj2.sln' ))
116+ ret , stdout , _ = cppcheck (['--project=test.cppcheck' ], cwd = __script_dir )
117+ file1 = os .path .join (__proj_dir , 'a' , 'a.c' )
118+ file2 = os .path .join (__proj_dir , 'b' , 'b.c' )
127119 assert ret == 0 , stdout
128120 assert stdout .find ('Checking %s Debug|Win32...' % file1 ) >= 0
129121 assert stdout .find ('Checking %s Debug|x64...' % file1 ) >= 0
@@ -135,21 +127,21 @@ def test_gui_project_loads_absolute_vs_solution():
135127 assert stdout .find ('Checking %s Release|x64...' % file2 ) >= 0
136128
137129def test_gui_project_loads_relative_vs_solution_2 ():
138- create_gui_project_file ('test.cppcheck' , root_path = 'proj2' , import_project = 'proj2/proj2.sln' )
139- ret , stdout , stderr = cppcheck (['--project=test.cppcheck' ])
130+ create_gui_project_file (os . path . join ( __script_dir , 'test.cppcheck' ) , root_path = 'proj2' , import_project = 'proj2/proj2.sln' )
131+ ret , stdout , stderr = cppcheck (['--project=test.cppcheck' ], cwd = __script_dir )
140132 assert ret == 0 , stdout
141- assert stderr == ERR_A + ERR_B
133+ assert stderr == __ERR_A + __ERR_B
142134
143135def test_gui_project_loads_relative_vs_solution_with_exclude ():
144- create_gui_project_file ('test.cppcheck' , root_path = 'proj2' , import_project = 'proj2/proj2.sln' , exclude_paths = ['b' ])
145- ret , stdout , stderr = cppcheck (['--project=test.cppcheck' ])
136+ create_gui_project_file (os . path . join ( __script_dir , 'test.cppcheck' ) , root_path = 'proj2' , import_project = 'proj2/proj2.sln' , exclude_paths = ['b' ])
137+ ret , stdout , stderr = cppcheck (['--project=test.cppcheck' ], cwd = __script_dir )
146138 assert ret == 0 , stdout
147- assert stderr == ERR_A
139+ assert stderr == __ERR_A
148140
149141def test_gui_project_loads_absolute_vs_solution_2 ():
150- create_gui_project_file ('test.cppcheck' ,
151- root_path = realpath ( 'proj2' ) ,
152- import_project = realpath ( 'proj2/ proj2.sln' ))
153- ret , stdout , stderr = cppcheck (['--project=test.cppcheck' ])
142+ create_gui_project_file (os . path . join ( __script_dir , 'test.cppcheck' ) ,
143+ root_path = __proj_dir ,
144+ import_project = os . path . join ( __proj_dir , ' proj2.sln' ))
145+ ret , stdout , stderr = cppcheck (['--project=test.cppcheck' ], cwd = __script_dir )
154146 assert ret == 0 , stdout
155- assert stderr == ERR_A + ERR_B
147+ assert stderr == __ERR_A + __ERR_B
0 commit comments