Update dependencies

* Add support for C# 12
* Run all tests on all major .NET SDKs
* Only build on Ubuntu
* Do not build docs for pull requests
* Add Cédric Luthi, and Frank Ray to authors
* Drop netstandard2.0 for ImageSharp plugin
This commit is contained in:
Patrik Svensson 2024-01-31 14:55:54 +01:00 committed by Patrik Svensson
parent 703d653ec5
commit b21e07ea94
57 changed files with 173 additions and 421 deletions

View File

@ -8,48 +8,6 @@ env:
jobs:
###################################################
# DOCS
###################################################
docs:
name: Documentation
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Setup .NET SDK
uses: actions/setup-dotnet@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: npm-
- name: Build
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cd docs
dotnet tool restore
dotnet run --configuration Release
- name: Archive doc generation
uses: actions/upload-artifact@v3
with:
name: documentation-output
path: docs/output/
retention-days: 5
###################################################
# BUILD
###################################################
@ -57,17 +15,7 @@ jobs:
build:
name: Build
if: "!contains(github.event.head_commit.message, 'skip-ci')"
strategy:
matrix:
kind: ['linux', 'windows', 'macOS']
include:
- kind: linux
os: ubuntu-latest
- kind: windows
os: windows-latest
- kind: macOS
os: macos-latest
runs-on: ${{ matrix.os }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3

View File

@ -15,26 +15,13 @@ env:
jobs:
###################################################
# BUILD
# PUBLISH
###################################################
build:
name: Build
if: |
(!startsWith(github.event.head_commit.message, 'skip-ci')
&& !startsWith(github.event.head_commit.message, 'chore:'))
|| startsWith(github.ref, 'refs/tags/')
strategy:
matrix:
kind: ['linux', 'windows', 'macOS']
include:
- kind: linux
os: ubuntu-latest
- kind: windows
os: windows-latest
- kind: macOS
os: macos-latest
runs-on: ${{ matrix.os }}
name: Publish NuGet Packages
if: "!contains(github.event.head_commit.message, 'skip-ci') || startsWith(github.ref, 'refs/tags/')"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
@ -43,12 +30,19 @@ jobs:
- name: Setup .NET SDK
uses: actions/setup-dotnet@v3
with:
dotnet-version: |
6.0.x
7.0.x
8.0.x
- name: Build
- name: Publish
shell: bash
run: |
dotnet tool restore
dotnet cake
dotnet cake --target="publish" \
--nuget-key="${{secrets.NUGET_API_KEY}}" \
--github-key="${{secrets.GITHUB_TOKEN}}"
###################################################
# DOCS
@ -89,34 +83,3 @@ jobs:
cd docs
dotnet tool restore
dotnet run --configuration Release -- deploy
###################################################
# PUBLISH
###################################################
publish:
name: Publish NuGet Packages
needs: [build]
if: "!contains(github.event.head_commit.message, 'skip-ci') || startsWith(github.ref, 'refs/tags/')"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup .NET SDK
uses: actions/setup-dotnet@v3
with:
dotnet-version: |
6.0.x
7.0.x
8.0.x
- name: Publish
shell: bash
run: |
dotnet tool restore
dotnet cake --target="publish" \
--nuget-key="${{secrets.NUGET_API_KEY}}" \
--github-key="${{secrets.GITHUB_TOKEN}}"

View File

@ -1,7 +1,7 @@
<Project>
<PropertyGroup Label="Settings">
<Deterministic>true</Deterministic>
<LangVersion>10</LangVersion>
<LangVersion>12</LangVersion>
<DebugSymbols>true</DebugSymbols>
<DebugType>embedded</DebugType>
<MinVerSkip Condition="'$(Configuration)' == 'Debug'">true</MinVerSkip>
@ -15,8 +15,8 @@
<PropertyGroup Label="Package Information">
<Description>A library that makes it easier to create beautiful console applications.</Description>
<Copyright>Patrik Svensson, Phil Scott, Nils Andresen</Copyright>
<Authors>Patrik Svensson, Phil Scott, Nils Andresen</Authors>
<Copyright>Patrik Svensson, Phil Scott, Nils Andresen, Cédric Luthi, Frank Ray</Copyright>
<Authors>Patrik Svensson, Phil Scott, Nils Andresen, Cédric Luthi, Frank Ray</Authors>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/spectreconsole/spectre.console</RepositoryUrl>
<PackageIcon>small-logo.png</PackageIcon>
@ -33,12 +33,12 @@
<!-- Allow folks to build with minimal dependencies (though they will need to provide their own Version data) -->
<ItemGroup Label="Build Tools Package References" Condition="'$(UseBuildTimeTools)' != 'false'">
<PackageReference Include="MinVer" PrivateAssets="All" Version="4.2.0" />
<PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" Version="1.1.1" />
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.435">
<PackageReference Include="MinVer" PrivateAssets="All" Version="4.3.0" />
<PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" Version="8.0.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556">
<PrivateAssets>All</PrivateAssets>
</PackageReference>
<PackageReference Include="Roslynator.Analyzers" Version="4.1.2">
<PackageReference Include="Roslynator.Analyzers" Version="4.10.0">
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>

View File

@ -1,7 +1,7 @@
<Project>
<Target Name="Versioning" BeforeTargets="MinVer">
<PropertyGroup Label="Build">
<MinVerDefaultPreReleasePhase>preview</MinVerDefaultPreReleasePhase>
<MinVerDefaultPreReleaseIdentifiers>preview.0</MinVerDefaultPreReleaseIdentifiers>
<MinVerVerbosity>normal</MinVerVerbosity>
</PropertyGroup>
</Target>

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;net7.0;net6.0;netstandard2.0</TargetFrameworks>
<TargetFrameworks>net8.0;net7.0;net6.0</TargetFrameworks>
<Nullable>enable</Nullable>
<IsPackable>true</IsPackable>
<Description>A library that extends Spectre.Console with ImageSharp superpowers.</Description>
@ -13,7 +13,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="SixLabors.ImageSharp" Version="2.1.3" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.2" />
</ItemGroup>
<ItemGroup>

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;net7.0;net6.0;netstandard2.0</TargetFrameworks>
<TargetFrameworks>net8.0;net7.0;net6.0</TargetFrameworks>
<IsTestProject>false</IsTestProject>
<Nullable>enable</Nullable>
<IsPackable>true</IsPackable>

View File

@ -16,8 +16,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="System.Memory" Version="4.5.5" />
<PackageReference Include="Wcwidth.Sources" Version="1.0.0">
<PackageReference Condition="'$(TargetFramework)' == 'netstandard2.0'" Include="System.Memory" Version="4.5.5" />
<PackageReference Include="Wcwidth.Sources" Version="2.0.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>

View File

@ -6,10 +6,10 @@
</PropertyGroup>
<ItemGroup Label="Package References">
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.435">
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556">
<PrivateAssets>All</PrivateAssets>
</PackageReference>
<PackageReference Include="Roslynator.Analyzers" Version="4.1.2">
<PackageReference Include="Roslynator.Analyzers" Version="4.10.0">
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>

View File

@ -13,9 +13,9 @@
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Analyzer.Testing.XUnit" Version="1.1.1" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.CodeFix.Testing.XUnit" Version="1.1.1" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.8.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="xunit" Version="2.6.6" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.6">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>

View File

@ -24,8 +24,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<NoConcurrentLiveRenderablesAnalyzer>
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(10, 13))
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(10, 13));
}
[Fact]
@ -48,8 +47,7 @@ class Child
}";
await SpectreAnalyzerVerifier<NoConcurrentLiveRenderablesAnalyzer>
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(12, 13))
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(12, 13));
}
[Fact]
@ -69,7 +67,6 @@ class Program
}";
await SpectreAnalyzerVerifier<NoConcurrentLiveRenderablesAnalyzer>
.VerifyAnalyzerAsync(Source)
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source);
}
}

View File

@ -21,8 +21,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<NoPromptsDuringLiveRenderablesAnalyzer>
.VerifyAnalyzerAsync(Source)
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source);
}
[Fact]
@ -45,8 +44,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<NoPromptsDuringLiveRenderablesAnalyzer>
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(12, 26))
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(12, 26));
}
[Fact]
@ -67,8 +65,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<NoPromptsDuringLiveRenderablesAnalyzer>
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(10, 13))
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(10, 13));
}
[Fact]
@ -92,7 +89,6 @@ class Program
}";
await SpectreAnalyzerVerifier<NoPromptsDuringLiveRenderablesAnalyzer>
.VerifyAnalyzerAsync(Source)
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source);
}
}

View File

@ -24,8 +24,7 @@ internal sealed class Foo
";
await SpectreAnalyzerVerifier<FavorInstanceAnsiConsoleOverStaticAnalyzer>
.VerifyAnalyzerAsync(Source)
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source);
}
[Fact]
@ -45,8 +44,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<FavorInstanceAnsiConsoleOverStaticAnalyzer>
.VerifyAnalyzerAsync(Source)
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source);
}
[Fact]
@ -64,8 +62,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<FavorInstanceAnsiConsoleOverStaticAnalyzer>
.VerifyAnalyzerAsync(Source)
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source);
}
[Fact]
@ -86,7 +83,6 @@ class TestClass
}";
await SpectreAnalyzerVerifier<FavorInstanceAnsiConsoleOverStaticAnalyzer>
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(11, 9))
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(11, 9));
}
}

