CMake/Tests/CTestTestMemcheck/memtester.cxx.in
Rolf Eike Beer 6f9aaad150 CTest: create one output file per memcheck (#14303)
The output file used for memory checker runs must be unique for every test run
in parallel, so simply make them unique for every test run. Simply use the test
index to avoid collisions.
2013-08-07 22:25:48 +02:00

53 lines
1.1 KiB
C++

#include <cmSystemTools.h>
#include <string>
#define RETVAL @_retval@
int
main(int argc, char **argv)
{
std::string exename = argv[0];
std::string logarg;
bool nextarg = false;
if (exename.find("valgrind") != exename.npos)
logarg = "--log-file=";
else if (exename.find("purify") != exename.npos)
#ifdef _WIN32
logarg = "/SAVETEXTDATA=";
#else
logarg = "-log-file=";
#endif
else if (exename.find("BC") != exename.npos)
{
nextarg = true;
logarg = "/X";
}
if (!logarg.empty()) {
std::string logfile;
for (int i = 1; i < argc; i++) {
std::string arg = argv[i];
if (arg.find(logarg) == 0)
{
if (nextarg)
{
if (i == argc - 1)
return 1; // invalid command line
logfile = argv[i + 1];
}
else
{
logfile = arg.substr(logarg.length());
}
// keep searching, it may be overridden later to provoke an error
}
}
if (!logfile.empty())
cmSystemTools::Touch(logfile.c_str(), true);
}
return RETVAL;
}