@@ -440,6 +440,9 @@ class TestCmdlineParser : public TestFixture {
440440 TEST_CASE (cppcheckBuildDirExistent);
441441 TEST_CASE (cppcheckBuildDirNonExistent);
442442 TEST_CASE (cppcheckBuildDirEmpty);
443+ TEST_CASE (cppcheckBuildDirMultiple);
444+ TEST_CASE (noCppcheckBuildDir);
445+ TEST_CASE (noCppcheckBuildDir2);
443446
444447 TEST_CASE (invalidCppcheckCfg);
445448 }
@@ -2995,20 +2998,44 @@ class TestCmdlineParser : public TestFixture {
29952998 REDIRECT;
29962999 const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=." , " file.cpp" };
29973000 ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (3 , argv));
3001+ ASSERT_EQUALS (" ." , settings->buildDir );
29983002 }
29993003
30003004 void cppcheckBuildDirNonExistent () {
30013005 REDIRECT;
3002- const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=non-existent-path" };
3003- ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parser->parseFromArgs (2 , argv));
3006+ const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=non-existent-path" , " file.cpp " };
3007+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parser->parseFromArgs (3 , argv));
30043008 ASSERT_EQUALS (" cppcheck: error: Directory 'non-existent-path' specified by --cppcheck-build-dir argument has to be existent.\n " , logger->str ());
30053009 }
30063010
30073011 void cppcheckBuildDirEmpty () {
30083012 REDIRECT;
3009- const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=" };
3010- ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parser->parseFromArgs (2 , argv));
3011- ASSERT_EQUALS (" cppcheck: error: Directory '' specified by --cppcheck-build-dir argument has to be existent.\n " , logger->str ());
3013+ const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=" , " file.cpp" };
3014+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parser->parseFromArgs (3 , argv));
3015+ ASSERT_EQUALS (" cppcheck: error: no path has been specified for --cppcheck-build-dir\n " , logger->str ());
3016+ }
3017+
3018+ void cppcheckBuildDirMultiple () {
3019+ REDIRECT;
3020+ const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=non-existent-path" , " --cppcheck-build-dir=." , " file.cpp" };
3021+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (4 , argv));
3022+ ASSERT_EQUALS (" ." , settings->buildDir );
3023+ }
3024+
3025+ void noCppcheckBuildDir ()
3026+ {
3027+ REDIRECT;
3028+ const char * const argv[] = {" cppcheck" , " --no-cppcheck-build-dir" , " file.cpp" };
3029+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (3 , argv));
3030+ ASSERT (settings->buildDir .empty ());
3031+ }
3032+
3033+ void noCppcheckBuildDir2 ()
3034+ {
3035+ REDIRECT;
3036+ const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=b1" , " --no-cppcheck-build-dir" , " file.cpp" };
3037+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (4 , argv));
3038+ ASSERT (settings->buildDir .empty ());
30123039 }
30133040
30143041 void invalidCppcheckCfg () {
0 commit comments