public static IFrostingTaskLifetime RegisterTaskLifetimeSubstitute(this CakeHostBuilderFixture fixture) { var lifetime = Substitute.For <IFrostingTaskLifetime>(); fixture.Builder.ConfigureServices(s => s.RegisterInstance(lifetime).As <IFrostingTaskLifetime>()); return(lifetime); }
public void Should_Return_Zero_On_Success() { // Given var fixture = new CakeHostBuilderFixture(); fixture.RegisterDefaultTask(); // When var result = fixture.Run(); // Then Assert.Equal(0, result); }
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); }
public void Should_Register_Tasks_With_Engine() { // Given var fixture = new CakeHostBuilderFixture(); fixture.RegisterDefaultTask(); // When fixture.Run(); // Then Assert.True(fixture.Engine.IsTaskRegistered("DummyTask")); }
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>()); }
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>()); }
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"); }
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); }
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"); }
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); }
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); }
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); }
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>()); }
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")); }
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); }
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>()); }
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."); }
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"); }); }
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); }