Redirect parser to localized validation messages
This commit is contained in:
parent
0353374f10
commit
9b77dc50f1
24 changed files with 881 additions and 9 deletions
73
test/dotnet.Tests/ParserTests/ValdidationMessageTests.cs
Normal file
73
test/dotnet.Tests/ParserTests/ValdidationMessageTests.cs
Normal file
|
@ -0,0 +1,73 @@
|
|||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using FluentAssertions;
|
||||
using Microsoft.DotNet.Cli.CommandLine;
|
||||
using Microsoft.DotNet.Tools.Test.Utilities;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
namespace Microsoft.DotNet.Tests.ParserTests
|
||||
{
|
||||
public class ValidationMessageTests
|
||||
{
|
||||
private readonly ITestOutputHelper output;
|
||||
|
||||
[Fact]
|
||||
public void ValidationMessagesFormatCorrectly()
|
||||
{
|
||||
// Since not all validation messages that we provided to the command-line parser are triggered by our
|
||||
// tests (and some may not be possible to trigger with our current usage), unit test that we can
|
||||
// obtain validation messages through the same interface as the command-line parser.
|
||||
//
|
||||
// In English configuration, we check that the messages are exactly what we expect and otherwise we at
|
||||
// lest ensure that we don't get a FormatException.
|
||||
|
||||
IValidationMessages m = new CommandLineValidationMessages();
|
||||
|
||||
m.CommandAcceptsOnlyOneArgument("xyz", 3)
|
||||
.Should().BeVisuallyEquivalentToIfNotLocalized(
|
||||
"Command 'xyz' only accepts a single argument but 3 were provided.");
|
||||
|
||||
m.CommandAcceptsOnlyOneSubcommand("zyx", "a;b;c")
|
||||
.Should().BeVisuallyEquivalentToIfNotLocalized(
|
||||
"Command 'zyx' only accepts a single subcommand but multiple were provided: a;b;c");
|
||||
|
||||
m.FileDoesNotExist("abc.def")
|
||||
.Should().BeVisuallyEquivalentToIfNotLocalized(
|
||||
"File does not exist: abc.def");
|
||||
|
||||
m.NoArgumentsAllowed("zzz")
|
||||
.Should().BeVisuallyEquivalentToIfNotLocalized(
|
||||
"Arguments not allowed for option: zzz");
|
||||
|
||||
m.OptionAcceptsOnlyOneArgument("qqq", 4)
|
||||
.Should().BeVisuallyEquivalentToIfNotLocalized(
|
||||
"Option 'qqq' only accepts a single argument but 4 were provided.");
|
||||
|
||||
m.RequiredArgumentMissingForCommand("www")
|
||||
.Should().BeVisuallyEquivalentToIfNotLocalized(
|
||||
"Required argument missing for command: www");
|
||||
|
||||
m.RequiredArgumentMissingForOption("rrr")
|
||||
.Should().BeVisuallyEquivalentToIfNotLocalized(
|
||||
"Required argument missing for option: rrr");
|
||||
|
||||
m.RequiredCommandWasNotProvided()
|
||||
.Should().BeVisuallyEquivalentToIfNotLocalized(
|
||||
"Required command was not provided.");
|
||||
|
||||
m.UnrecognizedArgument("apple", new[] { "banana", "orange" })
|
||||
.Should().BeVisuallyEquivalentToIfNotLocalized(
|
||||
"Argument 'apple' not recognized. Must be one of: \n\t'banana'\n\t\'orange'");
|
||||
|
||||
m.UnrecognizedCommandOrArgument("ppp")
|
||||
.Should().BeVisuallyEquivalentToIfNotLocalized(
|
||||
"Unrecognized command or argument 'ppp'");
|
||||
|
||||
m.UnrecognizedOption("apple", new[] { "banana", "orange" })
|
||||
.Should().BeVisuallyEquivalentToIfNotLocalized(
|
||||
"Option 'apple' not recognized. Must be one of: \n\t'banana'\n\t\'orange'");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue