@@ -436,6 +436,9 @@ class TestCmdlineParser : public TestFixture {
436436 TEST_CASE (cppcheckBuildDirExistent);
437437 TEST_CASE (cppcheckBuildDirNonExistent);
438438 TEST_CASE (cppcheckBuildDirEmpty);
439+ TEST_CASE (cppcheckBuildDirMultiple);
440+ TEST_CASE (noCppcheckBuildDir);
441+ TEST_CASE (noCppcheckBuildDir2);
439442
440443 TEST_CASE (invalidCppcheckCfg);
441444 }
@@ -2962,20 +2965,44 @@ class TestCmdlineParser : public TestFixture {
29622965 REDIRECT;
29632966 const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=." , " file.cpp" };
29642967 ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (3 , argv));
2968+ ASSERT_EQUALS (" ." , settings->buildDir );
29652969 }
29662970
29672971 void cppcheckBuildDirNonExistent () {
29682972 REDIRECT;
2969- const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=non-existent-path" };
2970- ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parser->parseFromArgs (2 , argv));
2973+ const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=non-existent-path" , " file.cpp " };
2974+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parser->parseFromArgs (3 , argv));
29712975 ASSERT_EQUALS (" cppcheck: error: Directory 'non-existent-path' specified by --cppcheck-build-dir argument has to be existent.\n " , logger->str ());
29722976 }
29732977
29742978 void cppcheckBuildDirEmpty () {
29752979 REDIRECT;
2976- const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=" };
2977- ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parser->parseFromArgs (2 , argv));
2978- ASSERT_EQUALS (" cppcheck: error: Directory '' specified by --cppcheck-build-dir argument has to be existent.\n " , logger->str ());
2980+ const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=" , " file.cpp" };
2981+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parser->parseFromArgs (3 , argv));
2982+ ASSERT_EQUALS (" cppcheck: error: no path has been specified for --cppcheck-build-dir\n " , logger->str ());
2983+ }
2984+
2985+ void cppcheckBuildDirMultiple () {
2986+ REDIRECT;
2987+ const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=non-existent-path" , " --cppcheck-build-dir=." , " file.cpp" };
2988+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (4 , argv));
2989+ ASSERT_EQUALS (" ." , settings->buildDir );
2990+ }
2991+
2992+ void noCppcheckBuildDir ()
2993+ {
2994+ REDIRECT;
2995+ const char * const argv[] = {" cppcheck" , " --no-cppcheck-build-dir" , " file.cpp" };
2996+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (3 , argv));
2997+ ASSERT (settings->buildDir .empty ());
2998+ }
2999+
3000+ void noCppcheckBuildDir2 ()
3001+ {
3002+ REDIRECT;
3003+ const char * const argv[] = {" cppcheck" , " --cppcheck-build-dir=b1" , " --no-cppcheck-build-dir" , " file.cpp" };
3004+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (4 , argv));
3005+ ASSERT (settings->buildDir .empty ());
29793006 }
29803007
29813008 void invalidCppcheckCfg () {
0 commit comments