private async Task DisplayResults()

in src/dotnet/Rider.Plugins.TrxPlugin/TrxManager.cs [218:357]


    private async Task DisplayResults(CancellationToken ct, List<UnitTestResult> results, string id, string trxFilePath)
    {
        var existingSession = _mySessionRepository.GetById(new Guid(id));
        if (existingSession != null)
        {
            await _mySessionConductor.CloseSession(existingSession);
        }

        IUnitTestSession
            session = this._mySessionRepository.CreateSession(NothingCriterion.Instance,
                Path.GetFileName(trxFilePath), new Guid(id));
        HashSet<IUnitTestElement> elements = [];
        IUnitTestTransactionCommitResult transactionCommitResult = await this._myElementRepository.BeginTransaction(
            (tx =>
            {
                foreach (var result in results)
                {
                    var outerElement = TestElementCreator(result, tx, elements, id);
                    if (outerElement is null)
                    {
                        continue;
                    }
                    var realElement = _myRealElementsFinder.FindRealElement(result);
                    if (realElement is null)
                    {
                        var ns = result.Definition?.TestMethod?.ClassName == null
                            ? UnitTestElementNamespace.Create("")
                            : UnitTestElementNamespace.Create(
                                TrxParser.GetNamespaceFromClassName(result.Definition.TestMethod.ClassName));
                        if (result.Definition?.TestMethod?.ClassName is null)
                        {
                            tx.Create(outerElement);
                            elements.Add(outerElement);
                            continue;
                        }
                        var parent =
                            new TestElement(TrxParser.GetOnlyClassName(result.Definition?.TestMethod?.ClassName),
                                ns)
                            {
                                NaturalId = UT.CreateId(
                                    _myProjectCache.GetProject(_mySolution.SolutionDirectory.ToString()),
                                    TargetFrameworkId.Default,
                                    this._myTestProvider,
                                    id + result.Definition?.TestMethod?.ClassName +
                                    TrxParser.GetOnlyClassName(result.Definition?.TestMethod?.ClassName))
                            };
                        if (parent.Equals(outerElement))
                        {
                            tx.Create(outerElement);
                            elements.Add(outerElement);
                            continue;
                        }
                        if (elements.Contains(parent))
                        {
                            outerElement.Parent = elements.FirstOrDefault(e => e.Equals(parent));
                        }
                        else
                        {
                            tx.Create(parent);
                            elements.Add(parent);
                            outerElement.Parent = parent;
                        }

                        tx.Create(outerElement);
                        elements.Add(outerElement);
                    }
                    else
                    {
                        elements.Add(realElement);
                    }
                }
            }), ct);
        UT.Facade.Append(
                new TestElementCriterion(elements)).To
            .Session(session);
        foreach (var element in elements)
        {
            var result = results.FirstOrDefault(r =>
                (TrxParser.GetNamespaceFromClassName(r.Definition?.TestMethod?.ClassName ?? "")) ==
                element.GetNamespace().ToString() &&
                r.TestName == element.ShortName);

            if (result == null)
            {
                continue;
            }

            switch (result.Outcome?.ToLower())
            {
                case null:
                    break;
                case "passed":
                    _myResultManager.TestFinishing(element, session, UnitTestStatus.Success, null,
                        TimeSpan.Parse(result.Duration ?? "0", CultureInfo.InvariantCulture));
                    break;
                case "failed":
                    _myResultManager.TestFinishing(element, session, UnitTestStatus.Failed,
                        result.Output?.ErrorInfo?.Message,
                        TimeSpan.Parse(result.Duration ?? "0", CultureInfo.InvariantCulture));
                    var exceptions = new List<TestException>
                    {
                        new TestException(null, result.Output?.ErrorInfo?.Message,
                            result.Output?.ErrorInfo?.StackTrace)
                    };
                    _myResultManager.TestException(element, session, exceptions);
                    break;
                case "aborted":
                    _myResultManager.TestFinishing(element, session, UnitTestStatus.Aborted,
                        null, TimeSpan.Parse(result.Duration ?? "0", CultureInfo.InvariantCulture));
                    break;
                case "running":
                    _myResultManager.TestFinishing(element, session, UnitTestStatus.Running,
                        null, TimeSpan.Parse(result.Duration ?? "0", CultureInfo.InvariantCulture));
                    break;
                case "inconclusive":
                    _myResultManager.TestFinishing(element, session, UnitTestStatus.Inconclusive, null,
                        TimeSpan.Parse(result.Duration ?? "0", CultureInfo.InvariantCulture));
                    break;
                case "pending":
                    _myResultManager.TestFinishing(element, session, UnitTestStatus.Pending,
                        null, TimeSpan.Parse(result.Duration ?? "0", CultureInfo.InvariantCulture));
                    break;
                case "notexecuted":
                    _myResultManager.TestFinishing(element, session, UnitTestStatus.Ignored,
                        result.Output?.ErrorInfo?.Message);
                    break;
                default:
                    _myResultManager.TestFinishing(element, session, UnitTestStatus.Unknown,
                        null, TimeSpan.Parse(result.Duration ?? "0", CultureInfo.InvariantCulture));
                    break;
            }

            _myResultManager.TestOutput(element, session, result.Output?.StdOut, TestOutputType.STDOUT);
        }

        IUnitTestSessionTreeViewModel sessionTreeViewModel = await this._mySessionConductor.OpenSession(session);
        sessionTreeViewModel.Grouping.Value = new UnitTestingGroupingSelection(UnitTestSessionTreeGroupings
            .GetSessionProviders(_mySolution, session)
            .Where(p => p.Key == "Namespace").ToArray());
    }