diff --git a/src/CommandLine/Core/Tokenizer.cs b/src/CommandLine/Core/Tokenizer.cs index fe94fc61..675fbb4d 100644 --- a/src/CommandLine/Core/Tokenizer.cs +++ b/src/CommandLine/Core/Tokenizer.cs @@ -28,7 +28,7 @@ public static Result, Error> Tokenize( Action onError = errors.Add; var tokens = (from arg in arguments - from token in !arg.StartsWith("-", StringComparison.Ordinal) + from token in (!arg.StartsWith("-", StringComparison.Ordinal) || arg.Contains(" ")) ? new[] { Token.Value(arg) } : arg.StartsWith("--", StringComparison.Ordinal) ? TokenizeLongName(arg, onError) diff --git a/tests/CommandLine.Tests/Unit/ParserTests.cs b/tests/CommandLine.Tests/Unit/ParserTests.cs index b079ce0f..8b30fd5a 100644 --- a/tests/CommandLine.Tests/Unit/ParserTests.cs +++ b/tests/CommandLine.Tests/Unit/ParserTests.cs @@ -163,6 +163,27 @@ public void Parse_options_with_double_dash() // Teardown } + [Fact] + public void Parse_options_with_whitespace_and_double_dash() + { + // Fixture setup + var expectedOptions = new Simple_Options + { + StringValue = "--astring value", + IntSequence = Enumerable.Empty(), + }; + var sut = new Parser(); + + // Exercize system + var result = + sut.ParseArguments( + new[] { "--stringvalue", "--astring value" }); + + // Verify outcome + ((Parsed)result).Value.Should().BeEquivalentTo(expectedOptions); + // Teardown + } + [Fact] public void Parse_options_with_repeated_value_in_values_sequence_and_option() {