From 693084470dab8e2eab87a55bc966cd3afcdb0599 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20St=C3=B6neberg?= Date: Mon, 14 Aug 2023 11:37:59 +0200 Subject: [PATCH] TestCmdlineParser: fixed some TODO test cases (#5325) --- Makefile | 2 +- test/testcmdlineparser.cpp | 71 +++++++++++++++++++++++++++----------- 2 files changed, 51 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index 946755da0..6a2b1faad 100644 --- a/Makefile +++ b/Makefile @@ -716,7 +716,7 @@ test/testclangimport.o: test/testclangimport.cpp lib/check.h lib/clangimport.h l test/testclass.o: test/testclass.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checkclass.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testclass.cpp -test/testcmdlineparser.o: test/testcmdlineparser.cpp cli/cmdlineparser.h cli/cppcheckexecutor.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h test/redirect.h +test/testcmdlineparser.o: test/testcmdlineparser.cpp cli/cmdlineparser.h cli/cppcheckexecutor.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/fixture.h test/helpers.h test/redirect.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testcmdlineparser.cpp test/testcolor.o: test/testcolor.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h diff --git a/test/testcmdlineparser.cpp b/test/testcmdlineparser.cpp index ca91e7c3c..5fdd05adc 100644 --- a/test/testcmdlineparser.cpp +++ b/test/testcmdlineparser.cpp @@ -20,6 +20,7 @@ #include "config.h" #include "cppcheckexecutor.h" #include "errortypes.h" +#include "helpers.h" #include "platform.h" #include "redirect.h" #include "settings.h" @@ -608,12 +609,18 @@ private: ASSERT_EQUALS("", GET_REDIRECT_OUTPUT); } - // TODO: fails since the file is not found void includesFile() { REDIRECT; - const char * const argv[] = {"cppcheck", "--includes-file=fileThatDoesNotExist.txt", "file.cpp"}; - TODO_ASSERT_EQUALS(true, false, parser->parseFromArgs(3, argv)); - TODO_ASSERT_EQUALS("", "cppcheck: error: unable to open includes file at 'fileThatDoesNotExist.txt'\n", GET_REDIRECT_OUTPUT); + ScopedFile file("includes.txt", + "path/sub\n" + "path2/sub1\n"); + const char * const argv[] = {"cppcheck", "--includes-file=includes.txt", "file.cpp"}; + ASSERT_EQUALS(true, parser->parseFromArgs(3, argv)); + ASSERT_EQUALS(2, settings->includePaths.size()); + auto it = settings->includePaths.cbegin(); + ASSERT_EQUALS("path/sub/", *it++); + ASSERT_EQUALS("path2/sub1/", *it); + ASSERT_EQUALS("", GET_REDIRECT_OUTPUT); } void includesFileNoFile() { @@ -623,14 +630,19 @@ private: ASSERT_EQUALS("cppcheck: error: unable to open includes file at 'fileThatDoesNotExist.txt'\n", GET_REDIRECT_OUTPUT); } - // TODO: fails since the file is not found void configExcludesFile() { REDIRECT; - const char * const argv[] = {"cppcheck", "--config-excludes-file=fileThatDoesNotExist.txt", "file.cpp"}; - settings->includePaths.clear(); - TODO_ASSERT_EQUALS(true, false, parser->parseFromArgs(3, argv)); - // TODO: add checks - TODO_ASSERT_EQUALS("", "cppcheck: error: unable to open config excludes file at 'fileThatDoesNotExist.txt'\n", GET_REDIRECT_OUTPUT); + ScopedFile file("excludes.txt", + "path/sub\n" + "path2/sub1\n"); + const char * const argv[] = {"cppcheck", "--config-excludes-file=excludes.txt", "file.cpp"}; + settings->configExcludePaths.clear(); + ASSERT_EQUALS(true, parser->parseFromArgs(3, argv)); + ASSERT_EQUALS(2, settings->configExcludePaths.size()); + auto it = settings->configExcludePaths.cbegin(); + ASSERT_EQUALS("path/sub/", *it++); + ASSERT_EQUALS("path2/sub1/", *it); + ASSERT_EQUALS("", GET_REDIRECT_OUTPUT); } void configExcludesFileNoFile() { @@ -897,11 +909,17 @@ private: } void exitcodeSuppressions() { - // TODO: Fails since cannot open the file REDIRECT; + ScopedFile file("suppr.txt", + "uninitvar\n" + "unusedFunction\n"); const char * const argv[] = {"cppcheck", "--exitcode-suppressions=suppr.txt", "file.cpp"}; - TODO_ASSERT_EQUALS(true, false, parser->parseFromArgs(3, argv)); - TODO_ASSERT_EQUALS("", "cppcheck: error: couldn't open the file: \"suppr.txt\".\n", GET_REDIRECT_OUTPUT); + ASSERT_EQUALS(true, parser->parseFromArgs(3, argv)); + ASSERT_EQUALS(2, settings->nofail.getSuppressions().size()); + auto it = settings->nofail.getSuppressions().cbegin(); + ASSERT_EQUALS("uninitvar", (*it++).errorId); + ASSERT_EQUALS("unusedFunction", (*it).errorId); + ASSERT_EQUALS("", GET_REDIRECT_OUTPUT); } void exitcodeSuppressionsNoFile() { @@ -911,14 +929,19 @@ private: ASSERT_EQUALS("cppcheck: error: unrecognized command line option: \"--exitcode-suppressions\".\n", GET_REDIRECT_OUTPUT); } - // TODO: file does not exist void fileList() { REDIRECT; + ScopedFile file("files.txt", + "file1.c\n" + "file2.cpp\n"); const char * const argv[] = {"cppcheck", "--file-list=files.txt", "file.cpp"}; - TODO_ASSERT_EQUALS(true, false, parser->parseFromArgs(3, argv)); - // TODO: settings are not being reset after each test - //TODO_ASSERT_EQUALS(4, 1, defparser->getPathNames().size()); - TODO_ASSERT_EQUALS("", "cppcheck: error: couldn't open the file: \"files.txt\".\n", GET_REDIRECT_OUTPUT); + ASSERT_EQUALS(true, parser->parseFromArgs(3, argv)); + ASSERT_EQUALS(3, parser->getPathNames().size()); + auto it = parser->getPathNames().cbegin(); + ASSERT_EQUALS("file1.c", *it++); + ASSERT_EQUALS("file2.cpp", *it++); + ASSERT_EQUALS("file.cpp", *it); + ASSERT_EQUALS("", GET_REDIRECT_OUTPUT); } void fileListNoFile() { @@ -1226,11 +1249,17 @@ private: } void suppressions() { - // TODO: Fails because there is no suppr.txt file! REDIRECT; + ScopedFile file("suppr.txt", + "uninitvar\n" + "unusedFunction\n"); const char * const argv[] = {"cppcheck", "--suppressions-list=suppr.txt", "file.cpp"}; - TODO_ASSERT_EQUALS(true, false, parser->parseFromArgs(3, argv)); - TODO_ASSERT_EQUALS("", "cppcheck: error: couldn't open the file: \"suppr.txt\".\n", GET_REDIRECT_OUTPUT); + ASSERT_EQUALS(true, parser->parseFromArgs(3, argv)); + ASSERT_EQUALS(2, settings->nomsg.getSuppressions().size()); + auto it = settings->nomsg.getSuppressions().cbegin(); + ASSERT_EQUALS("uninitvar", (*it++).errorId); + ASSERT_EQUALS("unusedFunction", (*it).errorId); + ASSERT_EQUALS("", GET_REDIRECT_OUTPUT); } void suppressionsNoFile1() {