View File

@ -20,8 +20,7 @@ class TestClass {
}";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyAnalyzerAsync(Source)
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source);
}
[Fact]
@ -38,8 +37,7 @@ class TestClass {
}";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(7, 9))
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(7, 9));
}
[Fact]
@ -56,7 +54,6 @@ class TestClass
}";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(7, 9))
.ConfigureAwait(false);
.VerifyAnalyzerAsync(Source, _expectedDiagnostics.WithLocation(7, 9));
}
}

View File

@ -38,8 +38,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<FavorInstanceAnsiConsoleOverStaticAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource);
}
[Fact]
@ -78,8 +77,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<FavorInstanceAnsiConsoleOverStaticAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(12, 9), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(12, 9), FixedSource);
}
[Fact]
@ -108,8 +106,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<FavorInstanceAnsiConsoleOverStaticAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(8, 9), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(8, 9), FixedSource);
}
[Fact]
@ -144,7 +141,6 @@ class TestClass
}";
await SpectreAnalyzerVerifier<FavorInstanceAnsiConsoleOverStaticAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource);
}
}

View File

@ -33,8 +33,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(8, 9), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(8, 9), FixedSource);
}
[Fact]
@ -64,8 +63,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(8, 9), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(8, 9), FixedSource);
}
[Fact]
@ -100,8 +98,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource);
}
[Fact]
@ -134,8 +131,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(10, 9), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(10, 9), FixedSource);
}
[Fact]
@ -168,8 +164,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(9, 9), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(9, 9), FixedSource);
}
[Fact]
@ -204,8 +199,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource);
}
[Fact]
@ -240,8 +234,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(11, 9), FixedSource);
}
[Fact]
@ -272,8 +265,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(9, 64), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(9, 64), FixedSource);
}
[Fact]
@ -306,8 +298,7 @@ class TestClass
}";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(10, 40), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, _expectedDiagnostic.WithLocation(10, 40), FixedSource);
}
[Fact]
@ -327,7 +318,7 @@ AnsiConsole.WriteLine(""Hello, World"");
";
await SpectreAnalyzerVerifier<UseSpectreInsteadOfSystemConsoleAnalyzer>
.VerifyCodeFixAsync(Source, OutputKind.ConsoleApplication, _expectedDiagnostic.WithLocation(4, 1), FixedSource)
.ConfigureAwait(false);
.VerifyCodeFixAsync(Source, OutputKind.ConsoleApplication, _expectedDiagnostic.WithLocation(4, 1),
FixedSource);
}
}

View File

