From 422b344be81f2e9573e0613ef0e9291910dfd508 Mon Sep 17 00:00:00 2001 From: Matthias Koch Date: Fri, 15 Dec 2023 23:06:46 +0100 Subject: [PATCH] fix(execution): exclusion of invoked targets from skipping --- source/Nuke.Build.Tests/BuildExecutorTest.cs | 25 ++++++++++++++++++-- source/Nuke.Build/Execution/BuildExecutor.cs | 2 +- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/source/Nuke.Build.Tests/BuildExecutorTest.cs b/source/Nuke.Build.Tests/BuildExecutorTest.cs index 62f4fcf08..d7c89899d 100644 --- a/source/Nuke.Build.Tests/BuildExecutorTest.cs +++ b/source/Nuke.Build.Tests/BuildExecutorTest.cs @@ -47,8 +47,8 @@ public void TestParameterSkipped_AllWithInvoked() { C.Invoked = true; ExecuteBuild(skippedTargets: new ExecutableTarget[0]); - AssertSucceeded(C); - AssertSkipped(A, B); + AssertSucceeded(); + AssertSkipped(A, B, C); } [Fact] @@ -108,6 +108,27 @@ public void TestStaticCondition_DependencyBehavior_Skip() B.OnlyWhen.Should().Be("false"); } + [Fact] + public void TestStaticCondition_Invoked_DependencyBehavior_Skip() + { + C.StaticConditions.Add(("() => false", () => false)); + C.DependencyBehavior = DependencyBehavior.Skip; + C.Invoked = true; + ExecuteBuild(); + AssertSkipped(A, B, C); + } + + [Fact] + public void TestStaticCondition_Invoked_DependencyBehavior_Execute() + { + C.StaticConditions.Add(("() => false", () => false)); + C.DependencyBehavior = DependencyBehavior.Execute; + C.Invoked = true; + ExecuteBuild(); + AssertSkipped(C); + AssertSucceeded(A, B); + } + [Fact] public void TestStaticCondition_Multiple() { diff --git a/source/Nuke.Build/Execution/BuildExecutor.cs b/source/Nuke.Build/Execution/BuildExecutor.cs index 5d6b50e44..11892eb48 100644 --- a/source/Nuke.Build/Execution/BuildExecutor.cs +++ b/source/Nuke.Build/Execution/BuildExecutor.cs @@ -180,7 +180,7 @@ string Format(string condition) private static void MarkTargetSkipped(INukeBuild build, ExecutableTarget target, string reason = null) { - if (target.Invoked || target.Status != ExecutionStatus.Scheduled) + if (target.Status != ExecutionStatus.Scheduled) return; target.Status = ExecutionStatus.Skipped;