public async Task RunsAfterContinueOnError() { using (TestHostContext hc = CreateTestContext()) { // Arrange. var variableSets = new[] { new[] { CreateStep(TaskResult.Failed, continueOnError: true), CreateStep(TaskResult.Succeeded) }, new[] { CreateStep(TaskResult.Failed, continueOnError: true), CreateStep(TaskResult.Succeeded, alwaysRun: true) }, new[] { CreateStep(TaskResult.Failed, continueOnError: true), CreateStep(TaskResult.Succeeded, continueOnError: true) }, new[] { CreateStep(TaskResult.Failed, continueOnError: true), CreateStep(TaskResult.Succeeded, critical: true) }, new[] { CreateStep(TaskResult.Failed, continueOnError: true), CreateStep(TaskResult.Succeeded, isFinally: true) }, new[] { CreateStep(TaskResult.Failed, continueOnError: true, critical: true), CreateStep(TaskResult.Succeeded) }, new[] { CreateStep(TaskResult.Failed, continueOnError: true, critical: true), CreateStep(TaskResult.Succeeded, alwaysRun: true) }, new[] { CreateStep(TaskResult.Failed, continueOnError: true, critical: true), CreateStep(TaskResult.Succeeded, continueOnError: true) }, new[] { CreateStep(TaskResult.Failed, continueOnError: true, critical: true), CreateStep(TaskResult.Succeeded, critical: true) }, new[] { CreateStep(TaskResult.Failed, continueOnError: true, critical: true), CreateStep(TaskResult.Succeeded, isFinally: true) }, }; foreach (var variableSet in variableSets) { _ec.Object.Result = null; // Act. await _stepsRunner.RunAsync( jobContext: _ec.Object, steps: variableSet.Select(x => x.Object).ToList()); // Assert. Assert.Equal(TaskResult.SucceededWithIssues, _ec.Object.Result); Assert.Equal(2, variableSet.Length); variableSet[0].Verify(x => x.RunAsync()); variableSet[1].Verify(x => x.RunAsync()); } } }
public async Task RunsAlwaysRuns() { using (TestHostContext hc = CreateTestContext()) { // Arrange. var variableSets = new[] { new { Steps = new[] { CreateStep(TaskResult.Succeeded), CreateStep(TaskResult.Succeeded, alwaysRun: true) }, Expected = TaskResult.Succeeded, }, new { Steps = new[] { CreateStep(TaskResult.Failed), CreateStep(TaskResult.Succeeded, alwaysRun: true) }, Expected = TaskResult.Failed, }, }; foreach (var variableSet in variableSets) { _ec.Object.Result = null; // Act. await _stepsRunner.RunAsync( jobContext: _ec.Object, steps: variableSet.Steps.Select(x => x.Object).ToList()); // Assert. Assert.Equal(variableSet.Expected, _ec.Object.Result ?? TaskResult.Succeeded); Assert.Equal(2, variableSet.Steps.Length); variableSet.Steps[0].Verify(x => x.RunAsync()); variableSet.Steps[1].Verify(x => x.RunAsync()); } } }
public async Task SetsJobResultCorrectly() { using (TestHostContext hc = CreateTestContext()) { // Arrange. var variableSets = new[] { new { Steps = new[] { CreateStep(TaskResult.Abandoned) }, Expected = TaskResult.Succeeded }, new { Steps = new[] { CreateStep(TaskResult.Canceled) }, Expected = TaskResult.Succeeded }, new { Steps = new[] { CreateStep(TaskResult.Failed), CreateStep(TaskResult.Succeeded) }, Expected = TaskResult.Failed }, new { Steps = new[] { CreateStep(TaskResult.Failed), CreateStep(TaskResult.Succeeded, alwaysRun: true) }, Expected = TaskResult.Failed }, new { Steps = new[] { CreateStep(TaskResult.Failed), CreateStep(TaskResult.Succeeded, isFinally: true) }, Expected = TaskResult.Failed }, new { Steps = new[] { CreateStep(TaskResult.Failed, continueOnError: true), CreateStep(TaskResult.Failed) }, Expected = TaskResult.Failed }, new { Steps = new[] { CreateStep(TaskResult.Failed, continueOnError: true), CreateStep(TaskResult.Succeeded) }, Expected = TaskResult.SucceededWithIssues }, new { Steps = new[] { CreateStep(TaskResult.Failed, continueOnError: true, critical: true), CreateStep(TaskResult.Succeeded) }, Expected = TaskResult.SucceededWithIssues }, new { Steps = new[] { CreateStep(TaskResult.Skipped) }, Expected = TaskResult.Succeeded }, new { Steps = new[] { CreateStep(TaskResult.Succeeded) }, Expected = TaskResult.Succeeded }, new { Steps = new[] { CreateStep(TaskResult.Succeeded), CreateStep(TaskResult.Failed) }, Expected = TaskResult.Failed }, new { Steps = new[] { CreateStep(TaskResult.Succeeded), CreateStep(TaskResult.SucceededWithIssues) }, Expected = TaskResult.SucceededWithIssues }, new { Steps = new[] { CreateStep(TaskResult.SucceededWithIssues), CreateStep(TaskResult.Succeeded) }, Expected = TaskResult.SucceededWithIssues }, new { Steps = new[] { CreateStep(TaskResult.SucceededWithIssues), CreateStep(TaskResult.Failed) }, Expected = TaskResult.Failed }, // Abandoned // Canceled // Failed // Skipped // Succeeded // SucceededWithIssues }; foreach (var variableSet in variableSets) { _ec.Object.Result = null; // Act. await _stepsRunner.RunAsync( jobContext: _ec.Object, steps: variableSet.Steps.Select(x => x.Object).ToList()); // Assert. Assert.True( variableSet.Expected == (_ec.Object.Result ?? TaskResult.Succeeded), $"Expected '{variableSet.Expected}'. Actual '{_ec.Object.Result}'. Steps: {FormatSteps(variableSet.Steps)}"); } } }