@ -5,41 +5,4 @@ namespace Spectre.Console.Tests.Data;
public abstract class AnimalCommand<TSettings> : Command<TSettings>
where TSettings : CommandSettings
{
protected void DumpSettings(CommandContext context, TSettings settings)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
if (settings == null)
{
throw new ArgumentNullException(nameof(settings));
}
var properties = settings.GetType().GetProperties();
foreach (var group in properties.GroupBy(x => x.DeclaringType).Reverse())
{
SystemConsole.WriteLine();
SystemConsole.ForegroundColor = ConsoleColor.Yellow;
SystemConsole.WriteLine(group.Key.FullName);
SystemConsole.ResetColor();
foreach (var property in group)
{
SystemConsole.WriteLine($" {property.Name} = {property.GetValue(settings)}");
}
}
if (context.Remaining.Raw.Count > 0)
{
SystemConsole.WriteLine();
SystemConsole.ForegroundColor = ConsoleColor.Yellow;
SystemConsole.WriteLine("Remaining:");
SystemConsole.ResetColor();
SystemConsole.WriteLine(string.Join(", ", context.Remaining));
}
SystemConsole.WriteLine();
}
}

View File

@ -4,7 +4,6 @@ public class CatCommand : AnimalCommand<CatSettings>
{
public override int Execute(CommandContext context, CatSettings settings)
{
DumpSettings(context, settings);
return 0;
}
}

View File

@ -25,7 +25,6 @@ public class DogCommand : AnimalCommand<DogSettings>
public override int Execute(CommandContext context, DogSettings settings)
{
DumpSettings(context, settings);
return 0;
}
}

View File

@ -5,7 +5,6 @@ public class HorseCommand : AnimalCommand<HorseSettings>
{
public override int Execute(CommandContext context, HorseSettings settings)
{
DumpSettings(context, settings);
return 0;
}
}

View File

@ -5,7 +5,6 @@ public class TurtleCommand : AnimalCommand<TurtleSettings>
{
public override int Execute(CommandContext context, TurtleSettings settings)
{
DumpSettings(context, settings);
return 0;
}
}

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;net7.0</TargetFrameworks>
<TargetFrameworks>net8.0;net7.0;net6.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
@ -9,15 +9,16 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="IsExternalInit" Version="1.0.2" PrivateAssets="all" />
<PackageReference Include="IsExternalInit" Version="1.0.3" PrivateAssets="all" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Analyzer.Testing.XUnit" Version="1.1.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.CodeFix.Testing.XUnit" Version="1.1.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="2.6.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
<PackageReference Include="Shouldly" Version="4.1.0" />
<PackageReference Include="Spectre.Verify.Extensions" Version="18.0.0" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="Shouldly" Version="4.2.1" />
<PackageReference Include="Spectre.Verify.Extensions" Version="22.3.1" />
<PackageReference Include="Verify.Xunit" Version="23.0.1" />
<PackageReference Include="xunit" Version="2.6.6" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>

View File

