Esempio n. 1
0
        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>";
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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"));
        }
Esempio n. 6
0
        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);
        }