@@ -192,9 +192,10 @@ class TestCmdlineParser : public TestFixture {
192192 TEST_CASE (exitcodeSuppressionsOld);
193193 TEST_CASE (exitcodeSuppressions);
194194 TEST_CASE (exitcodeSuppressionsNoFile);
195+ TEST_CASE (fileFilterStdin);
195196 TEST_CASE (fileList);
196197 TEST_CASE (fileListNoFile);
197- // TEST_CASE(fileListStdin); // Disabled since hangs the test run
198+ TEST_CASE (fileListStdin);
198199 TEST_CASE (fileListInvalid);
199200 TEST_CASE (inlineSuppr);
200201 TEST_CASE (jobs);
@@ -1083,6 +1084,17 @@ class TestCmdlineParser : public TestFixture {
10831084 ASSERT_EQUALS (" cppcheck: error: unrecognized command line option: \" --exitcode-suppressions\" .\n " , logger->str ());
10841085 }
10851086
1087+ void fileFilterStdin () {
1088+ REDIRECT;
1089+ RedirectInput input (" file1.c\n file2.cpp\n " );
1090+ const char * const argv[] = {" cppcheck" , " --file-filter=-" };
1091+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Fail, parser->parseFromArgs (2 , argv));
1092+ ASSERT_EQUALS (" cppcheck: error: no C or C++ source files found.\n " , logger->str ());
1093+ ASSERT_EQUALS (2U , settings->fileFilters .size ());
1094+ ASSERT_EQUALS (" file1.c" , settings->fileFilters [0 ]);
1095+ ASSERT_EQUALS (" file2.cpp" , settings->fileFilters [1 ]);
1096+ }
1097+
10861098 void fileList () {
10871099 REDIRECT;
10881100 ScopedFile file (" files.txt" ,
@@ -1104,13 +1116,17 @@ class TestCmdlineParser : public TestFixture {
11041116 ASSERT_EQUALS (" cppcheck: error: couldn't open the file: \" files.txt\" .\n " , logger->str ());
11051117 }
11061118
1107- /* void fileListStdin() {
1108- // TODO: Give it some stdin to read from, fails because the list of
1109- // files in stdin (_pathnames) is empty
1110- REDIRECT;
1111- const char * const argv[] = {"cppcheck", "--file-list=-", "file.cpp"};
1112- TODO_ASSERT_EQUALS(true, false, parser->parseFromArgs(3, argv));
1113- } */
1119+ void fileListStdin () {
1120+ REDIRECT;
1121+ RedirectInput input (" file1.c\n file2.cpp\n " );
1122+ const char * const argv[] = {" cppcheck" , " --file-list=-" , " file.cpp" };
1123+ ASSERT_EQUALS_ENUM (CmdLineParser::Result::Success, parser->parseFromArgs (3 , argv));
1124+ ASSERT_EQUALS (3 , parser->getPathNames ().size ());
1125+ auto it = parser->getPathNames ().cbegin ();
1126+ ASSERT_EQUALS (" file1.c" , *it++);
1127+ ASSERT_EQUALS (" file2.cpp" , *it++);
1128+ ASSERT_EQUALS (" file.cpp" , *it);
1129+ }
11141130
11151131 void fileListInvalid () {
11161132 REDIRECT;
0 commit comments