@ -3,7 +3,6 @@ namespace Spectre.Console.Tests.Unit.Cli.Annotations;
[ExpectationPath("Arguments")]
public sealed partial class CommandArgumentAttributeTests
{
[UsesVerify]
public sealed class ArgumentCannotContainOptions
{
public sealed class Settings : CommandSettings
@ -24,7 +23,6 @@ public sealed partial class CommandArgumentAttributeTests
}
}
[UsesVerify]
public sealed class MultipleValuesAreNotSupported
{
public sealed class Settings : CommandSettings
@ -45,7 +43,6 @@ public sealed partial class CommandArgumentAttributeTests
}
}
[UsesVerify]
public sealed class ValuesMustHaveName
{
public sealed class Settings : CommandSettings

View File

@ -3,7 +3,6 @@ namespace Spectre.Console.Tests.Unit.Cli.Annotations;
[ExpectationPath("Arguments")]
public sealed partial class CommandOptionAttributeTests
{
[UsesVerify]
public sealed class UnexpectedCharacter
{
public sealed class Settings : CommandSettings
@ -25,7 +24,6 @@ public sealed partial class CommandOptionAttributeTests
}
}
[UsesVerify]
public sealed class UnterminatedValueName
{
public sealed class Settings : CommandSettings
@ -47,7 +45,6 @@ public sealed partial class CommandOptionAttributeTests
}
}
[UsesVerify]
public sealed class OptionsMustHaveName
{
public sealed class Settings : CommandSettings
@ -69,7 +66,6 @@ public sealed partial class CommandOptionAttributeTests
}
}
[UsesVerify]
public sealed class OptionNamesCannotStartWithDigit
{
public sealed class Settings : CommandSettings
@ -91,7 +87,6 @@ public sealed partial class CommandOptionAttributeTests
}
}
[UsesVerify]
public sealed class InvalidCharacterInOptionName
{
public sealed class Settings : CommandSettings
@ -113,7 +108,6 @@ public sealed partial class CommandOptionAttributeTests
}
}
[UsesVerify]
public sealed class LongOptionMustHaveMoreThanOneCharacter
{
public sealed class Settings : CommandSettings
@ -135,7 +129,6 @@ public sealed partial class CommandOptionAttributeTests
}
}
[UsesVerify]
public sealed class ShortOptionMustOnlyBeOneCharacter
{
public sealed class Settings : CommandSettings
@ -157,7 +150,6 @@ public sealed partial class CommandOptionAttributeTests
}
}
[UsesVerify]
public sealed class MultipleOptionValuesAreNotSupported
{
public sealed class Settings : CommandSettings
@ -179,7 +171,6 @@ public sealed partial class CommandOptionAttributeTests
}
}
[UsesVerify]
public sealed class InvalidCharacterInValueName
{
public sealed class Settings : CommandSettings
@ -201,7 +192,6 @@ public sealed partial class CommandOptionAttributeTests
}
}
[UsesVerify]
public sealed class MissingLongAndShortName
{
public sealed class Settings : CommandSettings

View File

@ -4,7 +4,6 @@ namespace Spectre.Console.Tests.Unit.Cli;
public sealed partial class CommandAppTests
{
[UsesVerify]
[ExpectationPath("Help")]
public class Help
{

View File

@ -2,11 +2,9 @@ namespace Spectre.Console.Tests.Unit.Cli;
public sealed partial class CommandAppTests
{
[UsesVerify]
[ExpectationPath("Parsing")]
public sealed class Parsing
{
[UsesVerify]
[ExpectationPath("UnknownCommand")]
public sealed class UnknownCommand
{
@ -167,7 +165,6 @@ public sealed partial class CommandAppTests
}
}
[UsesVerify]
[ExpectationPath("CannotAssignValueToFlag")]
public sealed class CannotAssignValueToFlag
{
@ -208,7 +205,6 @@ public sealed partial class CommandAppTests
}
}
[UsesVerify]
[ExpectationPath("NoValueForOption")]
public sealed class NoValueForOption
{
@ -249,7 +245,6 @@ public sealed partial class CommandAppTests
}
}
[UsesVerify]
[ExpectationPath("NoMatchingArgument")]
public sealed class NoMatchingArgument
{
@ -272,7 +267,6 @@ public sealed partial class CommandAppTests
}
}
[UsesVerify]
[ExpectationPath("UnexpectedOption")]
public sealed class UnexpectedOption
{
@ -313,7 +307,6 @@ public sealed partial class CommandAppTests
}
}
[UsesVerify]
[ExpectationPath("UnknownOption")]
public sealed class UnknownOption
{
@ -356,7 +349,6 @@ public sealed partial class CommandAppTests
}
}
[UsesVerify]
[ExpectationPath("OptionWithoutName")]
public sealed class OptionWithoutName
{
@ -451,7 +443,6 @@ public sealed partial class CommandAppTests
}
}
[UsesVerify]
[ExpectationPath("InvalidShortOptionName")]
public sealed class InvalidShortOptionName
{
@ -474,7 +465,6 @@ public sealed partial class CommandAppTests
}
}
[UsesVerify]
[ExpectationPath("LongOptionNameIsOneCharacter")]
public sealed class LongOptionNameIsOneCharacter
{
@ -497,7 +487,6 @@ public sealed partial class CommandAppTests
}
}
[UsesVerify]
[ExpectationPath("LongOptionNameIsMissing")]
public sealed class LongOptionNameIsMissing
{
@ -520,7 +509,6 @@ public sealed partial class CommandAppTests
}
}
[UsesVerify]
[ExpectationPath("LongOptionNameStartWithDigit")]
public sealed class LongOptionNameStartWithDigit
{
@ -543,7 +531,6 @@ public sealed partial class CommandAppTests
}
}
[UsesVerify]
[ExpectationPath("LongOptionNameContainSymbol")]
public sealed class LongOptionNameContainSymbol
{

View File

@ -2,7 +2,6 @@ namespace Spectre.Console.Tests.Unit.Cli;
public sealed partial class CommandAppTests
{
[UsesVerify]
[ExpectationPath("Xml")]
public sealed class Xml
{

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;net7.0</TargetFrameworks>
<TargetFrameworks>net8.0;net7.0;net6.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
@ -18,15 +18,15 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="IsExternalInit" Version="1.0.2" PrivateAssets="all" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Analyzer.Testing.XUnit" Version="1.1.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.CodeFix.Testing.XUnit" Version="1.1.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="2.6.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
<PackageReference Include="Shouldly" Version="4.1.0" />
<PackageReference Include="Spectre.Verify.Extensions" Version="18.0.0" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="Shouldly" Version="4.2.1" />
<PackageReference Include="Spectre.Verify.Extensions" Version="22.3.1" />
<PackageReference Include="Verify.Xunit" Version="23.0.1" />
<PackageReference Include="xunit" Version="2.6.6" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("AlternateScreen")]
public sealed class AlternateScreenTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Exception")]
public sealed class ExceptionTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Live/Progress")]
public sealed class ProgressTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Live/Status")]
public sealed class StatusTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Prompts/Text")]
public sealed class TextPromptTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Recorder")]
public sealed class RecorderTests
{

View File

@ -1,10 +1,8 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Rendering/Borders/Box")]
public sealed class BoxBorderTests
{
[UsesVerify]
public sealed class NoBorder
{
public sealed class TheSafeGetBorderMethod
@ -52,7 +50,6 @@ public sealed class BoxBorderTests
}
}
[UsesVerify]
public sealed class AsciiBorder
{
public sealed class TheSafeGetBorderMethod
@ -84,7 +81,6 @@ public sealed class BoxBorderTests
}
}
[UsesVerify]
public sealed class DoubleBorder
{
public sealed class TheSafeGetBorderMethod
@ -116,7 +112,6 @@ public sealed class BoxBorderTests
}
}
[UsesVerify]
public sealed class HeavyBorder
{
public sealed class TheSafeGetBorderMethod
@ -148,7 +143,6 @@ public sealed class BoxBorderTests
}
}
[UsesVerify]
public sealed class RoundedBorder
{
[Fact]
@ -177,7 +171,6 @@ public sealed class BoxBorderTests
}
}
[UsesVerify]
public sealed class SquareBorder
{
[Fact]

View File

@ -1,10 +1,8 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Rendering/Borders/Table")]
public sealed class TableBorderTests
{
[UsesVerify]
public sealed class NoBorder
{
[Fact]
@ -46,7 +44,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class AsciiBorder
{
[Fact]
@ -88,7 +85,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class Ascii2Border
{
[Fact]
@ -130,7 +126,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class AsciiDoubleHeadBorder
{
[Fact]
@ -172,7 +167,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class SquareBorder
{
[Fact]
@ -214,7 +208,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class RoundedBorder
{
[Fact]
@ -256,7 +249,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class MinimalBorder
{
[Fact]
@ -298,7 +290,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class MinimalHeavyHeadBorder
{
[Fact]
@ -340,7 +331,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class MinimalDoubleHeadBorder
{
[Fact]
@ -382,7 +372,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class SimpleBorder
{
[Fact]
@ -424,7 +413,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class HorizontalBorder
{
[Fact]
@ -466,7 +454,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class SimpleHeavyBorder
{
[Fact]
@ -508,7 +495,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class HeavyBorder
{
[Fact]
@ -550,7 +536,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class HeavyEdgeBorder
{
[Fact]
@ -592,7 +577,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class HeavyHeadBorder
{
[Fact]
@ -634,7 +618,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class DoubleBorder
{
[Fact]
@ -676,7 +659,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class DoubleEdgeBorder
{
[Fact]
@ -718,7 +700,6 @@ public sealed class TableBorderTests
}
}
[UsesVerify]
public sealed class MarkdownBorder
{
[Fact]

View File

@ -2,7 +2,6 @@ namespace Spectre.Console.Tests.Unit;
public sealed class SegmentTests
{
[UsesVerify]
public sealed class TheSplitMethod
{
[Theory]
@ -44,7 +43,6 @@ public sealed class SegmentTests
}
}
[UsesVerify]
public sealed class TheSplitLinesMethod
{
[Fact]

View File

@ -2,11 +2,9 @@ using Spectre.Console.Extensions;
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Align")]
public sealed class AlignTests
{
[UsesVerify]
public sealed class Left
{
[Fact]
@ -55,7 +53,6 @@ public sealed class AlignTests
}
}
[UsesVerify]
public sealed class Center
{
[Fact]
@ -104,7 +101,6 @@ public sealed class AlignTests
}
}
[UsesVerify]
public sealed class Right
{
[Fact]

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/BarChart")]
public sealed class BarChartTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/BreakdownChart")]
public sealed class BreakdownChartTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Calendar")]
public sealed class CalendarTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Canvas")]
public class CanvasTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Columns")]
public sealed class ColumnsTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Figlet")]
public sealed class FigletTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Grid")]
public sealed class GridTests
{
@ -70,7 +69,6 @@ public sealed class GridTests
}
}
[UsesVerify]
[ExpectationPath("AddEmptyRow")]
public sealed class TheAddEmptyRowMethod
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Json")]
public sealed class JsonTextTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Layout")]
public sealed class LayoutTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Padder")]
public sealed class PadderTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Panel")]
public sealed class PanelTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Rows")]
public sealed class RowsTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Rule")]
public sealed class RuleTests
{

View File

@ -1,10 +1,8 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Table/Rows/Extensions")]
public sealed class TableRowCollectionExtensionsTests
{
[UsesVerify]
public sealed class TheAddRowMethod
{
[Fact]
@ -48,7 +46,6 @@ public sealed class TableRowCollectionExtensionsTests
}
}
[UsesVerify]
public sealed class TheInsertRowMethod
{
[Fact]
@ -92,7 +89,6 @@ public sealed class TableRowCollectionExtensionsTests
}
}
[UsesVerify]
public sealed class TheRemoveRowMethod
{
[Fact]

View File

@ -3,7 +3,6 @@ namespace Spectre.Console.Tests.Unit;
[ExpectationPath("Widgets/Table/Rows")]
public sealed class TableRowCollectionTests
{
[UsesVerify]
public sealed class TheAddMethod
{
[Fact]
@ -69,7 +68,6 @@ public sealed class TableRowCollectionTests
}
}
[UsesVerify]
public sealed class TheInsertMethod
{
[Fact]
@ -137,7 +135,6 @@ public sealed class TableRowCollectionTests
}
}
[UsesVerify]
public sealed class TheRemoveMethod
{
[Fact]
@ -215,7 +212,6 @@ public sealed class TableRowCollectionTests
}
}
[UsesVerify]
public sealed class TheUpdateMethod
{
[Fact]

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Table")]
public sealed class TableTests
{
@ -101,7 +100,6 @@ public sealed class TableTests
}
}
[UsesVerify]
public sealed class TheAddEmptyRowMethod
{
[Fact]

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/TextPath")]
public sealed class TextPathTests
{

View File

@ -1,6 +1,5 @@
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Tree")]
public class TreeTests
{