Add profile support

Closes #231
This commit is contained in:
Patrik Svensson
2021-01-16 17:23:58 +01:00
committed by Patrik Svensson
parent 913a7b1e37
commit a23bec4082
230 changed files with 1241 additions and 1628 deletions

View File

@ -1,3 +1,5 @@
using Spectre.Console.Cli;
namespace Spectre.Console.Tests
{
public static class Constants
@ -5,15 +7,15 @@ namespace Spectre.Console.Tests
public static string[] VersionCommand { get; } =
new[]
{
Spectre.Console.Cli.Internal.Constants.Commands.Branch,
Spectre.Console.Cli.Internal.Constants.Commands.Version,
CliConstants.Commands.Branch,
CliConstants.Commands.Version,
};
public static string[] XmlDocCommand { get; } =
new[]
{
Spectre.Console.Cli.Internal.Constants.Commands.Branch,
Spectre.Console.Cli.Internal.Constants.Commands.XmlDoc,
CliConstants.Commands.Branch,
CliConstants.Commands.XmlDoc,
};
}
}

View File

@ -1,14 +1,11 @@
using System;
using System.Diagnostics.CodeAnalysis;
namespace Spectre.Console.Tests.Data
{
public static class TestExceptions
{
[SuppressMessage("Usage", "CA1801:Review unused parameters", Justification = "<Pending>")]
public static bool MethodThatThrows(int? number) => throw new InvalidOperationException("Throwing!");
[SuppressMessage("Usage", "CA1801:Review unused parameters", Justification = "<Pending>")]
public static bool GenericMethodThatThrows<T0, T1, TRet>(int? number) => throw new InvalidOperationException("Throwing!");
public static void ThrowWithInnerException()

View File

@ -1,4 +1,3 @@
using System.Diagnostics.CodeAnalysis;
using Spectre.Console.Cli;
namespace Spectre.Console.Tests.Data
@ -6,7 +5,6 @@ namespace Spectre.Console.Tests.Data
public class ArgumentVectorSettings : CommandSettings
{
[CommandArgument(0, "<Foos>")]
[SuppressMessage("Performance", "CA1819:Properties should not return arrays")]
public string[] Foo { get; set; }
}
}

View File

@ -1,4 +1,3 @@
using System.Diagnostics.CodeAnalysis;
using Spectre.Console.Cli;
namespace Spectre.Console.Tests.Data
@ -6,18 +5,15 @@ namespace Spectre.Console.Tests.Data
public class MultipleArgumentVectorSettings : CommandSettings
{
[CommandArgument(0, "<Foos>")]
[SuppressMessage("Performance", "CA1819:Properties should not return arrays")]
public string[] Foo { get; set; }
[CommandArgument(0, "<Bars>")]
[SuppressMessage("Performance", "CA1819:Properties should not return arrays")]
public string[] Bar { get; set; }
}
public class MultipleArgumentVectorSpecifiedFirstSettings : CommandSettings
{
[CommandArgument(0, "<Foos>")]
[SuppressMessage("Performance", "CA1819:Properties should not return arrays")]
public string[] Foo { get; set; }
[CommandArgument(1, "<Bar>")]

View File

@ -1,4 +1,3 @@
using System.Diagnostics.CodeAnalysis;
using Spectre.Console.Cli;
namespace Spectre.Console.Tests.Data
@ -6,11 +5,9 @@ namespace Spectre.Console.Tests.Data
public class OptionVectorSettings : CommandSettings
{
[CommandOption("--foo")]
[SuppressMessage("Performance", "CA1819:Properties should not return arrays")]
public string[] Foo { get; set; }
[CommandOption("--bar")]
[SuppressMessage("Performance", "CA1819:Properties should not return arrays")]
public int[] Bar { get; set; }
}
}

View File

@ -1,18 +1,3 @@
<ProjectConfiguration>
<Settings>
<IgnoredTests>
<NamedTestSelector>
<TestName>Spectre.Console.Tests.Unit.Cli.CommandAppTests+Parsing+UnknownCommand.Should_Return_Correct_Text_With_Suggestion_And_No_Arguments_When_Root_Command_Is_Unknown_And_Distance_Is_Small</TestName>
</NamedTestSelector>
<NamedTestSelector>
<TestName>Spectre.Console.Tests.Unit.Cli.CommandAppTests+Parsing+UnknownCommand.Should_Return_Correct_Text_With_Suggestion_When_Command_Followed_By_Argument_Is_Unknown_And_Distance_Is_Small</TestName>
</NamedTestSelector>
<NamedTestSelector>
<TestName>Spectre.Console.Tests.Unit.Cli.CommandAppTests+Parsing+UnknownCommand.Should_Return_Correct_Text_With_Suggestion_When_Root_Command_After_Argument_Is_Unknown_And_Distance_Is_Small</TestName>
</NamedTestSelector>
<NamedTestSelector>
<TestName>Spectre.Console.Tests.Unit.Cli.CommandAppTests+Parsing+UnknownCommand.Should_Return_Correct_Text_With_Suggestion_When_Root_Command_Followed_By_Argument_Is_Unknown_And_Distance_Is_Small</TestName>
</NamedTestSelector>
</IgnoredTests>
</Settings>
<Settings />
</ProjectConfiguration>

View File

@ -1,5 +1,4 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Shouldly;
using Spectre.Console.Testing;
using Xunit;
@ -8,14 +7,11 @@ namespace Spectre.Console.Tests.Unit
{
public partial class AnsiConsoleTests
{
[SuppressMessage("Naming", "CA1724:Type names should not match namespaces")]
public sealed class Markup
{
[Theory]
[InlineData("[yellow]Hello[/]", "Hello")]
[InlineData("[yellow]Hello [italic]World[/]![/]", "Hello World!")]
[InlineData("[link=https://patriksvensson.se]Click to visit my blog[/]", "]8;id=1024;https://patriksvensson.se\\Click to visit my blog]8;;\\")]
[InlineData("[link]https://patriksvensson.se[/]", "]8;id=1024;https://patriksvensson.se\\https://patriksvensson.se]8;;\\")]
public void Should_Output_Expected_Ansi_For_Markup(string markup, string expected)
{
// Given
@ -28,6 +24,32 @@ namespace Spectre.Console.Tests.Unit
console.Output.ShouldBe(expected);
}
[Fact]
public void Should_Output_Expected_Ansi_For_Link_With_Url_And_Text()
{
// Given
var console = new FakeAnsiConsole(ColorSystem.Standard, AnsiSupport.Yes);
// When
console.Markup("[link=https://patriksvensson.se]Click to visit my blog[/]");
// Then
console.Output.ShouldMatch("]8;id=[0-9]*;https:\\/\\/patriksvensson\\.se\\\\Click to visit my blog]8;;\\\\");
}
[Fact]
public void Should_Output_Expected_Ansi_For_Link_With_Only_Url()
{
// Given
var console = new FakeAnsiConsole(ColorSystem.Standard, AnsiSupport.Yes);
// When
console.Markup("[link]https://patriksvensson.se[/]");
// Then
console.Output.ShouldMatch("]8;id=[0-9]*;https:\\/\\/patriksvensson\\.se\\\\https:\\/\\/patriksvensson\\.se]8;;\\\\");
}
[Theory]
[InlineData("[yellow]Hello [[ World[/]", "Hello [ World")]
public void Should_Be_Able_To_Escape_Tags(string markup, string expected)