@@ -42,6 +42,7 @@ class TestCmdlineParser : public TestFixture {
4242 TEST_CASE (debugwarnings);
4343 TEST_CASE (forceshort);
4444 TEST_CASE (forcelong);
45+ TEST_CASE (relativePaths);
4546 TEST_CASE (quietshort);
4647 TEST_CASE (quietlong);
4748 TEST_CASE (defines_noarg);
@@ -248,6 +249,42 @@ class TestCmdlineParser : public TestFixture {
248249 ASSERT_EQUALS (true , settings._force );
249250 }
250251
252+ void relativePaths () {
253+ REDIRECT;
254+ Settings settings;
255+ CmdLineParser parser (&settings);
256+
257+ const char *argvs[] = {" cppcheck" , " -rp" , " file.cpp" };
258+ ASSERT (parser.ParseFromArgs (3 , argvs));
259+ ASSERT_EQUALS (true , settings._relativePaths );
260+
261+ settings._relativePaths = false ;
262+
263+ const char *argvl[] = {" cppcheck" , " --relative-paths" , " file.cpp" };
264+ ASSERT (parser.ParseFromArgs (3 , argvl));
265+ ASSERT_EQUALS (true , settings._relativePaths );
266+
267+ settings._relativePaths = false ;
268+ settings._basePaths .clear ();
269+
270+ const char *argvsp[] = {" cppcheck" , " -rp=C:/foo;C:\\ bar" , " file.cpp" };
271+ ASSERT (parser.ParseFromArgs (3 , argvsp));
272+ ASSERT_EQUALS (true , settings._relativePaths );
273+ ASSERT_EQUALS (2 , settings._basePaths .size ());
274+ ASSERT_EQUALS (" C:/foo" , settings._basePaths [0 ]);
275+ ASSERT_EQUALS (" C:/bar" , settings._basePaths [1 ]);
276+
277+ settings._relativePaths = false ;
278+ settings._basePaths .clear ();
279+
280+ const char *argvlp[] = {" cppcheck" , " --relative-paths=C:/foo;C:\\ bar" , " file.cpp" };
281+ ASSERT (parser.ParseFromArgs (3 , argvlp));
282+ ASSERT_EQUALS (true , settings._relativePaths );
283+ ASSERT_EQUALS (2 , settings._basePaths .size ());
284+ ASSERT_EQUALS (" C:/foo" , settings._basePaths [0 ]);
285+ ASSERT_EQUALS (" C:/bar" , settings._basePaths [1 ]);
286+ }
287+
251288 void quietshort () {
252289 REDIRECT;
253290 const char *argv[] = {" cppcheck" , " -q" , " file.cpp" };
0 commit comments