From 42332ab80e8a3f71cfe6be1f188709de564faac6 Mon Sep 17 00:00:00 2001 From: Brahim Hadriche Date: Fri, 30 Sep 2022 13:15:04 -0400 Subject: [PATCH 1/5] Fix IsOptional method for arguments --- src/System.CommandLine/Help/HelpBuilder.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/System.CommandLine/Help/HelpBuilder.cs b/src/System.CommandLine/Help/HelpBuilder.cs index 4eb16a21ca..6b83e5019a 100644 --- a/src/System.CommandLine/Help/HelpBuilder.cs +++ b/src/System.CommandLine/Help/HelpBuilder.cs @@ -325,12 +325,8 @@ private string FormatArgumentUsage(IReadOnlyList arguments) { StringBuilderPool.Default.ReturnToPool(sb); } - - bool IsMultiParented(Argument a) => - a.FirstParent is not null && a.FirstParent.Next is not null; - + bool IsOptional(Argument argument) => - IsMultiParented(argument) || argument.Arity.MinimumNumberOfValues == 0; } From 5959570332e156b180bfad547bb4fb12ec69356d Mon Sep 17 00:00:00 2001 From: Brahim Hadriche Date: Tue, 4 Oct 2022 09:32:49 -0400 Subject: [PATCH 2/5] Add test --- .../Help/HelpBuilderTests.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs b/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs index 0ec484549f..ab2f264282 100644 --- a/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs +++ b/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs @@ -249,6 +249,34 @@ public void Usage_section_for_subcommand_shows_arguments_for_subcommand_and_pare _console.ToString().Should().Contain(expected); } + [Fact] + public void Usage_section_for_subcommand_shows_arguments_for_subcommand_and_parent_command_not_optional() + { + var arg = new Argument + { + Name = "shared-args", + Arity = ArgumentArity.OneOrMore + }; + + var inner = new Command("inner", "command help") + { + arg + }; + _ = new Command("outer", "command help") + { + inner, + arg + }; + + _helpBuilder.Write(inner, _console); + + var expected = + $"Usage:{NewLine}" + + $"{_indentation}outer ... inner ..."; + + _console.ToString().Should().Contain(expected); + } + [Fact] public void Usage_section_does_not_show_additional_arguments_when_TreatUnmatchedTokensAsErrors_is_not_specified() { From 0237cc8728a39b1ac787c8b645fa3f2d8cc2b18d Mon Sep 17 00:00:00 2001 From: Brahim Hadriche Date: Tue, 4 Oct 2022 10:40:51 -0400 Subject: [PATCH 3/5] Add shared arg test --- .../Help/HelpBuilderTests.cs | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs b/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs index ab2f264282..d1115e71f1 100644 --- a/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs +++ b/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs @@ -960,7 +960,38 @@ public void Command_arguments_with_default_values_that_are_enumerable_display_pi _console.ToString().Should().Contain(expected); } + [Fact] + public void Command_shared_arguments_with_one_or_more_arity_are_required() + { + var arg = new Argument + { + Name = "shared-args", + Arity = ArgumentArity.OneOrMore + }; + var inner = new Command("inner", "command help") + { + arg + }; + _ = new Command("outer", "command help") + { + inner, + arg + }; + _ = new Command("unused", "command help") + { + arg + }; + + _helpBuilder.Write(inner, _console); + + var expected = + $"Usage:{NewLine}" + + $"{_indentation}outer ... inner ..."; + + _console.ToString().Should().Contain(expected); + } + #endregion Arguments #region Options From 0e78e232e2bac3c172265d6a667c342e6c29a13a Mon Sep 17 00:00:00 2001 From: Brahim Hadriche Date: Tue, 4 Oct 2022 10:41:04 -0400 Subject: [PATCH 4/5] Revert "Add test" This reverts commit 5959570332e156b180bfad547bb4fb12ec69356d. --- .../Help/HelpBuilderTests.cs | 28 ------------------- 1 file changed, 28 deletions(-) diff --git a/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs b/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs index d1115e71f1..982564b638 100644 --- a/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs +++ b/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs @@ -249,34 +249,6 @@ public void Usage_section_for_subcommand_shows_arguments_for_subcommand_and_pare _console.ToString().Should().Contain(expected); } - [Fact] - public void Usage_section_for_subcommand_shows_arguments_for_subcommand_and_parent_command_not_optional() - { - var arg = new Argument - { - Name = "shared-args", - Arity = ArgumentArity.OneOrMore - }; - - var inner = new Command("inner", "command help") - { - arg - }; - _ = new Command("outer", "command help") - { - inner, - arg - }; - - _helpBuilder.Write(inner, _console); - - var expected = - $"Usage:{NewLine}" + - $"{_indentation}outer ... inner ..."; - - _console.ToString().Should().Contain(expected); - } - [Fact] public void Usage_section_does_not_show_additional_arguments_when_TreatUnmatchedTokensAsErrors_is_not_specified() { From b6aa499f7d0a677b668d714ee21838e55a7bac40 Mon Sep 17 00:00:00 2001 From: Jon Sequeira Date: Tue, 4 Oct 2022 08:27:08 -0700 Subject: [PATCH 5/5] Update src/System.CommandLine.Tests/Help/HelpBuilderTests.cs --- src/System.CommandLine.Tests/Help/HelpBuilderTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs b/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs index 982564b638..dd8914f09a 100644 --- a/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs +++ b/src/System.CommandLine.Tests/Help/HelpBuilderTests.cs @@ -933,7 +933,7 @@ public void Command_arguments_with_default_values_that_are_enumerable_display_pi } [Fact] - public void Command_shared_arguments_with_one_or_more_arity_are_required() + public void Command_shared_arguments_with_one_or_more_arity_are_displayed_as_being_required() { var arg = new Argument {