public static IFrostingTaskLifetime RegisterTaskLifetimeSubstitute(this CakeHostBuilderFixture fixture)
        {
            var lifetime = Substitute.For <IFrostingTaskLifetime>();

            fixture.Builder.ConfigureServices(s => s.RegisterInstance(lifetime).As <IFrostingTaskLifetime>());
            return(lifetime);
        }
Ejemplo n.º 2
0
        public void Should_Return_Zero_On_Success()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterDefaultTask();

            // When
            var result = fixture.Run();

            // Then
            Assert.Equal(0, result);
        }
Ejemplo n.º 3
0
        public void Should_Call_Teardown_On_Registered_Task_Lifetime()
        {
            // Given
            var fixture  = new CakeHostBuilderFixture();
            var lifetime = fixture.RegisterDefaultTask()
                           .RegisterTaskLifetimeSubstitute();

            // When
            fixture.Run();

            // Then
            Assert.True(lifetime.CalledTeardown);
        }
Ejemplo n.º 4
0
        public void Should_Register_Tasks_With_Engine()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterDefaultTask();

            // When
            fixture.Run();

            // Then
            Assert.True(fixture.Engine.IsTaskRegistered("DummyTask"));
        }
Ejemplo n.º 5
0
        public void Should_Call_Teardown_On_Registered_Lifetime()
        {
            // Given
            var fixture  = new CakeHostBuilderFixture();
            var lifetime = fixture.RegisterDefaultTask()
                           .RegisterLifetimeSubstitute();

            // When
            fixture.Run();

            // Then
            lifetime.Received(1).Teardown(Arg.Any <ICakeContext>(), Arg.Any <ITeardownContext>());
        }
Ejemplo n.º 6
0
        public void Should_Call_Setup_On_Registered_Task_Lifetime()
        {
            // Given
            var fixture  = new CakeHostBuilderFixture();
            var lifetime = fixture.RegisterDefaultTask()
                           .RegisterTaskLifetimeSubstitute();

            // When
            fixture.Run();

            // Then
            lifetime.Received(1).Setup(Arg.Any <ICakeContext>(), Arg.Any <ITaskSetupContext>());
        }
Ejemplo n.º 7
0
        public void Should_Execute_OnError_Method_If_RunAsync_Failed()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterTask <OnErrorRunAsyncFailedTask>();
            fixture.Options.Target = "On-Error-RunAsync-Failed";

            // When
            fixture.Run();

            // Then
            fixture.Log.Received(1).Error("An error has occurred. {0}", "On test exception");
        }
Ejemplo n.º 8
0
        public void Should_Abort_Build_If_Task_That_Is_Not_ContinueOnError_Throws()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterTask <NoContinueOnErrorTask>();
            fixture.Options.Target = "No-Continue-On-Error";

            // When
            var result = fixture.Run();

            // Then
            Assert.NotEqual(0, result);
        }
Ejemplo n.º 9
0
        public void Should_Not_Execute_OnError_Method_If_Run_Completed()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterTask <OnErrorRunCompletedTask>();
            fixture.Options.Target = "On-Error-Run-Completed";

            // When
            fixture.Run();

            // Then
            fixture.Log.DidNotReceive().Error("OnErrorRunCompletedTask Exception");
        }
Ejemplo n.º 10
0
            public void Should_Replace_Default_Registrations()
            {
                // Given
                var fixture = new CakeHostBuilderFixture();
                var host    = Substitute.For <ICakeHost>();

                fixture.Builder.ConfigureServices(services => services.RegisterInstance(host).As <ICakeHost>());

                // When
                var result = fixture.Build();

                // Then
                Assert.Same(host, result);
            }
Ejemplo n.º 11
0
        public void Should_Set_Log_Verbosity_From_Options()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterDefaultTask();
            fixture.Options.Verbosity = Verbosity.Diagnostic;

            // When
            fixture.Run();

            // Then
            Assert.Equal(Verbosity.Diagnostic, fixture.Log.Verbosity);
        }
Ejemplo n.º 12
0
        public void Should_Set_Working_Directory_From_Options()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterDefaultTask();
            fixture.Options.WorkingDirectory = "./Temp";

            // When
            fixture.Run();

            // Then
            Assert.Equal("/Working/Temp", fixture.Environment.WorkingDirectory.FullPath);
        }
