33
44import json
55import os
6+ import shutil
67from testutils import create_gui_project_file , cppcheck
78
89__script_dir = os .path .dirname (os .path .abspath (__file__ ))
1718 'x = 3 / 0;\n ' +
1819 ' ^\n ' ) % os .path .join ('b' , 'b.c' )
1920
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 :
21+ def __create_compile_commands (proj_dir ):
22+ proj_dir = str (proj_dir )
23+ j = [{'directory' : os .path .join (proj_dir , 'a' ), 'command' : 'gcc -c a.c' , 'file' : 'a.c' },
24+ {'directory' : proj_dir , 'command' : 'gcc -c b/b.c' , 'file' : 'b/b.c' }]
25+ with open (os .path .join (proj_dir , __COMPILE_COMMANDS_JSON ), 'wt' ) as f :
2426 f .write (json .dumps (j ))
2527
2628
@@ -34,74 +36,87 @@ def test_file_filter():
3436 assert ret == 0 , stdout
3537 assert stdout .find ('Checking %s ...' % file2 ) >= 0
3638
37- def test_local_path ():
38- __create_compile_commands ()
39- ret , stdout , _ = cppcheck (['--project=compile_commands.json' ], cwd = __proj_dir )
39+ def test_local_path (tmp_path ):
40+ proj_dir = tmp_path / 'proj2'
41+ shutil .copytree (__proj_dir , proj_dir )
42+ __create_compile_commands (proj_dir )
43+ ret , stdout , _ = cppcheck (['--project=compile_commands.json' ], cwd = proj_dir )
4044 file1 = os .path .join ('a' , 'a.c' )
4145 file2 = os .path .join ('b' , 'b.c' )
4246 assert ret == 0 , stdout
4347 assert stdout .find ('Checking %s ...' % file1 ) >= 0
4448 assert stdout .find ('Checking %s ...' % file2 ) >= 0
4549
46- def test_local_path_force ():
47- __create_compile_commands ()
48- ret , stdout , _ = cppcheck (['--project=compile_commands.json' , '--force' ], cwd = __proj_dir )
50+ def test_local_path_force (tmp_path ):
51+ proj_dir = tmp_path / 'proj2'
52+ shutil .copytree (__proj_dir , proj_dir )
53+ __create_compile_commands (proj_dir )
54+ ret , stdout , _ = cppcheck (['--project=compile_commands.json' , '--force' ], cwd = proj_dir )
4955 assert ret == 0 , stdout
5056 assert stdout .find ('AAA' ) >= 0
5157
52- def test_local_path_maxconfigs ():
53- __create_compile_commands ()
54- ret , stdout , _ = cppcheck (['--project=compile_commands.json' , '--max-configs=2' ], cwd = __proj_dir )
58+ def test_local_path_maxconfigs (tmp_path ):
59+ proj_dir = tmp_path / 'proj2'
60+ shutil .copytree (__proj_dir , proj_dir )
61+ __create_compile_commands (proj_dir )
62+ ret , stdout , _ = cppcheck (['--project=compile_commands.json' , '--max-configs=2' ], cwd = proj_dir )
5563 assert ret == 0 , stdout
5664 assert stdout .find ('AAA' ) >= 0
5765
58- def test_relative_path ():
59- __create_compile_commands ()
60- ret , stdout , _ = cppcheck (['--project=proj2/' + __COMPILE_COMMANDS_JSON ], cwd = __script_dir )
66+ def test_relative_path (tmp_path ):
67+ proj_dir = tmp_path / 'proj2'
68+ shutil .copytree (__proj_dir , proj_dir )
69+ __create_compile_commands (proj_dir )
70+ ret , stdout , _ = cppcheck (['--project=proj2/' + __COMPILE_COMMANDS_JSON ], cwd = tmp_path )
6171 file1 = os .path .join ('proj2' , 'a' , 'a.c' )
6272 file2 = os .path .join ('proj2' , 'b' , 'b.c' )
6373 assert ret == 0 , stdout
6474 assert stdout .find ('Checking %s ...' % file1 ) >= 0
6575 assert stdout .find ('Checking %s ...' % file2 ) >= 0
6676
67- def test_absolute_path ():
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' )
77+ def test_absolute_path (tmp_path ):
78+ proj_dir = tmp_path / 'proj2'
79+ shutil .copytree (__proj_dir , proj_dir )
80+ __create_compile_commands (proj_dir )
81+ ret , stdout , _ = cppcheck (['--project=' + os .path .join (proj_dir , __COMPILE_COMMANDS_JSON )], cwd = tmp_path )
82+ file1 = os .path .join (proj_dir , 'a' , 'a.c' )
83+ file2 = os .path .join (proj_dir , 'b' , 'b.c' )
7284 assert ret == 0 , stdout
7385 assert stdout .find ('Checking %s ...' % file1 ) >= 0
7486 assert stdout .find ('Checking %s ...' % file2 ) >= 0
7587
76- def test_gui_project_loads_compile_commands_1 ():
77- __create_compile_commands ()
78- ret , stdout , _ = cppcheck (['--project=proj2/proj2.cppcheck' ], cwd = __script_dir )
88+ def test_gui_project_loads_compile_commands_1 (tmp_path ):
89+ proj_dir = tmp_path / 'proj2'
90+ shutil .copytree (__proj_dir , proj_dir )
91+ __create_compile_commands (proj_dir )
92+ ret , stdout , _ = cppcheck (['--project=proj2/proj2.cppcheck' ], cwd = tmp_path )
7993 file1 = os .path .join ('proj2' , 'a' , 'a.c' )
8094 file2 = os .path .join ('proj2' , 'b' , 'b.c' )
8195 assert ret == 0 , stdout
8296 assert stdout .find ('Checking %s ...' % file1 ) >= 0
8397 assert stdout .find ('Checking %s ...' % file2 ) >= 0
8498
85- def test_gui_project_loads_compile_commands_2 ():
86- __create_compile_commands ()
99+ def test_gui_project_loads_compile_commands_2 (tmp_path ):
100+ proj_dir = tmp_path / 'proj2'
101+ shutil .copytree (__proj_dir , proj_dir )
102+ __create_compile_commands (proj_dir )
87103 exclude_path_1 = 'proj2/b'
88- # TODO: generate in temporary folder
89- create_gui_project_file (os .path .join (__proj_dir , 'test.cppcheck' ),
104+ create_gui_project_file (os .path .join (proj_dir , 'test.cppcheck' ),
90105 import_project = 'compile_commands.json' ,
91106 exclude_paths = [exclude_path_1 ])
92- ret , stdout , _ = cppcheck (['--project=' + os .path .join ('proj2' ,'test.cppcheck' )], cwd = __script_dir )
93- os .remove (os .path .join (__proj_dir , 'test.cppcheck' )) # TODO: do not remove explicitly
107+ ret , stdout , _ = cppcheck (['--project=' + os .path .join ('proj2' ,'test.cppcheck' )], cwd = tmp_path )
94108 file1 = os .path .join ('proj2' , 'a' , 'a.c' )
95109 file2 = os .path .join ('proj2' , 'b' , 'b.c' ) # Excluded by test.cppcheck
96110 assert ret == 0 , stdout
97111 assert stdout .find ('Checking %s ...' % file1 ) >= 0
98112 assert stdout .find ('Checking %s ...' % file2 ) < 0
99113
100114
101- def test_gui_project_loads_relative_vs_solution ():
102- create_gui_project_file (os .path .join (__script_dir , 'test.cppcheck' ), import_project = 'proj2/proj2.sln' ) # TODO: generate in temporary folder
103- ret , stdout , _ = cppcheck (['--project=test.cppcheck' ], cwd = __script_dir )
104- os .remove (os .path .join (__script_dir , 'test.cppcheck' )) # TODO: do not remove explicitly
115+ def test_gui_project_loads_relative_vs_solution (tmp_path ):
116+ proj_dir = tmp_path / 'proj2'
117+ shutil .copytree (__proj_dir , proj_dir )
118+ create_gui_project_file (os .path .join (tmp_path , 'test.cppcheck' ), import_project = 'proj2/proj2.sln' )
119+ ret , stdout , _ = cppcheck (['--project=test.cppcheck' ], cwd = tmp_path )
105120 file1 = os .path .join ('proj2' , 'a' , 'a.c' )
106121 file2 = os .path .join ('proj2' , 'b' , 'b.c' )
107122 assert ret == 0 , stdout
@@ -114,12 +129,13 @@ def test_gui_project_loads_relative_vs_solution():
114129 assert stdout .find ('Checking %s Release|Win32...' % file2 ) >= 0
115130 assert stdout .find ('Checking %s Release|x64...' % file2 ) >= 0
116131
117- def test_gui_project_loads_absolute_vs_solution ():
118- create_gui_project_file (os .path .join (__script_dir , 'test.cppcheck' ), import_project = os .path .join (__proj_dir , 'proj2.sln' )) # TODO: generate in temporary folder
119- ret , stdout , _ = cppcheck (['--project=test.cppcheck' ], cwd = __script_dir )
120- os .remove (os .path .join (__script_dir , 'test.cppcheck' )) # TODO: do not remove explicitly
121- file1 = os .path .join (__proj_dir , 'a' , 'a.c' )
122- file2 = os .path .join (__proj_dir , 'b' , 'b.c' )
132+ def test_gui_project_loads_absolute_vs_solution (tmp_path ):
133+ proj_dir = tmp_path / 'proj2'
134+ shutil .copytree (__proj_dir , proj_dir )
135+ create_gui_project_file (os .path .join (tmp_path , 'test.cppcheck' ), import_project = os .path .join (proj_dir , 'proj2.sln' ))
136+ ret , stdout , _ = cppcheck (['--project=test.cppcheck' ], cwd = tmp_path )
137+ file1 = os .path .join (proj_dir , 'a' , 'a.c' )
138+ file2 = os .path .join (proj_dir , 'b' , 'b.c' )
123139 assert ret == 0 , stdout
124140 assert stdout .find ('Checking %s Debug|Win32...' % file1 ) >= 0
125141 assert stdout .find ('Checking %s Debug|x64...' % file1 ) >= 0
@@ -130,26 +146,28 @@ def test_gui_project_loads_absolute_vs_solution():
130146 assert stdout .find ('Checking %s Release|Win32...' % file2 ) >= 0
131147 assert stdout .find ('Checking %s Release|x64...' % file2 ) >= 0
132148
133- def test_gui_project_loads_relative_vs_solution_2 ():
134- create_gui_project_file (os .path .join (__script_dir , 'test.cppcheck' ), root_path = 'proj2' , import_project = 'proj2/proj2.sln' ) # TODO: generate in temporary folder
135- ret , stdout , stderr = cppcheck (['--project=test.cppcheck' ], cwd = __script_dir )
136- os .remove (os .path .join (__script_dir , 'test.cppcheck' )) # TODO: do not remove explicitly
149+ def test_gui_project_loads_relative_vs_solution_2 (tmp_path ):
150+ proj_dir = tmp_path / 'proj2'
151+ shutil .copytree (__proj_dir , proj_dir )
152+ create_gui_project_file (os .path .join (tmp_path , 'test.cppcheck' ), root_path = 'proj2' , import_project = 'proj2/proj2.sln' )
153+ ret , stdout , stderr = cppcheck (['--project=test.cppcheck' ], cwd = tmp_path )
137154 assert ret == 0 , stdout
138155 assert stderr == __ERR_A + __ERR_B
139156
140- def test_gui_project_loads_relative_vs_solution_with_exclude ():
141- create_gui_project_file (os .path .join (__script_dir , 'test.cppcheck' ), root_path = 'proj2' , import_project = 'proj2/proj2.sln' , exclude_paths = ['b' ]) # TODO: generate in temporary folder
142- ret , stdout , stderr = cppcheck (['--project=test.cppcheck' ], cwd = __script_dir )
143- os .remove (os .path .join (__script_dir , 'test.cppcheck' )) # TODO: do not remove explicitly
157+ def test_gui_project_loads_relative_vs_solution_with_exclude (tmp_path ):
158+ proj_dir = tmp_path / 'proj2'
159+ shutil .copytree (__proj_dir , proj_dir )
160+ create_gui_project_file (os .path .join (tmp_path , 'test.cppcheck' ), root_path = 'proj2' , import_project = 'proj2/proj2.sln' , exclude_paths = ['b' ])
161+ ret , stdout , stderr = cppcheck (['--project=test.cppcheck' ], cwd = tmp_path )
144162 assert ret == 0 , stdout
145163 assert stderr == __ERR_A
146164
147- def test_gui_project_loads_absolute_vs_solution_2 ():
148- # TODO: generate in temporary folder
149- create_gui_project_file ( os . path . join ( __script_dir , 'test.cppcheck' ),
150- root_path = __proj_dir ,
151- import_project = os . path . join ( __proj_dir , 'proj2.sln' ))
152- ret , stdout , stderr = cppcheck ([ '--project=test.cppcheck' ], cwd = __script_dir )
153- os . remove ( os . path . join ( __script_dir , ' test.cppcheck')) # TODO: do not remove explicitly
165+ def test_gui_project_loads_absolute_vs_solution_2 (tmp_path ):
166+ proj_dir = tmp_path / 'proj2'
167+ shutil . copytree ( __proj_dir , proj_dir )
168+ create_gui_project_file ( os . path . join ( tmp_path , 'test.cppcheck' ) ,
169+ root_path = str ( proj_dir ),
170+ import_project = os . path . join ( proj_dir , 'proj2.sln' ) )
171+ ret , stdout , stderr = cppcheck ([ '--project= test.cppcheck'], cwd = tmp_path )
154172 assert ret == 0 , stdout
155173 assert stderr == __ERR_A + __ERR_B
0 commit comments