in GoogleTestAdapter/Core/TestResults/StreamingStandardOutputTestResultParser.cs [101:168]
private TestResult CreateTestResult()
{
int currentLineIndex = 0;
while (currentLineIndex < _consoleOutput.Count &&
!StandardOutputTestResultParser.IsRunLine(_consoleOutput[currentLineIndex]))
currentLineIndex++;
if (currentLineIndex == _consoleOutput.Count)
return null;
string line = _consoleOutput[currentLineIndex++];
string qualifiedTestname = StandardOutputTestResultParser.RemovePrefix(line).Trim();
TestCase testCase = StandardOutputTestResultParser.FindTestcase(qualifiedTestname, _testCasesRun);
if (testCase == null)
{
_logger.DebugWarning(String.Format(Resources.NoKnownTestCaseMessage, line));
return null;
}
if (currentLineIndex == _consoleOutput.Count)
{
CrashedTestCase = testCase;
return StandardOutputTestResultParser.CreateFailedTestResult(
testCase,
TimeSpan.FromMilliseconds(0),
StandardOutputTestResultParser.CrashText,
"");
}
line = _consoleOutput[currentLineIndex++];
string errorMsg = "";
while (
!(StandardOutputTestResultParser.IsFailedLine(line)
|| StandardOutputTestResultParser.IsPassedLine(line))
&& currentLineIndex <= _consoleOutput.Count)
{
errorMsg += line + "\n";
line = currentLineIndex < _consoleOutput.Count ? _consoleOutput[currentLineIndex] : "";
currentLineIndex++;
}
if (StandardOutputTestResultParser.IsFailedLine(line))
{
ErrorMessageParser parser = new ErrorMessageParser(errorMsg);
parser.Parse();
return StandardOutputTestResultParser.CreateFailedTestResult(
testCase,
StandardOutputTestResultParser.ParseDuration(line, _logger),
parser.ErrorMessage,
parser.ErrorStackTrace);
}
if (StandardOutputTestResultParser.IsPassedLine(line))
{
return StandardOutputTestResultParser.CreatePassedTestResult(
testCase,
StandardOutputTestResultParser.ParseDuration(line, _logger));
}
CrashedTestCase = testCase;
string message = StandardOutputTestResultParser.CrashText;
message += errorMsg == "" ? "" : ("\n" + Resources.TestOutput + $"\n\n{errorMsg}");
TestResult result = StandardOutputTestResultParser.CreateFailedTestResult(
testCase,
TimeSpan.FromMilliseconds(0),
message,
"");
return result;
}