Ejemplo n.º 13
0
        public void Should_Execute_Tasks()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterDefaultTask();
            fixture.UseExecutionStrategySubstitute();

            // When
            fixture.Run();

            // Then
            fixture.Strategy.Received(1).Execute(Arg.Is <CakeTask>(t => t.Name == "DummyTask"), Arg.Any <ICakeContext>());
        }
Ejemplo n.º 14
0
        public void Should_Install_Tools()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.Builder.ConfigureServices(s => s.UseTool(new Uri("foo:?package=Bar")));
            fixture.RegisterDefaultTask();

            // When
            fixture.Run();

            // Then
            fixture.Installer.Received(1).Install(Arg.Is <PackageReference>(
                                                      p => p.OriginalString == "foo:?package=Bar"));
        }
Ejemplo n.º 15
0
        public void Should_Use_Working_Directory_From_Service_Configuration_If_Set()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterDefaultTask();
            fixture.FileSystem.CreateDirectory("/Working/Foo");
            fixture.Builder.ConfigureServices(s => s.UseWorkingDirectory("./Foo"));

            // When
            fixture.Run();

            // Then
            Assert.Equal("/Working/Foo", fixture.Environment.WorkingDirectory.FullPath);
        }
Ejemplo n.º 16
0
        public void Should_Not_Call_Teardown_On_Registered_Task_Lifetime_If_Not_Overridden()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterDefaultTask();
            fixture.RegisterTaskLifetimeSubstitute(new FakeTaskLifetime.WithoutOverrides());
            fixture.UseExecutionStrategySubstitute();

            // When
            fixture.Run();

            // Then
            fixture.Strategy.Received(0).PerformTaskTeardown(
                Arg.Any <Action <ITaskTeardownContext> >(),
                Arg.Any <ITaskTeardownContext>());
        }
Ejemplo n.º 17
0
        public void Should_Throw_If_Dependency_Is_Not_A_Valid_Task()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterTask <InvalidDependencyTask>();
            fixture.UseExecutionStrategySubstitute();
            fixture.Options.Target = "InvalidDependencyTask";

            // When
            var result = fixture.Run();

            // Then
            Assert.Equal(1, result);
            fixture.Log.Received(1).Write(
                Verbosity.Quiet, LogLevel.Error,
                "Error: {0}", "The dependency DateTime does not implement IFrostingTask.");
        }
Ejemplo n.º 18
0
        public void Should_Execute_Finally_Method_After_All_Methods()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterTask <FinallyTask>();
            fixture.Options.Target = "Finally";

            // When
            fixture.Run();

            // Then
            Received.InOrder(() =>
            {
                fixture.Log.Information("Run method called");
                fixture.Log.Information("OnError method called");
                fixture.Log.Information("Finally method called");
            });
        }
Ejemplo n.º 19
0
        public void Should_Execute_Tasks_In_Correct_Order()
        {
            // Given
            var fixture = new CakeHostBuilderFixture();

            fixture.RegisterTask <BuildTask>();
            fixture.RegisterTask <CleanTask>();
            fixture.RegisterTask <UnitTestsTask>();
            fixture.UseExecutionStrategySubstitute();
            fixture.Options.Target = "Run-Unit-Tests";

            // When
            fixture.Run();

            // Then
            Received.InOrder(() =>
            {
                fixture.Strategy.Execute(Arg.Is <CakeTask>(t => t.Name == "Clean"), Arg.Any <ICakeContext>());
                fixture.Strategy.Execute(Arg.Is <CakeTask>(t => t.Name == "Build"), Arg.Any <ICakeContext>());
                fixture.Strategy.Execute(Arg.Is <CakeTask>(t => t.Name == "Run-Unit-Tests"), Arg.Any <ICakeContext>());
            });
        }
 public static CakeHostBuilderFixture RegisterTask <T>(this CakeHostBuilderFixture fixture)
     where T : IFrostingTask
 {
     fixture.Builder.ConfigureServices(services => services.RegisterType <T>().As <IFrostingTask>());
     return(fixture);
 }
 public static void UseExecutionStrategySubstitute(this CakeHostBuilderFixture fixture)
 {
     fixture.Strategy = Substitute.For <IExecutionStrategy>();
 }
 public static CakeHostBuilderFixture RegisterDefaultTask(this CakeHostBuilderFixture fixture)
 {
     fixture.RegisterTask <DummyTask>();
     fixture.Options.Target = typeof(DummyTask).Name;
     return(fixture);
 }