Beispiel #1
0
            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);
            }
Beispiel #2
0
            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)..."));
            }
Beispiel #3
0
            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..."));
            }
Beispiel #4
0
            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]);
            }
Beispiel #5
0
            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]);
            }
Beispiel #6
0
            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):")));
            }