diff --git a/src/Spectre.Console.Cli.Tests/CommandOptionAttributeTests.Rendering.cs b/src/Spectre.Console.Cli.Tests/CommandOptionAttributeTests.Rendering.cs index 29e459e..58711c5 100644 --- a/src/Spectre.Console.Cli.Tests/CommandOptionAttributeTests.Rendering.cs +++ b/src/Spectre.Console.Cli.Tests/CommandOptionAttributeTests.Rendering.cs @@ -87,27 +87,6 @@ public Task Should_Return_Correct_Text() } } - public sealed class InvalidCharacterInOptionName - { - public sealed class Settings : CommandSettings - { - [CommandOption("--f$oo")] - public string Foo { get; set; } = null!; - } - - [Fact] - [Expectation("InvalidCharacterInOptionName")] - public Task Should_Return_Correct_Text() - { - // Given, When - var result = Fixture.Run(); - - // Then - result.Exception.Message.ShouldBe("Encountered invalid character '$' in option name."); - return Verifier.Verify(result.Output); - } - } - public sealed class LongOptionMustHaveMoreThanOneCharacter { public sealed class Settings : CommandSettings @@ -171,27 +150,6 @@ public Task Should_Return_Correct_Text() } } - public sealed class InvalidCharacterInValueName - { - public sealed class Settings : CommandSettings - { - [CommandOption("-f|--foo ")] - public string Foo { get; set; } = null!; - } - - [Fact] - [Expectation("InvalidCharacterInValueName")] - public Task Should_Return_Correct_Text() - { - // Given, When - var result = Fixture.Run(); - - // Then - result.Exception.Message.ShouldBe("Encountered invalid character '$' in value name."); - return Verifier.Verify(result.Output); - } - } - public sealed class MissingLongAndShortName { public sealed class Settings : CommandSettings diff --git a/src/Spectre.Console.Cli.Tests/CommandOptionAttributeTests.cs b/src/Spectre.Console.Cli.Tests/CommandOptionAttributeTests.cs index b3ee247..8825f49 100644 --- a/src/Spectre.Console.Cli.Tests/CommandOptionAttributeTests.cs +++ b/src/Spectre.Console.Cli.Tests/CommandOptionAttributeTests.cs @@ -106,23 +106,6 @@ public void Should_Throw_If_Option_Have_No_Name(string template) e.Message.ShouldBe("Options without name are not allowed.")); } - [Theory] - [InlineData("--foo|-foo[b", '[')] - [InlineData("--foo|-f€b", '€')] - [InlineData("--foo|-foo@b", '@')] - public void Should_Throw_If_Option_Contains_Invalid_Name(string template, char invalid) - { - // Given, When - var result = Record.Exception(() => new CommandOptionAttribute(template)); - - // Then - result.ShouldBeOfType().And(e => - { - e.Message.ShouldBe($"Encountered invalid character '{invalid}' in option name."); - e.Template.ShouldBe(template); - }); - } - [Theory] [InlineData("--foo ", "HELLO-WORLD")] [InlineData("--foo ", "HELLO_WORLD")] diff --git a/src/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInOptionName.Output.verified.txt b/src/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInOptionName.Output.verified.txt deleted file mode 100644 index 87989bd..0000000 --- a/src/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInOptionName.Output.verified.txt +++ /dev/null @@ -1,5 +0,0 @@ -Error: An error occured when parsing template. - Encountered invalid character '$' in option name. - - --f$oo - ^ Invalid character \ No newline at end of file diff --git a/src/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInValueName.Output.verified.txt b/src/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInValueName.Output.verified.txt deleted file mode 100644 index 6d40834..0000000 --- a/src/Spectre.Console.Cli.Tests/Expectations/Arguments/InvalidCharacterInValueName.Output.verified.txt +++ /dev/null @@ -1,5 +0,0 @@ -Error: An error occured when parsing template. - Encountered invalid character '$' in value name. - - -f|--foo - ^ Invalid character \ No newline at end of file diff --git a/src/Spectre.Console.Cli/CommandTemplateException.cs b/src/Spectre.Console.Cli/CommandTemplateException.cs index d862f72..d6e8448 100644 --- a/src/Spectre.Console.Cli/CommandTemplateException.cs +++ b/src/Spectre.Console.Cli/CommandTemplateException.cs @@ -77,22 +77,6 @@ internal static CommandTemplateException OptionNamesCannotStartWithDigit(string "Invalid option name."); } - internal static CommandTemplateException InvalidCharacterInOptionName(string template, TemplateToken token, char character) - { - // Rewrite the token to point to the invalid character instead of the whole value. - var position = (token.TokenKind == TemplateToken.Kind.ShortName - ? token.Position + 1 - : token.Position + 2) + token.Value.OrdinalIndexOf(character); - - token = new TemplateToken( - token.TokenKind, position, - token.Value, character.ToString(CultureInfo.InvariantCulture)); - - return CommandLineTemplateExceptionFactory.Create(template, token, - $"Encountered invalid character '{character}' in option name.", - "Invalid character."); - } - internal static CommandTemplateException LongOptionMustHaveMoreThanOneCharacter(string template, TemplateToken token) { // Rewrite the token to point to the option name instead of the whole option. @@ -127,19 +111,6 @@ internal static CommandTemplateException MultipleOptionValuesAreNotSupported(str "Too many option values."); } - internal static CommandTemplateException InvalidCharacterInValueName(string template, TemplateToken token, char character) - { - // Rewrite the token to point to the invalid character instead of the whole value. - token = new TemplateToken( - token.TokenKind, - token.Position + 1 + token.Value.OrdinalIndexOf(character), - token.Value, character.ToString(CultureInfo.InvariantCulture)); - - return CommandLineTemplateExceptionFactory.Create(template, token, - $"Encountered invalid character '{character}' in value name.", - "Invalid character."); - } - internal static CommandTemplateException MissingLongAndShortName(string template, TemplateToken? token) { return CommandLineTemplateExceptionFactory.Create(template, token, diff --git a/src/Spectre.Console.Cli/Internal/Configuration/TemplateParser.cs b/src/Spectre.Console.Cli/Internal/Configuration/TemplateParser.cs index 2afc61a..0a7bfad 100644 --- a/src/Spectre.Console.Cli/Internal/Configuration/TemplateParser.cs +++ b/src/Spectre.Console.Cli/Internal/Configuration/TemplateParser.cs @@ -77,14 +77,6 @@ public static OptionResult ParseOptionTemplate(string template) { throw CommandTemplateException.OptionNamesCannotStartWithDigit(template, token); } - - foreach (var character in token.Value) - { - if (!char.IsLetterOrDigit(character) && character != '-' && character != '_' && character != '?') - { - throw CommandTemplateException.InvalidCharacterInOptionName(template, token, character); - } - } } if (token.TokenKind == TemplateToken.Kind.LongName) @@ -115,15 +107,6 @@ public static OptionResult ParseOptionTemplate(string template) throw CommandTemplateException.MultipleOptionValuesAreNotSupported(template, token); } - foreach (var character in token.Value) - { - if (!char.IsLetterOrDigit(character) && - character != '=' && character != '-' && character != '_' && character != '|') - { - throw CommandTemplateException.InvalidCharacterInValueName(template, token, character); - } - } - result.Value = token.Value.ToUpperInvariant(); result.ValueIsOptional = token.TokenKind == TemplateToken.Kind.OptionalValue; }