diff --git a/Makefile b/Makefile index 5f0d80b45..b6288fcc9 100644 --- a/Makefile +++ b/Makefile @@ -263,7 +263,6 @@ TESTOBJ = test/options.o \ test/testpostfixoperator.o \ test/testpreprocessor.o \ test/testrunner.o \ - test/testsamples.o \ test/testsimplifytemplate.o \ test/testsimplifytokens.o \ test/testsimplifytypedef.o \ @@ -714,9 +713,6 @@ test/testpreprocessor.o: test/testpreprocessor.cpp externals/simplecpp/simplecpp test/testrunner.o: test/testrunner.cpp externals/simplecpp/simplecpp.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/preprocessor.h lib/suppressions.h test/options.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testrunner.o test/testrunner.cpp -test/testsamples.o: test/testsamples.cpp cli/cppcheckexecutor.h cli/filelister.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/pathmatch.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/redirect.h test/testsuite.h - $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsamples.o test/testsamples.cpp - test/testsimplifytemplate.o: test/testsimplifytemplate.cpp lib/astutils.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 $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsimplifytemplate.o test/testsimplifytemplate.cpp diff --git a/test/testrunner.vcxproj b/test/testrunner.vcxproj index ac68fca33..91f429a98 100755 --- a/test/testrunner.vcxproj +++ b/test/testrunner.vcxproj @@ -66,7 +66,6 @@ - @@ -314,4 +313,4 @@ - \ No newline at end of file + diff --git a/test/testrunner.vcxproj.filters b/test/testrunner.vcxproj.filters index 5d7a236d4..dc6225262 100644 --- a/test/testrunner.vcxproj.filters +++ b/test/testrunner.vcxproj.filters @@ -166,9 +166,6 @@ Source Files - - Source Files - Source Files @@ -256,4 +253,4 @@ Header Files - \ No newline at end of file + diff --git a/test/testsamples.cpp b/test/testsamples.cpp deleted file mode 100644 index 8c5a2f768..000000000 --- a/test/testsamples.cpp +++ /dev/null @@ -1,190 +0,0 @@ -/* -* Cppcheck - A tool for static C/C++ code analysis -* Copyright (C) 2007-2021 Cppcheck team. -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#include "config.h" -#include "cppcheckexecutor.h" -#include "errorlogger.h" -#include "filelister.h" -#include "path.h" -#include "pathmatch.h" -#include "redirect.h" -#include "settings.h" -#include "testsuite.h" - -#include -#include -#include -#include -#include -#include -#include - - -class TestSamples : public TestFixture { -public: - TestSamples() : TestFixture("TestSamples") { - } - -private: - - void run() OVERRIDE { - TEST_CASE(runSamples); - TEST_CASE(runConsoleCodePageTranslationOnWindows); - } - - void runSamples() const { - REDIRECT; - - std::map files; - const std::vector masks; - const PathMatch matcher(masks); - std::string err = -#ifdef _WIN32 - FileLister::recursiveAddFiles(files, "..\\samples", matcher); -#else - FileLister::recursiveAddFiles(files, "samples", matcher); -#endif - ASSERT(err.empty()); - for (std::map::const_iterator i = files.begin(); i != files.end(); ++i) { - if (i->first.find("memleak") != std::string::npos) - continue; - CLEAR_REDIRECT_ERROUT; - const char* const path = i->first.c_str(); - const char * const argv[] = { -#ifdef _WIN32 - ".\\..\\testrunner", -#else - "./testrunner", -#endif - "--enable=style,warning,performance,portability", "--inconclusive", "-rp", "-f", "-q", path - }; - std::string filename = i->first.substr(i->first.find_last_of("/\\")+1); - if (filename == "good.cpp" || filename == "good.c") { - CppCheckExecutor exec; - exec.check(7, argv); - ASSERT_EQUALS_MSG("", GET_REDIRECT_ERROUT, i->first); - } else if (filename == "bad.cpp" || filename == "bad.c") { - CppCheckExecutor exec; - exec.check(7, argv); - std::string expected_filename = Path::getPathFromFilename(i->first) + "out.txt"; - std::ifstream ifs(expected_filename); - // TODO: this contains stray \n at the start of each line when the out.txt files have CRLF - std::string expected((std::istreambuf_iterator(ifs)), std::istreambuf_iterator()); - std::string actual = GET_REDIRECT_ERROUT; - // We need some uniformization to make this work on Unix and Windows - std::replace(actual.begin(), actual.end(), '/', '\\'); // Uniformize slashes. - while (actual.find("..\\") != std::string::npos) - actual.erase(actual.find("..\\"), 3); // Remove '..\' - ASSERT_EQUALS_MSG(expected, actual, i->first); - } - } - } - - class CppCheckExecutor2 : public CppCheckExecutor { - public: - void settings(const Settings &set) { - setSettings(set); - } - -#ifndef _WIN32 - virtual void reportOut(const std::string &outmsg, Color = Color::Reset) override { - std::cout << outmsg << std::endl; - } -#endif - }; - - void runConsoleCodePageTranslationOnWindows() const { - REDIRECT; - - std::vector msgs = { - "ASCII", // first entry should be using only ASCII - "kääk", - "Português" - // "日本語", - // "한국어", - // "Русский", - // "中文", - }; - - Settings set1; - Settings setXML; - setXML.xml = true; - setXML.xml_version = 2; - CppCheckExecutor2 exec; - exec.settings(set1); - CppCheckExecutor2 execXML; - execXML.settings(setXML); - - for (std::vector::const_iterator i = msgs.begin(); i != msgs.end(); ++i) { - CLEAR_REDIRECT_OUTPUT; - CLEAR_REDIRECT_ERROUT; - - exec.reportOut(*i); - - ErrorMessage errMessage; - errMessage.setmsg(*i); - - // no xml option - exec.reportInfo(errMessage); - -#ifdef _WIN32 - // expect changes through code page translation except for the 'ASCII' case - if (i == msgs.begin()) { - ASSERT_EQUALS(*i + "\n", GET_REDIRECT_OUTPUT); - ASSERT_EQUALS(*i + "\n", GET_REDIRECT_ERROUT); - } else { - ASSERT(*i + "\n" != GET_REDIRECT_OUTPUT); - ASSERT(*i + "\n" != GET_REDIRECT_ERROUT); - } -#else - // do not expect any code page translation - ASSERT_EQUALS(*i + "\n", GET_REDIRECT_OUTPUT); - ASSERT_EQUALS(*i + "\n", GET_REDIRECT_ERROUT); -#endif - - CLEAR_REDIRECT_ERROUT; - // possible change of msg for xml option - // with ErrorMessage::fixInvalidChars(), plus additional XML formatting - execXML.reportInfo(errMessage); - // undo the effects of "ErrorMessage::fixInvalidChars()" - // replacing octal constants with characters - std::string myErr; - std::string myErrOrg = GET_REDIRECT_ERROUT; - std::string::const_iterator from = myErrOrg.begin(); - while (from != myErrOrg.end()) { - if (*from == '\\') { - ++from; - unsigned c; - // expect three digits - std::istringstream es(std::string(from, from + 3)); - es >> std::oct >> c; - ++from; - ++from; - myErr.push_back(c); - } else { - myErr.push_back(*from); - } - ++from; - } - - ASSERT(std::string::npos != myErr.find(*i)); - } - } -}; - -REGISTER_TEST(TestSamples)