in src/dotnet/Rider.Plugins.TrxPlugin/TrxManager.cs [147:216]
private async Task<RdCallResponse> HandleTrx(string trxFilePath)
{
XDocument document;
try
{
await using var stream = File.OpenRead(trxFilePath);
document = await XDocument.LoadAsync(stream, LoadOptions.None, CancellationToken.None);
}
catch (Exception ex)
{
_myLogger.Error(ex);
return new RdCallResponse("Failed", "import.messages.error.open");
}
var root = document.Root;
var defaultNamespace = root?.GetDefaultNamespace();
List<UnitTestResult> results;
try
{
results = TrxParser.ParseResults(root, defaultNamespace);
}
catch (Exception ex)
{
_myLogger.Error(ex);
return new RdCallResponse("Failed", "import.messages.error.parse");
}
var countOuterResults = results.Count;
try
{
for (int i = 0; i < countOuterResults; i++)
{
TrxParser.AddInnerResults(results[i], results);
}
}
catch (Exception ex)
{
_myLogger.Error(ex);
return new RdCallResponse("Failed", "import.messages.error.innerResults");
}
try
{
TrxParser.AddDefinitions(root, results, defaultNamespace);
}
catch (Exception ex)
{
_myLogger.Error(ex);
return new RdCallResponse("Failed", "import.messages.error.definitions");
}
try
{
var testRunId = root?.Attribute("id")?.Value;
if (defaultNamespace?.ToString() == "")
{
testRunId = root.Element("TestRun")?.Element("id")?.Value;
}
await DisplayResults(_myLifetime, results, testRunId, trxFilePath);
}
catch (Exception ex)
{
_myLogger.Error(ex);
return new RdCallResponse("Failed", "import.messages.error.displayResults");
}
return new RdCallResponse("Success", "Successfully parsed trx file");
}