Files
UnrealEngine/Engine/Source/Programs/AutomationTool/LowLevelTests/Utility/LowLevelTests.ReportParser.cs
2025-05-18 13:04:45 +08:00

58 lines
1.7 KiB
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using Gauntlet;
using System;
using System.Linq;
using System.Xml.Linq;
namespace LowLevelTests
{
public class LowLevelTestsReportParser
{
private XDocument ReportDoc;
public bool IsValid { get; protected set; }
public LowLevelTestsReportParser(string InContents)
{
try
{
ReportDoc = XDocument.Parse(InContents);
IsValid = true;
}
catch (Exception ParseEx)
{
Log.Warning("Encountered error while parsing report {0}", ParseEx.ToString());
IsValid = false;
}
}
public bool HasPassed()
{
if (!IsValid)
{
return false;
}
int NrOverallResultsFailures = -1;
int NrOverallResultsSuccesses = -1;
int NrOverallResultsCasesFailures = -1;
int NrOverallResultsCasesSuccesses = -1;
// OverallResults also exists in each SECTION of every test case, we need to use the last one in the end of the xml report
XElement OverallResults = ReportDoc.Descendants("OverallResults").LastOrDefault();
if (OverallResults != null)
{
NrOverallResultsFailures = int.Parse(OverallResults.Attribute("failures").Value);
NrOverallResultsSuccesses = int.Parse(OverallResults.Attribute("successes").Value);
}
XElement OverallResultsCases = ReportDoc.Descendants("OverallResultsCases").LastOrDefault();
if (OverallResultsCases != null)
{
NrOverallResultsCasesFailures = int.Parse(OverallResultsCases.Attribute("failures").Value);
NrOverallResultsCasesSuccesses = int.Parse(OverallResultsCases.Attribute("successes").Value);
}
return NrOverallResultsFailures == 0 && NrOverallResultsCasesFailures == 0 && NrOverallResultsSuccesses > 0 && NrOverallResultsCasesSuccesses > 0;
}
}
}