@@ -125,6 +125,7 @@ class TestCmdlineParser : public TestFixture {
125125 void run () override {
126126 TEST_CASE (nooptions);
127127 TEST_CASE (nooptionsWithCfg);
128+ TEST_CASE (nooptionsWithInvalidCfg);
128129 TEST_CASE (helpshort);
129130 TEST_CASE (helpshortExclusive);
130131 TEST_CASE (helpshortWithCfg);
@@ -134,7 +135,6 @@ class TestCmdlineParser : public TestFixture {
134135 TEST_CASE (version);
135136 TEST_CASE (versionWithCfg);
136137 TEST_CASE (versionExclusive);
137- TEST_CASE (versionWithInvalidCfg);
138138 TEST_CASE (checkVersionCorrect);
139139 TEST_CASE (checkVersionIncorrect);
140140 TEST_CASE (onefile);
@@ -328,7 +328,6 @@ class TestCmdlineParser : public TestFixture {
328328 TEST_CASE (errorlist);
329329 TEST_CASE (errorlistWithCfg);
330330 TEST_CASE (errorlistExclusive);
331- TEST_CASE (errorlistWithInvalidCfg);
332331 TEST_CASE (ignorepathsnopath);
333332#if defined(USE_WINDOWS_SEH) || defined(USE_UNIX_SIGNAL_HANDLING)
334333 TEST_CASE (exceptionhandling);
@@ -545,11 +544,22 @@ class TestCmdlineParser : public TestFixture {
545544 " }\n " );
546545 const char * const argv[] = {" cppcheck" };
547546 ASSERT_EQUALS_ENUM (CmdLineParser::Result::Exit, parseFromArgs (argv));
547+ ASSERT_EQUALS (1 , settings->settingsFiles .size ());
548+ ASSERT_EQUALS (file.path (), *settings->settingsFiles .cbegin ());
548549 std::string log_str = logger->str ();
549550 ASSERT_MSG (startsWith (log_str, " Cppcheck - A tool for static C/C++ code analysis" ), " header" );
550551 ASSERT_MSG (log_str.find (" https://files.cppchecksolutions.com/manual.pdf" ) != std::string::npos, " help url" );
551552 }
552553
554+ void nooptionsWithInvalidCfg () {
555+ REDIRECT;
556+ ScopedFile file (Path::join (Path::getPathFromFilename (Path::getCurrentExecutablePath (" " )), " cppcheck.cfg" ),
557+ " {\n " );
558+ const char * const argv[] = {" cppcheck" };
559+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parseFromArgs (argv));
560+ ASSERT_EQUALS (" cppcheck: error: could not load cppcheck.cfg - not a valid JSON - syntax error at line 2 near: \n " , logger->str ());
561+ }
562+
553563 void helpshort () {
554564 REDIRECT;
555565 const char * const argv[] = {" cppcheck" , " -h" };
@@ -572,6 +582,8 @@ class TestCmdlineParser : public TestFixture {
572582 " }\n " );
573583 const char * const argv[] = {" cppcheck" , " -h" };
574584 ASSERT_EQUALS_ENUM (CmdLineParser::Result::Exit, parseFromArgs (argv));
585+ ASSERT_EQUALS (1 , settings->settingsFiles .size ());
586+ ASSERT_EQUALS (file.path (), *settings->settingsFiles .cbegin ());
575587 std::string log_str = logger->str ();
576588 ASSERT_MSG (startsWith (log_str, " Cppcheck - A tool for static C/C++ code analysis" ), " header" );
577589 ASSERT_MSG (log_str.find (" https://files.cppchecksolutions.com/manual.pdf" ) != std::string::npos, " help url" );
@@ -599,6 +611,8 @@ class TestCmdlineParser : public TestFixture {
599611 " }\n " );
600612 const char * const argv[] = {" cppcheck" , " --help" };
601613 ASSERT_EQUALS_ENUM (CmdLineParser::Result::Exit, parseFromArgs (argv));
614+ ASSERT_EQUALS (1 , settings->settingsFiles .size ());
615+ ASSERT_EQUALS (file.path (), *settings->settingsFiles .cbegin ());
602616 std::string log_str = logger->str ();
603617 ASSERT_MSG (startsWith (log_str, " Cppcheck - A tool for static C/C++ code analysis" ), " header" );
604618 ASSERT_MSG (log_str.find (" https://files.cppchecksolutions.com/manual.pdf" ) != std::string::npos, " help url" );
@@ -619,6 +633,8 @@ class TestCmdlineParser : public TestFixture {
619633 " }\n " );
620634 const char * const argv[] = {" cppcheck" , " --version" };
621635 ASSERT_EQUALS_ENUM (CmdLineParser::Result::Exit, parseFromArgs (argv));
636+ ASSERT_EQUALS (1 , settings->settingsFiles .size ());
637+ ASSERT_EQUALS (file.path (), *settings->settingsFiles .cbegin ());
622638 ASSERT_EQUALS (" The Product\n " , logger->str ()); // TODO: include version?
623639 }
624640
@@ -631,15 +647,6 @@ class TestCmdlineParser : public TestFixture {
631647 ASSERT (logger->str ().compare (0 , 11 , " Cppcheck 2." ) == 0 );
632648 }
633649
634- void versionWithInvalidCfg () {
635- REDIRECT;
636- ScopedFile file (Path::join (Path::getPathFromFilename (Path::getCurrentExecutablePath (" " )), " cppcheck.cfg" ),
637- " {\n " );
638- const char * const argv[] = {" cppcheck" , " --version" };
639- ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parseFromArgs (argv));
640- ASSERT_EQUALS (" cppcheck: error: could not load cppcheck.cfg - not a valid JSON - syntax error at line 2 near: \n " , logger->str ());
641- }
642-
643650 void checkVersionCorrect () {
644651 REDIRECT;
645652 const std::string currentVersion = parser->getVersion ();
@@ -2214,6 +2221,8 @@ class TestCmdlineParser : public TestFixture {
22142221 R"( {"productName": "The Product"}\n)" );
22152222 const char * const argv[] = {" cppcheck" , " --errorlist" };
22162223 ASSERT_EQUALS_ENUM (CmdLineParser::Result::Exit, parseFromArgs (argv));
2224+ ASSERT_EQUALS (1 , settings->settingsFiles .size ());
2225+ ASSERT_EQUALS (file.path (), *settings->settingsFiles .cbegin ());
22172226 ASSERT_EQUALS (" " , logger->str ()); // empty since it is logged via ErrorLogger
22182227 ASSERT (startsWith (GET_REDIRECT_OUTPUT, ErrorMessage::getXMLHeader (" The Product" )));
22192228 }
@@ -2228,15 +2237,6 @@ class TestCmdlineParser : public TestFixture {
22282237 ASSERT (endsWith (errout_s, " </results>\n " ));
22292238 }
22302239
2231- void errorlistWithInvalidCfg () {
2232- REDIRECT;
2233- ScopedFile file (Path::join (Path::getPathFromFilename (Path::getCurrentExecutablePath (" " )), " cppcheck.cfg" ),
2234- " {\n " );
2235- const char * const argv[] = {" cppcheck" , " --errorlist" };
2236- ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parseFromArgs (argv));
2237- ASSERT_EQUALS (" cppcheck: error: could not load cppcheck.cfg - not a valid JSON - syntax error at line 2 near: \n " , logger->str ());
2238- }
2239-
22402240 void ignorepathsnopath () {
22412241 REDIRECT;
22422242 const char * const argv[] = {" cppcheck" , " -i" };
0 commit comments