From 415ddee83757b4111d473f7ffa9b9cc7136d4f07 Mon Sep 17 00:00:00 2001 From: Jon Sequeira Date: Fri, 25 Feb 2022 15:51:27 -0800 Subject: [PATCH] add support ... or, uh, remove non-support ... for OnlyTake(0) --- src/System.CommandLine.Tests/ArgumentTests.cs | 23 +++++++++++++++++++ .../Parsing/ArgumentResult.cs | 5 ---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/System.CommandLine.Tests/ArgumentTests.cs b/src/System.CommandLine.Tests/ArgumentTests.cs index 4b7a88e2d2..24a7ca1b95 100644 --- a/src/System.CommandLine.Tests/ArgumentTests.cs +++ b/src/System.CommandLine.Tests/ArgumentTests.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.CommandLine.Parsing; +using System.CommandLine.Tests.Utility; using System.IO; using FluentAssertions; using System.Linq; @@ -692,6 +693,28 @@ public void OnlyTake_throws_when_called_twice() .Should() .Be("OnlyTake can only be called once."); } + + [Fact] + public void OnlyTake_can_pass_on_all_tokens() + { + var argument1 = new Argument(result => + { + result.OnlyTake(0); + return null; + }); + var argument2 = new Argument(); + var command = new RootCommand + { + argument1, + argument2 + }; + + var result = command.Parse("1 2 3"); + + result.GetValueForArgument(argument1).Should().BeEmpty(); + + result.GetValueForArgument(argument2).Should().BeEquivalentSequenceTo(1, 2, 3); + } } protected override Symbol CreateSymbol(string name) diff --git a/src/System.CommandLine/Parsing/ArgumentResult.cs b/src/System.CommandLine/Parsing/ArgumentResult.cs index 8d27abb563..27ed866953 100644 --- a/src/System.CommandLine/Parsing/ArgumentResult.cs +++ b/src/System.CommandLine/Parsing/ArgumentResult.cs @@ -64,11 +64,6 @@ public void OnlyTake(int numberOfTokens) throw new InvalidOperationException($"{nameof(OnlyTake)} can only be called once."); } - if (numberOfTokens == 0) - { - return; - } - var passedOnTokensCount = _tokens.Count - numberOfTokens; PassedOnTokens = new List(_tokens.GetRange(numberOfTokens, passedOnTokensCount));