BUG: Fixed extraneous newlines from ctest process output
This commit is contained in:
parent
39e5f9d963
commit
6727834a8c
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue