private TestResult CreateTestResult()

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;
        }