diff options
Diffstat (limited to 'Source/CTest/cmCTestMemCheckCommand.cxx')
-rw-r--r-- | Source/CTest/cmCTestMemCheckCommand.cxx | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestMemCheckCommand.cxx b/Source/CTest/cmCTestMemCheckCommand.cxx new file mode 100644 index 0000000..a5d5995 --- /dev/null +++ b/Source/CTest/cmCTestMemCheckCommand.cxx @@ -0,0 +1,54 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#include "cmCTestMemCheckCommand.h" + +#include <sstream> +#include <string> +#include <vector> + +#include "cmCTest.h" +#include "cmCTestGenericHandler.h" +#include "cmCTestMemCheckHandler.h" +#include "cmMakefile.h" + +cmCTestMemCheckCommand::cmCTestMemCheckCommand() +{ + this->Arguments[ctm_DEFECT_COUNT] = "DEFECT_COUNT"; + this->Arguments[ctm_LAST] = nullptr; + this->Last = ctm_LAST; +} + +cmCTestGenericHandler* cmCTestMemCheckCommand::InitializeActualHandler() +{ + cmCTestGenericHandler* handler = + this->CTest->GetInitializedHandler("memcheck"); + + this->CTest->SetCTestConfigurationFromCMakeVariable( + this->Makefile, "MemoryCheckType", "CTEST_MEMORYCHECK_TYPE", this->Quiet); + this->CTest->SetCTestConfigurationFromCMakeVariable( + this->Makefile, "MemoryCheckSanitizerOptions", + "CTEST_MEMORYCHECK_SANITIZER_OPTIONS", this->Quiet); + this->CTest->SetCTestConfigurationFromCMakeVariable( + this->Makefile, "MemoryCheckCommand", "CTEST_MEMORYCHECK_COMMAND", + this->Quiet); + this->CTest->SetCTestConfigurationFromCMakeVariable( + this->Makefile, "MemoryCheckCommandOptions", + "CTEST_MEMORYCHECK_COMMAND_OPTIONS", this->Quiet); + this->CTest->SetCTestConfigurationFromCMakeVariable( + this->Makefile, "MemoryCheckSuppressionFile", + "CTEST_MEMORYCHECK_SUPPRESSIONS_FILE", this->Quiet); + + handler->SetQuiet(this->Quiet); + return handler; +} + +void cmCTestMemCheckCommand::ProcessAdditionalValues( + cmCTestGenericHandler* handler) +{ + if (this->Values[ctm_DEFECT_COUNT] && *this->Values[ctm_DEFECT_COUNT]) { + std::ostringstream str; + str << static_cast<cmCTestMemCheckHandler*>(handler)->GetDefectCount(); + this->Makefile->AddDefinition(this->Values[ctm_DEFECT_COUNT], + str.str().c_str()); + } +} |