Skip to content

Commit 6666b33

Browse files
committed
fix #792
1 parent ce15a91 commit 6666b33

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

src/System.CommandLine.Tests/ParserTests.MultipleArguments.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,35 @@ public void When_multiple_arguments_are_present_then_their_order_relative_to_sib
119119
.Should()
120120
.BeTrue();
121121
}
122+
123+
[Fact]
124+
public void Multiple_arguments_of_unspecified_type_are_parsed_correctly()
125+
{
126+
var root = new RootCommand
127+
{
128+
new Argument("source")
129+
{
130+
Arity = ArgumentArity.ExactlyOne
131+
},
132+
new Argument("destination")
133+
{
134+
Arity = ArgumentArity.ExactlyOne
135+
}
136+
};
137+
138+
var result = root.Parse("src.txt", "dest.txt");
139+
140+
result.RootCommandResult
141+
.GetArgumentValueOrDefault("source")
142+
.Should()
143+
.Be("src.txt");
144+
145+
result.RootCommandResult
146+
.GetArgumentValueOrDefault("destination")
147+
.Should()
148+
.Be("dest.txt");
149+
}
150+
122151
}
123152
}
124153
}

src/System.CommandLine/Parsing/ArgumentResult.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ internal virtual ArgumentConversionResult Convert(
8080
}
8181
else
8282
{
83-
return ArgumentConversionResult.Failure(argument, ErrorMessage ?? $"Invalid: {parentResult.Token()} {string.Join(" ", parentResult.Tokens.Select(t => t.Value))}");
83+
return ArgumentConversionResult.Failure(argument, ErrorMessage ?? $"Invalid: {parentResult.Token()} {string.Join(" ", Tokens.Select(t => t.Value))}");
8484
}
8585
}
8686

@@ -90,10 +90,14 @@ internal virtual ArgumentConversionResult Convert(
9090
return ArgumentConversionResult.Success(argument, null);
9191

9292
case 1:
93-
return ArgumentConversionResult.Success(argument, parentResult.Tokens.Select(t => t.Value).SingleOrDefault());
93+
return ArgumentConversionResult.Success(
94+
argument,
95+
Tokens.Select(t => t.Value).SingleOrDefault());
9496

9597
default:
96-
return ArgumentConversionResult.Success(argument, parentResult.Tokens.Select(t => t.Value).ToArray());
98+
return ArgumentConversionResult.Success(
99+
argument,
100+
Tokens.Select(t => t.Value).ToArray());
97101
}
98102

99103
bool ShouldCheckArity()

0 commit comments

Comments
 (0)