Skip to content
This repository was archived by the owner on May 15, 2025. It is now read-only.

Commit 0231425

Browse files
committed
feat(execution): consider string members to violate requirements when empty or whitespace
1 parent 8293a9b commit 0231425

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

source/Nuke.Build/Execution/DelegateRequirementService.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,21 @@ public static void ValidateRequirements(INukeBuild build, IReadOnlyCollection<Ex
2525
if (requirement is Expression<Func<bool>> boolExpression)
2626
// TODO: same as HasSkippingCondition.GetSkipReason
2727
Assert.True(boolExpression.Compile().Invoke(), $"Target '{target.Name}' requires '{requirement.Body}'");
28-
else if (IsMemberNull(requirement.GetMemberInfo(), build, target))
29-
Assert.Fail($"Target '{target.Name}' requires member '{GetMemberName(requirement.GetMemberInfo())}' to be not null");
28+
else if (IsMemberNullOrEmpty(requirement.GetMemberInfo(), build, target))
29+
Assert.Fail($"Target '{target.Name}' requires member '{GetMemberName(requirement.GetMemberInfo())}' to be not null or empty");
3030
}
3131

3232
var requiredMembers = ValueInjectionUtility.GetInjectionMembers(build.GetType())
3333
.Select(x => x.Member)
3434
.Where(x => x.HasCustomAttribute<RequiredAttribute>());
3535
foreach (var member in requiredMembers)
3636
{
37-
if (IsMemberNull(member, build))
38-
Assert.Fail($"Member '{GetMemberName(member)}' is required to be not null");
37+
if (IsMemberNullOrEmpty(member, build))
38+
Assert.Fail($"Member '{GetMemberName(member)}' is required to be not null or empty");
3939
}
4040
}
4141

42-
private static bool IsMemberNull(MemberInfo member, INukeBuild build, ExecutableTarget target = null)
42+
private static bool IsMemberNullOrEmpty(MemberInfo member, INukeBuild build, ExecutableTarget target = null)
4343
{
4444
member = member.DeclaringType != build.GetType()
4545
? build.GetType().GetMember(member.Name).SingleOrDefault() ?? member
@@ -52,7 +52,9 @@ private static bool IsMemberNull(MemberInfo member, INukeBuild build, Executable
5252
if (build.Host is Terminal)
5353
TryInjectValueInteractive(member, build);
5454

55-
return member.GetValue(build) == null;
55+
return member.GetMemberType() != typeof(string)
56+
? member.GetValue(build) == null
57+
: member.GetValue<string>(build).IsNullOrWhiteSpace();
5658
}
5759

5860
private static void TryInjectValueInteractive(MemberInfo member, INukeBuild build)

0 commit comments

Comments
 (0)