ENH: Fix problem with Source Lines and add debugging of regular expressions

This commit is contained in:
Andy Cedilnik 2006-04-27 15:23:39 -04:00
parent 64cf77f823
commit 2ae84e5ba6
1 changed files with 32 additions and 15 deletions

View File

@ -534,20 +534,23 @@ void cmCTestBuildHandler::GenerateDartBuildOutput(
break;
}
}
if ( cm->SourceFile.size() > 0 )
if ( !cm->SourceFile.empty() && cm->LineNumber >= 0 )
{
os << "\t\t<SourceFile>" << cm->SourceFile << "</SourceFile>"
<< std::endl;
}
if ( cm->SourceFileTail.size() > 0 )
{
os << "\t\t<SourceFileTail>" << cm->SourceFileTail
<< "</SourceFileTail>" << std::endl;
}
if ( cm->LineNumber >= 0 )
{
os << "\t\t<SourceLineNumber>" << cm->LineNumber
<< "</SourceLineNumber>" << std::endl;
if ( cm->SourceFile.size() > 0 )
{
os << "\t\t<SourceFile>" << cm->SourceFile << "</SourceFile>"
<< std::endl;
}
if ( cm->SourceFileTail.size() > 0 )
{
os << "\t\t<SourceFileTail>" << cm->SourceFileTail
<< "</SourceFileTail>" << std::endl;
}
if ( cm->LineNumber >= 0 )
{
os << "\t\t<SourceLineNumber>" << cm->LineNumber
<< "</SourceLineNumber>" << std::endl;
}
}
os << "\t\t<PreContext>" << this->CTest->MakeXMLSafe(cm->PreContext)
<< "</PreContext>\n"
@ -891,6 +894,7 @@ int cmCTestBuildHandler::ProcessSingleLine(const char* data)
if ( !this->ErrorQuotaReached )
{
// Errors
int wrxCnt = 0;
for ( it = this->ErrorMatchRegex.begin();
it != this->ErrorMatchRegex.end();
++ it )
@ -898,11 +902,15 @@ int cmCTestBuildHandler::ProcessSingleLine(const char* data)
if ( it->find(data) )
{
errorLine = 1;
cmCTestLog(this->CTest, DEBUG, " Error Line: " << data << std::endl);
cmCTestLog(this->CTest, DEBUG, " Error Line: " << data
<< " (matches: " << this->CustomWarningMatches[wrxCnt] << ")"
<< std::endl);
break;
}
wrxCnt ++;
}
// Error exceptions
wrxCnt = 0;
for ( it = this->ErrorExceptionRegex.begin();
it != this->ErrorExceptionRegex.end();
++ it )
@ -911,14 +919,17 @@ int cmCTestBuildHandler::ProcessSingleLine(const char* data)
{
errorLine = 0;
cmCTestLog(this->CTest, DEBUG, " Not an error Line: " << data
<< " (matches: " << this->CustomErrorExceptions[wrxCnt] << ")"
<< std::endl);
break;
}
wrxCnt ++;
}
}
if ( !this->WarningQuotaReached )
{
// Warnings
int wrxCnt = 0;
for ( it = this->WarningMatchRegex.begin();
it != this->WarningMatchRegex.end();
++ it )
@ -927,11 +938,15 @@ int cmCTestBuildHandler::ProcessSingleLine(const char* data)
{
warningLine = 1;
cmCTestLog(this->CTest, DEBUG,
" Warning Line: " << data << std::endl);
" Warning Line: " << data
<< " (matches: " << this->CustomWarningMatches[wrxCnt] << ")"
<< std::endl);
break;
}
wrxCnt ++;
}
wrxCnt = 0;
// Warning exceptions
for ( it = this->WarningExceptionRegex.begin();
it != this->WarningExceptionRegex.end();
@ -941,9 +956,11 @@ int cmCTestBuildHandler::ProcessSingleLine(const char* data)
{
warningLine = 0;
cmCTestLog(this->CTest, DEBUG, " Not a warning Line: " << data
<< " (matches: " << this->CustomWarningExceptions[wrxCnt] << ")"
<< std::endl);
break;
}
wrxCnt ++;
}
}
if ( errorLine )