diff --git a/CHANGELOG.md b/CHANGELOG.md
index 11b713efc..cbd4ff4c8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [vNext]
+## [8.1.2] / 2024-10-13
+- Fixed exclusion of skipped target from lookup for skippable dependencies
+- Fixed resolution of empty environment variables to false
+- Fixed parallel execution to prefer logger from settings
+
## [8.1.1] / 2024-10-05
- Fixed nested solution folders in `StronglyTypedSolutionGenerator`
- Fixed whitespace arguments in `ArgumentStringHandler`
@@ -1157,7 +1162,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Added CLT tasks for Git
- Fixed background color in console output
-[vNext]: https://github.com/nuke-build/nuke/compare/8.1.1...HEAD
+[vNext]: https://github.com/nuke-build/nuke/compare/8.1.2...HEAD
+[8.1.2]: https://github.com/nuke-build/nuke/compare/8.1.1...8.1.2
[8.1.1]: https://github.com/nuke-build/nuke/compare/8.1.0...8.1.1
[8.1.0]: https://github.com/nuke-build/nuke/compare/8.0.0...8.1.0
[8.0.0]: https://github.com/nuke-build/nuke/compare/7.0.6...8.0.0
diff --git a/Directory.Packages.props b/Directory.Packages.props
index e571d0ad7..2fa67976d 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -5,23 +5,23 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -29,8 +29,8 @@
-
-
+
+
diff --git a/source/Nuke.Build.Tests/BuildExecutorTest.cs b/source/Nuke.Build.Tests/BuildExecutorTest.cs
index 8c156e26c..035e380c6 100644
--- a/source/Nuke.Build.Tests/BuildExecutorTest.cs
+++ b/source/Nuke.Build.Tests/BuildExecutorTest.cs
@@ -105,6 +105,19 @@ public void TestStaticCondition_DependencyBehavior_Skip()
B.OnlyWhen.Should().Be("false");
}
+ [Fact]
+ public void TestStaticCondition_DependencyBehavior_Skip_Invoked()
+ {
+ C.Invoked = true;
+ C.StaticConditions.Add(("() => false", () => false));
+ B.DependencyBehavior = DependencyBehavior.Skip;
+ ExecuteBuild();
+ AssertSkipped(A, B, C);
+ A.Skipped.Should().Be("because of B");
+ B.Skipped.Should().Be("because of C");
+ C.OnlyWhen.Should().Be("false");
+ }
+
[Fact]
public void TestStaticCondition_Multiple()
{
diff --git a/source/Nuke.Build.Tests/ParameterServiceTest.cs b/source/Nuke.Build.Tests/ParameterServiceTest.cs
index 546db9700..4106ea9ee 100644
--- a/source/Nuke.Build.Tests/ParameterServiceTest.cs
+++ b/source/Nuke.Build.Tests/ParameterServiceTest.cs
@@ -41,8 +41,12 @@ public void TestNotSupplied(Type destinationType, object expectedValue)
[Theory]
[InlineData("arg1", typeof(string), "value1")]
[InlineData("arg2", typeof(string), "value3")]
+ [InlineData("arg3", typeof(string), "value4")]
+ [InlineData("switch1", typeof(bool), true)]
[InlineData("switch2", typeof(bool), true)]
[InlineData("switch3", typeof(bool), false)]
+ [InlineData("switch4", typeof(bool), false)]
+ [InlineData("switch5", typeof(bool), true)]
[InlineData("array1", typeof(string[]), new[] { "element1", "element2" })]
[InlineData("array2", typeof(string[]), new string[0])]
[InlineData("array3", typeof(string[]), null)]
@@ -60,8 +64,11 @@ public void TestEnvironmentVariables(string parameter, Type destinationType, obj
{
{ "arg1", "value2" },
{ "arg2", "value3" },
+ { "nuke_arg_3", "value4" },
{ "switch2", "true" },
{ "switch3", "false" },
+ { "switch4", "" },
+ { "nuke_switch_5", "true" },
{ "array1", "element1+element2" },
{ "array2", "" },
});
diff --git a/source/Nuke.Build/Execution/BuildExecutor.cs b/source/Nuke.Build/Execution/BuildExecutor.cs
index 56f6b0fda..16fe5ba2a 100644
--- a/source/Nuke.Build/Execution/BuildExecutor.cs
+++ b/source/Nuke.Build/Execution/BuildExecutor.cs
@@ -195,12 +195,12 @@ private static void MarkTargetSkipped(INukeBuild build, ExecutableTarget target,
bool HasOtherDependencies(ExecutableTarget dependentTarget)
=> build.ExecutionPlan
- .Where(x => x.Status == ExecutionStatus.Scheduled)
+ .Where(x => x != target && x.Status == ExecutionStatus.Scheduled)
.Any(x => x.ExecutionDependencies.Contains(dependentTarget) || x.Triggers.Contains(dependentTarget));
- var skippableTargets = target.ExecutionDependencies.Concat(target.Triggers)
+ var skippableDependencies = target.ExecutionDependencies.Concat(target.Triggers)
.Where(x => !HasOtherDependencies(x)).ToList();
- skippableTargets.ForEach(x => MarkTargetSkipped(build, x, $"because of {target.Name}"));
+ skippableDependencies.ForEach(x => MarkTargetSkipped(build, x, $"because of {target.Name}"));
}
private static void AppendToBuildAttemptFile(string value)
diff --git a/source/Nuke.Build/Execution/ParameterService.cs b/source/Nuke.Build/Execution/ParameterService.cs
index f293f6a6e..271578075 100644
--- a/source/Nuke.Build/Execution/ParameterService.cs
+++ b/source/Nuke.Build/Execution/ParameterService.cs
@@ -214,7 +214,7 @@ static string GetTrimmedName(string name)
try
{
- return Convert(value, destinationType, separator);
+ return Convert(value, destinationType, separator, booleanDefault: false);
}
catch (Exception ex)
{
diff --git a/source/Nuke.Tooling/Configure.cs b/source/Nuke.Tooling/Configure.cs
index 20a11bf51..7c4a5ea69 100644
--- a/source/Nuke.Tooling/Configure.cs
+++ b/source/Nuke.Tooling/Configure.cs
@@ -29,7 +29,7 @@ public static T InvokeSafe([CanBeNull] this Configure configurator, T obj)
public static IReadOnlyCollection<(TSettings Settings, IReadOnlyCollection