diff --git a/Makefile b/Makefile index 34df806e4..17306c668 100644 --- a/Makefile +++ b/Makefile @@ -740,13 +740,13 @@ test/testsuite.o: test/testsuite.cpp lib/color.h lib/config.h lib/errorlogger.h test/testsummaries.o: test/testsummaries.cpp 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/summaries.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsummaries.o test/testsummaries.cpp -test/testsuppressions.o: test/testsuppressions.cpp cli/threadexecutor.h lib/analyzerinfo.h lib/check.h lib/color.h lib/config.h lib/cppcheck.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/testsuite.h +test/testsuppressions.o: test/testsuppressions.cpp cli/threadexecutor.h lib/analyzerinfo.h lib/check.h lib/color.h lib/config.h lib/cppcheck.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/valueflow.h test/testsuite.h test/testutils.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsuppressions.o test/testsuppressions.cpp test/testsymboldatabase.o: test/testsymboldatabase.cpp externals/tinyxml2/tinyxml2.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/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h test/testutils.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsymboldatabase.o test/testsymboldatabase.cpp -test/testthreadexecutor.o: test/testthreadexecutor.cpp cli/threadexecutor.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/testsuite.h +test/testthreadexecutor.o: test/testthreadexecutor.cpp cli/threadexecutor.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/valueflow.h test/testsuite.h test/testutils.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testthreadexecutor.o test/testthreadexecutor.cpp test/testtimer.o: test/testtimer.cpp lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/suppressions.h lib/timer.h test/testsuite.h diff --git a/cli/threadexecutor.cpp b/cli/threadexecutor.cpp index 9f378391e..9e25fde1c 100644 --- a/cli/threadexecutor.cpp +++ b/cli/threadexecutor.cpp @@ -67,12 +67,6 @@ ThreadExecutor::ThreadExecutor(const std::map &files, ThreadExecutor::~ThreadExecutor() {} -// cppcheck-suppress unusedFunction - only used in unit tests -void ThreadExecutor::addFileContent(const std::string &path, const std::string &content) -{ - mFileContents[path] = content; -} - /////////////////////////////////////////////////////////////////////////////// ////// This code is for platforms that support fork() only //////////////////// /////////////////////////////////////////////////////////////////////////////// @@ -285,9 +279,6 @@ unsigned int ThreadExecutor::check() if (iFileSettings != mSettings.project.fileSettings.end()) { resultOfCheck = fileChecker.check(*iFileSettings); - } else if (!mFileContents.empty() && mFileContents.find(iFile->first) != mFileContents.end()) { - // File content was given as a string - resultOfCheck = fileChecker.check(iFile->first, mFileContents[iFile->first]); } else { // Read file from a file resultOfCheck = fileChecker.check(iFile->first); @@ -538,14 +529,8 @@ unsigned int STDCALL ThreadExecutor::threadProc(LogWriter* logWriter) logWriter->mFileSync.unlock(); - const std::map::const_iterator fileContent = logWriter->mThreadExecutor.mFileContents.find(file); - if (fileContent != logWriter->mThreadExecutor.mFileContents.end()) { - // File content was given as a string - result += fileChecker.check(file, fileContent->second); - } else { - // Read file from a file - result += fileChecker.check(file); - } + // Read file from a file + result += fileChecker.check(file); } else { // file settings.. const ImportProject::FileSettings &fs = *itFileSettings; ++itFileSettings; diff --git a/cli/threadexecutor.h b/cli/threadexecutor.h index 35bfed5a3..e98b7ca13 100644 --- a/cli/threadexecutor.h +++ b/cli/threadexecutor.h @@ -44,24 +44,12 @@ public: void operator=(const ThreadExecutor &) = delete; unsigned int check(); - /** - * @brief Add content to a file, to be used in unit testing. - * - * @param path File name (used as a key to link with real file). - * @param content If the file would be a real file, this should be - * the content of the file. - */ - void addFileContent(const std::string &path, const std::string &content); - private: const std::map &mFiles; Settings &mSettings; ErrorLogger &mErrorLogger; std::list mErrorList; - /** @brief Key is file name, and value is the content of the file */ - std::map mFileContents; - #if defined(THREADING_MODEL_FORK) /** diff --git a/test/testsuppressions.cpp b/test/testsuppressions.cpp index e9ee77924..b6e33d89b 100644 --- a/test/testsuppressions.cpp +++ b/test/testsuppressions.cpp @@ -22,10 +22,12 @@ #include "settings.h" #include "suppressions.h" #include "testsuite.h" +#include "testutils.h" #include "threadexecutor.h" #include #include +#include #include #include #include @@ -216,7 +218,7 @@ private: output.str(""); std::map files; - files["test.cpp"] = 1; + files["test.cpp"] = strlen(code); Settings settings; settings.jobs = 1; @@ -226,8 +228,10 @@ private: EXPECT_EQ("", settings.nomsg.addSuppressionLine(suppression)); } ThreadExecutor executor(files, settings, *this); + std::vector scopedfiles; + scopedfiles.reserve(files.size()); for (std::map::const_iterator i = files.begin(); i != files.end(); ++i) - executor.addFileContent(i->first, code); + scopedfiles.emplace_back(i->first, code); const unsigned int exitCode = executor.check(); diff --git a/test/testthreadexecutor.cpp b/test/testthreadexecutor.cpp index d4cccf147..4a4f184d3 100644 --- a/test/testthreadexecutor.cpp +++ b/test/testthreadexecutor.cpp @@ -18,6 +18,7 @@ #include "settings.h" #include "testsuite.h" +#include "testutils.h" #include "threadexecutor.h" #include @@ -49,13 +50,15 @@ private: for (int i = 1; i <= files; ++i) { std::ostringstream oss; oss << "file_" << i << ".cpp"; - filemap[oss.str()] = 1; + filemap[oss.str()] = data.size(); } settings.jobs = jobs; ThreadExecutor executor(filemap, settings, *this); + std::vector scopedfiles; + scopedfiles.reserve(filemap.size()); for (std::map::const_iterator i = filemap.begin(); i != filemap.end(); ++i) - executor.addFileContent(i->first, data); + scopedfiles.emplace_back(i->first, data); ASSERT_EQUALS(result, executor.check()); } diff --git a/test/testutils.h b/test/testutils.h index dda423f63..01c056375 100644 --- a/test/testutils.h +++ b/test/testutils.h @@ -26,6 +26,7 @@ #include "tokenize.h" #include "tokenlist.h" +#include #include #include #include @@ -69,4 +70,18 @@ private: ErrorLogger *next; }; +class ScopedFile { +public: + ScopedFile(const std::string &name, const std::string &content) : mName(name) { + std::ofstream of(mName); + of << content; + } + + ~ScopedFile() { + remove(mName.c_str()); + } +private: + std::string mName; +}; + #endif // TestUtilsH