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