protected override async Task RunTestAsync() { Jenkins.MainLog.WriteLine("Running XI on '{0}' ({2}) for {1}", Device?.Name, ProjectFile, Device?.UDID); ExecutionResult = ExecutionResult & ~TestExecutingResult.InProgressMask | TestExecutingResult.Running; await BuildTask.RunAsync(); if (!BuildTask.Succeeded) { ExecutionResult = TestExecutingResult.BuildFailure; return; } using (var resource = await NotifyBlockingWaitAsync(AcquireResourceAsync())) { if (runner == null) { await SelectSimulatorAsync(); } await runner.RunAsync(); } ExecutionResult = runner.Result; KnownFailure = null; if (Jenkins.IsKnownTestIssue(runner.MainLog, out KnownFailure)) { Jenkins.MainLog.WriteLine($"Test run has a known failure: '{KnownFailure}'"); } }
protected override async Task RunTestAsync() { Jenkins.MainLog.WriteLine("Running XI on '{0}' ({2}) for {1}", Device?.Name, ProjectFile, Device?.UDID); ExecutionResult = ExecutionResult & ~TestExecutingResult.InProgressMask | TestExecutingResult.Running; await BuildTask.RunAsync(); if (!BuildTask.Succeeded) { ExecutionResult = TestExecutingResult.BuildFailure; return; } using (var resource = await NotifyBlockingWaitAsync(AcquireResourceAsync())) { if (runner == null) { await SelectSimulatorAsync(); } await runner.RunAsync(); } ExecutionResult = runner.Result; KnownFailure = null; if (Jenkins.IsHE0038Error(runner.MainLog)) { KnownFailure = $"<a href='https://github.com/xamarin/maccore/issues/581'>HE0038</a>"; } }
public async Task <bool> BuildAsync() { if (testTask.Finished) { return(true); } await testTask.VerifyBuildAsync(); if (testTask.Finished) { return(BuildTask.Succeeded); } testTask.ExecutionResult = TestExecutingResult.Building; await BuildTask.RunAsync(); if (!BuildTask.Succeeded) { if (BuildTask.TimedOut) { testTask.ExecutionResult = TestExecutingResult.TimedOut; } else { testTask.ExecutionResult = TestExecutingResult.BuildFailure; } testTask.FailureMessage = BuildTask.FailureMessage; if (BuildTask.KnownFailure.HasValue) { testTask.KnownFailure = BuildTask.KnownFailure; } if (generateXmlFailures && BuildTask.BuildLog != null && File.Exists(BuildTask.BuildLog.FullPath)) { try { var logReader = BuildTask.BuildLog.GetReader(); ResultParser.GenerateFailure( logs: testTask.Logs, source: "build", appName: testTask.TestName, variation: testTask.Variation, title: $"App Build {testTask.TestName} {testTask.Variation}", message: $"App could not be built {testTask.FailureMessage}.", stderrReader: logReader, jargon: xmlResultJargon); } catch (Exception e) { testTask.FailureMessage += $" (failed to parse the logs: {e.Message})"; } } } else { testTask.ExecutionResult = TestExecutingResult.Built; } return(BuildTask.Succeeded); }
public async Task <bool> BuildAsync() { if (testTask.Finished) { return(true); } await testTask.VerifyBuildAsync(); if (testTask.Finished) { return(BuildTask.Succeeded); } testTask.ExecutionResult = TestExecutingResult.Building; await BuildTask.RunAsync(); if (!BuildTask.Succeeded) { if (BuildTask.TimedOut) { testTask.ExecutionResult = TestExecutingResult.TimedOut; } else { testTask.ExecutionResult = TestExecutingResult.BuildFailure; } testTask.FailureMessage = BuildTask.FailureMessage; if (!string.IsNullOrEmpty(BuildTask.KnownFailure)) { testTask.KnownFailure = BuildTask.KnownFailure; } if (generateXmlFailures) { var logReader = BuildTask.BuildLog.GetReader(); ResultParser.GenerateFailure( logs: testTask.Logs, source: "build", appName: testTask.TestName, variation: testTask.Variation, title: $"App Build {testTask.TestName} {testTask.Variation}", message: $"App could not be built {testTask.FailureMessage}.", stderrReader: logReader, jargon: xmlResultJargon); } } else { testTask.ExecutionResult = TestExecutingResult.Built; } return(BuildTask.Succeeded); }
public void BuildTaskRunAsync() { var task = new BuildTask("ping.exe localhost -n 1"); var writer = new Mock.MockBuildOutputWriter(); var env = new BuildEnvironment("c:\\temp", writer); var result = task.RunAsync(env).Result; var output = writer.StringWriter.ToString(); Assert.IsTrue(result.Success); Assert.AreEqual(0, result.ExitCode); Assert.IsTrue(output.Contains("Ping statistics")); }
public void BuildTaskRunAsyncWithCustomExitCode() { var task = new BuildTask("ping.exe -foobar"); var writer = new Mock.MockBuildOutputWriter(); var env = new BuildEnvironment("c:\\temp", writer); task.SuccessfulExitCodes = new int[] { 0, 1 }; var result = task.RunAsync(env).Result; var output = writer.StringWriter.ToString(); Assert.IsTrue(result.Success); Assert.AreEqual(1, result.ExitCode); }