Skip to content

Commit b55239f

Browse files
Merge pull request cake-build#4139 from EdLichtman/develop
cake-buildGH-4128: Fix Inconsistent determination of positional Argument when using context.Arguments versus context.Argument
2 parents e2ccd15 + 8d8d963 commit b55239f

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

src/Cake.Common/ArgumentAliases.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public static T Argument<T>(this ICakeContext context, string name)
7878
throw new ArgumentNullException(nameof(context));
7979
}
8080

81-
var value = context.Arguments.GetArguments(name).FirstOrDefault();
81+
var value = context.Arguments.GetArguments(name).LastOrDefault();
8282
if (value == null)
8383
{
8484
const string format = "Argument '{0}' was not set.";
@@ -248,7 +248,7 @@ public static T Argument<T>(this ICakeContext context, string name, T defaultVal
248248
throw new ArgumentNullException(nameof(context));
249249
}
250250

251-
var value = context.Arguments.GetArguments(name)?.FirstOrDefault();
251+
var value = context.Arguments.GetArguments(name)?.LastOrDefault();
252252
return value == null
253253
? defaultValue
254254
: Convert<T>(value);

tests/integration/Cake.Common/ArgumentAliases.cake

+20-8
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,18 @@ Task("Cake.Common.ArgumentAliases.Argument.WithDefaultValue")
4242
Assert.Equal("foo", arg);
4343
});
4444

45-
Task("Cake.Common.ArgumentAliases.Argument.MultipleArguments")
45+
Task("Cake.Common.ArgumentAliases.Argument.MultipleArguments.GetsLastValue")
46+
.Does(() =>
47+
{
48+
// Given, When
49+
var arg = Argument<string>("multipleargs");
50+
51+
// Then
52+
Assert.Equal("b", arg);
53+
});
54+
55+
56+
Task("Cake.Common.ArgumentAliases.Arguments.MultipleArguments")
4657
.Does(() =>
4758
{
4859

@@ -53,7 +64,7 @@ Task("Cake.Common.ArgumentAliases.Argument.MultipleArguments")
5364
Assert.Equal(new[] { "a", "b" }, arg);
5465
});
5566

56-
Task("Cake.Common.ArgumentAliases.Argument.MultipleArguments.WithSingleDefaultValue")
67+
Task("Cake.Common.ArgumentAliases.Arguments.MultipleArguments.WithSingleDefaultValue")
5768
.Does(() =>
5869
{
5970
// Given
@@ -66,7 +77,7 @@ Task("Cake.Common.ArgumentAliases.Argument.MultipleArguments.WithSingleDefaultVa
6677
Assert.Equal(expect, arg);
6778
});
6879

69-
Task("Cake.Common.ArgumentAliases.Argument.MultipleArguments.WithMultipleDefaultValue")
80+
Task("Cake.Common.ArgumentAliases.Arguments.MultipleArguments.WithMultipleDefaultValue")
7081
.Does(() =>
7182
{
7283
// Given
@@ -79,7 +90,7 @@ Task("Cake.Common.ArgumentAliases.Argument.MultipleArguments.WithMultipleDefault
7990
Assert.Equal(expect, arg);
8091
});
8192

82-
Task("Cake.Common.ArgumentAliases.Argument.MultipleArguments.WithLazyDefaultValue")
93+
Task("Cake.Common.ArgumentAliases.Arguments.MultipleArguments.WithLazyDefaultValue")
8394
.Does(() =>
8495
{
8596
// Given
@@ -145,10 +156,11 @@ Task("Cake.Common.ArgumentAliases")
145156
.IsDependentOn("Cake.Common.ArgumentAliases.HasArgument.ThatDoNotExist")
146157
.IsDependentOn("Cake.Common.ArgumentAliases.Argument")
147158
.IsDependentOn("Cake.Common.ArgumentAliases.Argument.WithDefaultValue")
148-
.IsDependentOn("Cake.Common.ArgumentAliases.Argument.MultipleArguments")
149-
.IsDependentOn("Cake.Common.ArgumentAliases.Argument.MultipleArguments.WithSingleDefaultValue")
150-
.IsDependentOn("Cake.Common.ArgumentAliases.Argument.MultipleArguments.WithMultipleDefaultValue")
151-
.IsDependentOn("Cake.Common.ArgumentAliases.Argument.MultipleArguments.WithLazyDefaultValue")
159+
.IsDependentOn("Cake.Common.ArgumentAliases.Argument.MultipleArguments.GetsLastValue")
160+
.IsDependentOn("Cake.Common.ArgumentAliases.Arguments.MultipleArguments")
161+
.IsDependentOn("Cake.Common.ArgumentAliases.Arguments.MultipleArguments.WithSingleDefaultValue")
162+
.IsDependentOn("Cake.Common.ArgumentAliases.Arguments.MultipleArguments.WithMultipleDefaultValue")
163+
.IsDependentOn("Cake.Common.ArgumentAliases.Arguments.MultipleArguments.WithLazyDefaultValue")
152164
.IsDependentOn("Cake.Common.ArgumentAliases.Argument.DirectoryPathArgument")
153165
.IsDependentOn("Cake.Common.ArgumentAliases.Argument.FilePathArgument")
154166
.IsDependentOn("Cake.Common.ArgumentAliases.Argument.DotNetVerbosityArgument")

0 commit comments

Comments
 (0)