public void Should_Run_Task_Teardown_After_Each_Running_Task() { // Given var result = new List <string>(); var fixture = new CakeEngineFixture(); var engine = fixture.CreateEngine(); engine.RegisterTaskSetupAction(context => result.Add("TASK_SETUP:" + context.Task.Name)); engine.RegisterTaskTeardownAction(context => result.Add("TASK_TEARDOWN:" + context.Task.Name)); engine.RegisterTask("A").Does(() => result.Add("Executing A")); engine.RegisterTask("B").Does(() => result.Add("Executing B")).IsDependentOn("A"); // When engine.RunTarget(fixture.Context, fixture.ExecutionStrategy, "B"); // Then Assert.Equal(new List <string> { "TASK_SETUP:A", "Executing A", "TASK_TEARDOWN:A", "TASK_SETUP:B", "Executing B", "TASK_TEARDOWN:B" }, result); }
public void Should_Not_Run_Task_If_Task_Setup_Failed() { // Given var result = new List <string>(); var fixture = new CakeEngineFixture(); var engine = fixture.CreateEngine(); engine.RegisterTaskSetupAction(context => { throw new Exception("fake exception"); }); engine.RegisterTask("A").Does(() => result.Add("Executing A")); engine.RegisterTask("B").Does(() => result.Add("Executing B")).IsDependentOn("A"); // When Record.Exception(() => engine.RunTarget(fixture.Context, fixture.ExecutionStrategy, "B")); // Then Assert.Equal(new List <string>(), result); Assert.True(fixture.Log.Entries.Any(x => x.Message == "Executing custom task setup action (A)...")); Assert.False(fixture.Log.Entries.Any(x => x.Message == "Executing custom task setup action (B)...")); }
public void Should_Run_Teardown_If_Setup_Failed() { // Given var fixture = new CakeEngineFixture(); var engine = fixture.CreateEngine(); engine.RegisterSetupAction(context => { throw new InvalidOperationException("Fail"); }); engine.RegisterTeardownAction(context => { }); engine.RegisterTask("A").Does(() => { }); // When var result = Record.Exception(() => engine.RunTarget(fixture.Context, fixture.ExecutionStrategy, "A")); // Then Assert.NotNull(result); Assert.IsType <InvalidOperationException>(result); Assert.Equal("Fail", result?.Message); Assert.True(fixture.Log.Entries.Any(x => x.Message == "Executing custom teardown action...")); }
public void Should_Skip_Tasks_Where_CakeContext_Criterias_Are_Not_Fulfilled() { // Given var result = new List <string>(); var fixture = new CakeEngineFixture(); var engine = fixture.CreateEngine(); engine.RegisterTask("A").Does(() => result.Add("A")); engine.RegisterTask("B").IsDependentOn("A").WithCriteria(context => false).Does(() => result.Add("B")); engine.RegisterTask("C").IsDependentOn("B").Does(() => result.Add("C")); // When engine.RunTarget(fixture.Context, fixture.ExecutionStrategy, "C"); // Then Assert.Equal(2, result.Count); Assert.Equal("A", result[0]); Assert.Equal("C", result[1]); }
public void Should_Execute_Tasks_In_Order() { // Given var result = new List <string>(); var fixture = new CakeEngineFixture(); var engine = fixture.CreateEngine(); engine.RegisterTask("A").Does(() => result.Add("A")); engine.RegisterTask("B").IsDependentOn("A").Does(() => result.Add("B")); engine.RegisterTask("C").IsDependentOn("B").Does(() => result.Add("C")); // When engine.RunTarget(fixture.Context, fixture.ExecutionStrategy, "C"); // Then Assert.Equal(3, result.Count); Assert.Equal("A", result[0]); Assert.Equal("B", result[1]); Assert.Equal("C", result[2]); }
public void Should_Log_Task_Teardown_Exception_If_Both_Task_Setup_And_Task_Teardown_Actions_Throw() { // Given var fixture = new CakeEngineFixture(); var engine = fixture.CreateEngine(); engine.RegisterTaskSetupAction(context => { throw new InvalidOperationException("Task Setup: " + context.Task.Name); }); engine.RegisterTaskTeardownAction(context => { throw new InvalidOperationException("Task Teardown: " + context.Task.Name); }); engine.RegisterTask("A").Does(() => { }); // When var result = Record.Exception(() => engine.RunTarget(fixture.Context, fixture.ExecutionStrategy, "A")); // Then Assert.NotNull(result); Assert.IsType <InvalidOperationException>(result); Assert.Equal("Task Setup: A", result?.Message); Assert.True(fixture.Log.Entries.Any(x => x.Message.StartsWith("Task Teardown error (A):"))); }