mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-16 00:42:51 +08:00
56 lines
1.9 KiB
C#
56 lines
1.9 KiB
C#
namespace Spectre.Console.Analyzer.Tests;
|
|
|
|
public static class SpectreAnalyzerVerifier<TAnalyzer>
|
|
where TAnalyzer : DiagnosticAnalyzer, new()
|
|
{
|
|
public static Task VerifyCodeFixAsync(string source, DiagnosticResult expected, string fixedSource)
|
|
=> VerifyCodeFixAsync(source, new[] { expected }, fixedSource);
|
|
|
|
private static Task VerifyCodeFixAsync(string source, IEnumerable<DiagnosticResult> expected, string fixedSource)
|
|
{
|
|
var test = new Test
|
|
{
|
|
TestCode = source,
|
|
FixedCode = fixedSource,
|
|
};
|
|
|
|
test.ExpectedDiagnostics.AddRange(expected);
|
|
return test.RunAsync();
|
|
}
|
|
|
|
public static Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected)
|
|
{
|
|
var test = new Test
|
|
{
|
|
TestCode = source,
|
|
CompilerDiagnostics = CompilerDiagnostics.All,
|
|
};
|
|
|
|
test.ExpectedDiagnostics.AddRange(expected);
|
|
return test.RunAsync();
|
|
}
|
|
|
|
// Code fix tests support both analyzer and code fix testing. This test class is derived from the code fix test
|
|
// to avoid the need to maintain duplicate copies of the customization work.
|
|
private class Test : CSharpCodeFixTest<TAnalyzer, EmptyCodeFixProvider, XUnitVerifier>
|
|
{
|
|
public Test()
|
|
{
|
|
ReferenceAssemblies = CodeAnalyzerHelper.CurrentSpectre;
|
|
TestBehaviors |= TestBehaviors.SkipGeneratedCodeCheck;
|
|
}
|
|
|
|
protected override IEnumerable<CodeFixProvider> GetCodeFixProviders()
|
|
{
|
|
var analyzer = new TAnalyzer();
|
|
foreach (var provider in CodeFixProviderDiscovery.GetCodeFixProviders(Language))
|
|
{
|
|
if (analyzer.SupportedDiagnostics.Any(diagnostic => provider.FixableDiagnosticIds.Contains(diagnostic.Id)))
|
|
{
|
|
yield return provider;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|