ENH: Purify support should work now.

This commit is contained in:
Andy Cedilnik 2003-12-16 17:30:24 -05:00
parent 802601b606
commit f90fc6ee39
1 changed files with 18 additions and 11 deletions

View File

@ -304,6 +304,7 @@ cmCTest::cmCTest()
void cmCTest::Initialize()
{
m_ToplevelPath = cmSystemTools::GetCurrentWorkingDirectory();
cmSystemTools::ConvertToUnixSlashes(m_ToplevelPath);
// parse the dart test file
std::ifstream fin("DartConfiguration.tcl");
if(!fin)
@ -1920,6 +1921,11 @@ bool cmCTest::InitializeMemoryChecking()
return false;
}
if ( m_MemoryTester[0] == '\"' && m_MemoryTester[m_MemoryTester.size()-1] == '\"' )
{
m_MemoryTester = m_MemoryTester.substr(1, m_MemoryTester.size()-2);
}
// Setup the options
if ( m_DartConfiguration["MemoryCheckCommandOptions"].size() )
{
@ -1933,7 +1939,7 @@ bool cmCTest::InitializeMemoryChecking()
m_MemoryTesterOutputFile = m_ToplevelPath + "/Testing/Temporary/MemoryChecker.log";
m_MemoryTesterOutputFile = cmSystemTools::EscapeSpaces(m_MemoryTesterOutputFile.c_str());
if ( m_MemoryTester.find("valgrind") )
if ( m_MemoryTester.find("valgrind") != std::string::npos )
{
m_MemoryTesterStyle = cmCTest::VALGRIND;
if ( !m_MemoryTesterOptions.size() )
@ -1951,7 +1957,7 @@ bool cmCTest::InitializeMemoryChecking()
m_MemoryTesterOptions += " --suppressions=" + cmSystemTools::EscapeSpaces(m_DartConfiguration["MemoryCheckSuppressionFile"].c_str()) + "";
}
}
else if ( m_MemoryTester.find("purify") )
else if ( m_MemoryTester.find("purify") != std::string::npos )
{
m_MemoryTesterStyle = cmCTest::PURIFY;
#ifdef _WIN32
@ -1960,7 +1966,7 @@ bool cmCTest::InitializeMemoryChecking()
m_MemoryTesterOptions += " -log-file=" + m_MemoryTesterOutputFile;
#endif
}
else if ( m_MemoryTester.find("boundschecker") )
else if ( m_MemoryTester.find("boundschecker") != std::string::npos )
{
m_MemoryTesterStyle = cmCTest::BOUNDS_CHECKER;
std::cerr << "Bounds checker not yet implemented" << std::endl;
@ -2674,6 +2680,7 @@ int cmCTest::RunTest(std::vector<const char*> argv, std::string* output, int *re
cmsysProcess* cp = cmsysProcess_New();
cmsysProcess_SetCommand(cp, &*argv.begin());
std::cout << "Command is: " << argv[0] << std::endl;
if(cmSystemTools::GetRunCommandHideConsole())
{
cmsysProcess_SetOption(cp, cmsysProcess_Option_HideWindow, 1);
@ -3015,7 +3022,7 @@ bool cmCTest::ProcessMemCheckPurifyOutput(const std::string&, std::string& log,
cmOStringStream ostr;
log = "";
cmsys::RegularExpression pfW("^\\[W\\] ([A-Z][A-Z][A-Z][A-Z]*): ");
cmsys::RegularExpression pfW("^\\[[WEI]\\] ([A-Z][A-Z][A-Z][A-Z]*): ");
std::string line;
while ( cmSystemTools::GetLineFromStream(ifs, line) )
@ -3032,18 +3039,18 @@ bool cmCTest::ProcessMemCheckPurifyOutput(const std::string&, std::string& log,
break;
}
}
if ( failure )
{
ostr << "<b>" << cmCTestMemCheckResultStrings[failure] << "</b> ";
results[failure] ++;
}
else
if ( cc == cmCTest::NO_MEMORY_FAULT )
{
std::cerr<< "Unknown Purify memory fault: " << pfW.match(1) << std::endl;
ostr << "*** Unknown Purify memory fault: " << pfW.match(1) << std::endl;
}
}
ostr << line << std::endl;
if ( failure != NO_MEMORY_FAULT )
{
ostr << "<b>" << cmCTestMemCheckResultStrings[failure] << "</b> ";
results[failure] ++;
}
ostr << cmCTest::MakeXMLSafe(line) << std::endl;
}
log = ostr.str();