提交 7efe43b6 编写于 作者: J Jared Parsons

Merge pull request #9946 from jaredpar/data

Include test counts in JSON
......@@ -9,6 +9,7 @@
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace RunTests.Cache
{
......@@ -21,6 +22,9 @@ internal sealed class WebDataStorage : IDataStorage
private const string NameResultsFileContent = "ResultsFileContent";
private const string NameElapsedSeconds = "ElapsedSeconds";
private const string NameElapsedSecondsMisspelled = "EllapsedSeconds";
private const string NameTestPassed = "TestPassed";
private const string NameTestFailed = "TestFailed";
private const string NameTestSkipped = "TestSkipped";
private readonly RestClient _restClient = new RestClient(Constants.DashboardUriString);
......@@ -95,6 +99,7 @@ public async Task AddCachedTestResult(AssemblyInfo assemblyInfo, ContentFile con
private static JObject CreateTestResultData(string resultsFileName, CachedTestResult testResult)
{
var numbers = GetTestNumbers(resultsFileName, testResult) ?? Tuple.Create(-1, -1, -1);
var obj = new JObject();
obj[NameExitCode] = testResult.ExitCode;
obj[NameOutputStandard] = testResult.StandardOutput;
......@@ -103,6 +108,10 @@ private static JObject CreateTestResultData(string resultsFileName, CachedTestRe
obj[NameResultsFileContent] = testResult.ResultsFileContent;
obj[NameElapsedSeconds] = (int)testResult.Elapsed.TotalSeconds;
obj[NameElapsedSecondsMisspelled] = (int)testResult.Elapsed.TotalSeconds;
obj[NameTestPassed] = numbers.Item1;
obj[NameTestFailed] = numbers.Item2;
obj[NameTestSkipped] = numbers.Item3;
return obj;
}
......@@ -115,5 +124,31 @@ private JObject CreateTestSourceData(AssemblyInfo assemblyInfo)
obj["IsJenkins"] = Constants.IsJenkinsRun;
return obj;
}
private static Tuple<int, int, int> GetTestNumbers(string resultsFileName, CachedTestResult testResult)
{
if (!resultsFileName.EndsWith("xml", StringComparison.OrdinalIgnoreCase))
{
return null;
}
try
{
using (var reader = new StringReader(testResult.ResultsFileContent))
{
var document = XDocument.Load(reader);
var assembly = document.Element("assemblies").Element("assembly");
var passed = int.Parse(assembly.Attribute("passed").Value);
var failed = int.Parse(assembly.Attribute("failed").Value);
var skipped = int.Parse(assembly.Attribute("skipped").Value);
return Tuple.Create(passed, failed, skipped);
}
}
catch (Exception ex)
{
Logger.Log($"Exception reading test numbers: {ex}");
return null;
}
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册