BUG: Fixed extraneous newlines from ctest process output

This commit is contained in:
Zach Mullen 2009-09-08 14:48:23 -04:00
parent 39e5f9d963
commit 6727834a8c
2 changed files with 26 additions and 21 deletions

View File

@ -90,7 +90,7 @@ void cmCTestMultiProcessHandler::SubmitBatchTests()
//---------------------------------------------------------
void cmCTestMultiProcessHandler::StartTestProcess(int test)
{
cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, " test " << test << "\n");
cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "test " << test << "\n");
this->TestRunningMap[test] = true; // mark the test as running
// now remove the test itself
this->EraseTest(test);

View File

@ -93,26 +93,6 @@ int cmProcess::GetNextOutputLine(std::string& stdOutLine,
std::vector<char>::iterator erriter =
this->StdErrorBuffer.begin();
//If process terminated, flush the buffer
if(!running)
{
if(!this->StdErrorBuffer.empty())
{
gotStdErr = true;
stdErrLine.append(&this->StdErrorBuffer[0], this->StdErrorBuffer.size());
this->StdErrorBuffer.erase(this->StdErrorBuffer.begin(),
this->StdErrorBuffer.end());
}
if(!this->StdOutBuffer.empty())
{
gotStdOut = true;
stdOutLine.append(&this->StdOutBuffer[0], this->StdOutBuffer.size());
this->StdOutBuffer.erase(this->StdOutBuffer.begin(),
this->StdOutBuffer.end());
}
return cmsysProcess_Pipe_None;
}
// Check for a newline in stdout.
for(;outiter != this->StdOutBuffer.end(); ++outiter)
{
@ -162,6 +142,31 @@ int cmProcess::GetNextOutputLine(std::string& stdOutLine,
break;
}
}
if(!running && !gotStdErr && !gotStdOut)
{
//If process terminated with no newline, flush the buffer
if(!running)
{
if(!this->StdErrorBuffer.empty())
{
gotStdErr = true;
stdErrLine.append(&this->StdErrorBuffer[0],
this->StdErrorBuffer.size());
this->StdErrorBuffer.erase(this->StdErrorBuffer.begin(),
this->StdErrorBuffer.end());
}
if(!this->StdOutBuffer.empty())
{
gotStdOut = true;
stdOutLine.append(&this->StdOutBuffer[0],
this->StdOutBuffer.size());
this->StdOutBuffer.erase(this->StdOutBuffer.begin(),
this->StdOutBuffer.end());
}
return cmsysProcess_Pipe_None;
}
}
//If we get here, we have stuff waiting in the buffers, but no newline
return this->LastOutputPipe;
}