/// <summary> /// Convert UnrealAutomatedTestPassResults to Horde data model /// </summary> /// <param name="InTestPassResults"></param> /// <param name="ReportPath"></param> /// <param name="ReportURL"></param> public static UnrealEngineTestPassResults FromUnrealAutomatedTests(UnrealAutomatedTestPassResults InTestPassResults, string ReportPath, string ReportURL) { UnrealEngineTestPassResults OutTestPassResults = new UnrealEngineTestPassResults(); OutTestPassResults.ClientDescriptor = InTestPassResults.clientDescriptor; OutTestPassResults.ReportCreatedOn = InTestPassResults.reportCreatedOn; OutTestPassResults.ReportURL = ReportURL; OutTestPassResults.SucceededCount = InTestPassResults.succeeded; OutTestPassResults.SucceededWithWarningsCount = InTestPassResults.succeededWithWarnings; OutTestPassResults.FailedCount = InTestPassResults.failed; OutTestPassResults.NotRunCount = InTestPassResults.notRun; OutTestPassResults.TotalDurationSeconds = InTestPassResults.totalDuration; if (InTestPassResults.tests != null) { foreach (UnrealAutomatedTestResult InTestResult in InTestPassResults.tests) { TestResult ConvertedTestResult = OutTestPassResults.AddNewTestResult(); ConvertedTestResult.TestDisplayName = InTestResult.testDisplayName; ConvertedTestResult.FullTestPath = InTestResult.fullTestPath; ConvertedTestResult.State = InTestResult.state; Guid TestGuid = Guid.NewGuid(); ConvertedTestResult.ArtifactName = TestGuid + ".json"; InTestResult.artifactName = ConvertedTestResult.ArtifactName; // Copy Test Result Detail TestResultDetailed ConvertedTestResultDetailed = ConvertedTestResult.GetTestResultDetailed(); ConvertedTestResultDetailed.Errors = InTestResult.errors; ConvertedTestResultDetailed.Warnings = InTestResult.warnings; foreach (UnrealAutomationArtifact InTestArtifact in InTestResult.artifacts) { Artifact NewArtifact = ConvertedTestResultDetailed.AddNewArtifact(); NewArtifact.Id = InTestArtifact.id; NewArtifact.Name = InTestArtifact.name; NewArtifact.Type = InTestArtifact.type; ComparisonFiles ArtifactFiles = NewArtifact.Files; ArtifactFiles.Difference = Path.Combine(ReportPath, InTestArtifact.files.difference); ArtifactFiles.Approved = Path.Combine(ReportPath, InTestArtifact.files.approved); ArtifactFiles.Unapproved = Path.Combine(ReportPath, InTestArtifact.files.unapproved); } foreach (UnrealAutomationEntry InTestEntry in InTestResult.entries) { Entry NewEntry = ConvertedTestResultDetailed.AddNewEntry(); NewEntry.Filename = InTestEntry.filename; NewEntry.LineNumber = InTestEntry.lineNumber; NewEntry.Timestamp = InTestEntry.timestamp; Event EntryEvent = NewEntry.Event; EntryEvent.Artifact = [email protected]; EntryEvent.Context = [email protected]; EntryEvent.Message = [email protected]; EntryEvent.Type = [email protected]; } } } return(OutTestPassResults); }
/// <summary> /// Copy Test Results Artifacts /// </summary> /// <param name="OutputArtifactPath"></param> public void CopyTestResultsArtifacts(string OutputArtifactPath) { if (!Directory.Exists(OutputArtifactPath)) { Directory.CreateDirectory(OutputArtifactPath); } int ArtifactsCount = 0; foreach (TestResult OutputTestResult in Tests) { TestResultDetailed OutputTestResultDetailed = OutputTestResult.GetTestResultDetailed(); // copy artifacts foreach (Artifact TestArtifact in OutputTestResultDetailed.Artifacts) { string[] ArtifactPaths = { TestArtifact.Files.Difference, TestArtifact.Files.Approved, TestArtifact.Files.Unapproved }; foreach (string ArtifactPath in ArtifactPaths) { if (File.Exists(ArtifactPath)) { try { File.Copy(ArtifactPath, Path.Combine(OutputArtifactPath, Path.GetFileName(ArtifactPath))); ArtifactsCount++; } catch (Exception Ex) { Log.Error("Failed to copy artifact '{0}'. {1}", Path.GetFileName(ArtifactPath), Ex); } } } TestArtifact.Files.Difference = Path.GetFileName(TestArtifact.Files.Difference); TestArtifact.Files.Approved = Path.GetFileName(TestArtifact.Files.Approved); TestArtifact.Files.Unapproved = Path.GetFileName(TestArtifact.Files.Unapproved); } // write test json blob string TestResultFilePath = Path.Combine(OutputArtifactPath, OutputTestResult.ArtifactName); try { Json.Save(new FileReference(TestResultFilePath), OutputTestResultDetailed); ArtifactsCount++; } catch (Exception Ex) { Log.Error("Failed to save Test Result for '{0}'. {1}", OutputTestResult.TestDisplayName, Ex); } } Log.Verbose("Copied {0} artifacts for Horde to {1}", ArtifactsCount, OutputArtifactPath); }
/// <summary> /// Set the underlying TestResultDetailed /// </summary> public void SetTestResultDetailed(TestResultDetailed InTestResultDetailed) { TestDetailed = InTestResultDetailed; }
public TestResult() { TestDetailed = new TestResultDetailed(); }