提交 a80c765d 编写于 作者: M Manish Vasani

Enable testing non-fixable diagnostics in the test framework. Current...

Enable testing non-fixable diagnostics in the test framework. Current implementation filters out all non-fixable diagnostics completely.
上级 83d18908
......@@ -106,11 +106,11 @@ private TestParameters WithScriptOptions(TestParameters parameters)
}
protected async Task TestDiagnosticMissingAsync(
string initialMarkup, TestParameters parameters = default)
string initialMarkup, TestParameters parameters = default, bool fixableDiagnosticsOnly = true)
{
using (var workspace = CreateWorkspaceFromOptions(initialMarkup, parameters))
{
var diagnostics = await GetDiagnosticsWorkerAsync(workspace, parameters);
var diagnostics = await GetDiagnosticsWorkerAsync(workspace, parameters, fixableDiagnosticsOnly);
Assert.Equal(0, diagnostics.Length);
}
}
......@@ -126,7 +126,7 @@ private TestParameters WithScriptOptions(TestParameters parameters)
TestWorkspace workspace, TestParameters parameters);
protected abstract Task<ImmutableArray<Diagnostic>> GetDiagnosticsWorkerAsync(
TestWorkspace workspace, TestParameters parameters);
TestWorkspace workspace, TestParameters parameters, bool fixableDiagnosticsOnly);
protected Task TestSmartTagTextAsync(string initialMarkup, string displayText, int index)
=> TestSmartTagTextAsync(initialMarkup, displayText, new TestParameters(index: index));
......
......@@ -39,7 +39,7 @@ public abstract class AbstractCodeActionTest : AbstractCodeActionOrUserDiagnosti
return (actions, actions.IsDefaultOrEmpty ? null : actions[parameters.index]);
}
protected override Task<ImmutableArray<Diagnostic>> GetDiagnosticsWorkerAsync(TestWorkspace workspace, TestParameters parameters)
protected override Task<ImmutableArray<Diagnostic>> GetDiagnosticsWorkerAsync(TestWorkspace workspace, TestParameters parameters, bool fixableDiagnosticsOnly)
{
return SpecializedTasks.EmptyImmutableArray<Diagnostic>();
}
......
......@@ -120,7 +120,7 @@ public void TestSupportedDiagnosticsMessageHelpLinkUri()
}
internal override async Task<(ImmutableArray<Diagnostic>, ImmutableArray<CodeAction>, CodeAction actionToInvoke)> GetDiagnosticAndFixesAsync(
TestWorkspace workspace, TestParameters parameters)
TestWorkspace workspace, TestParameters parameters, bool fixableDiagnosticsOnly)
{
var providerAndFixer = GetOrCreateDiagnosticProviderAndFixer(workspace, parameters);
......@@ -143,8 +143,14 @@ public void TestSupportedDiagnosticsMessageHelpLinkUri()
var ids = new HashSet<string>(fixer.FixableDiagnosticIds);
var dxs = diagnostics.Where(d => ids.Contains(d.Id)).ToList();
return await GetDiagnosticAndFixesAsync(
var (resultDiagnostics, codeActions, actionToInvoke) = await GetDiagnosticAndFixesAsync(
dxs, provider, fixer, testDriver, document, span, annotation, parameters.index);
if (!fixableDiagnosticsOnly)
{
resultDiagnostics = diagnostics;
}
return (resultDiagnostics, codeActions, actionToInvoke);
}
protected async Task TestDiagnosticInfoAsync(
......
......@@ -61,7 +61,7 @@ private ImmutableArray<Diagnostic> FilterDiagnostics(IEnumerable<Diagnostic> dia
}
internal override async Task<(ImmutableArray<Diagnostic>, ImmutableArray<CodeAction>, CodeAction actionToInvoke)> GetDiagnosticAndFixesAsync(
TestWorkspace workspace, TestParameters parameters)
TestWorkspace workspace, TestParameters parameters, bool fixableDiagnosticsOnly)
{
var providerAndFixer = CreateDiagnosticProviderAndFixer(workspace);
......
......@@ -31,7 +31,7 @@ namespace Microsoft.CodeAnalysis.Editor.UnitTests.Diagnostics
public abstract partial class AbstractUserDiagnosticTest : AbstractCodeActionOrUserDiagnosticTest
{
internal abstract Task<(ImmutableArray<Diagnostic>, ImmutableArray<CodeAction>, CodeAction actionToInvoke)> GetDiagnosticAndFixesAsync(
TestWorkspace workspace, TestParameters parameters);
TestWorkspace workspace, TestParameters parameters, bool fixableDiagnosticsOnly);
internal abstract Task<IEnumerable<Diagnostic>> GetDiagnosticsAsync(
TestWorkspace workspace, TestParameters parameters);
......@@ -69,14 +69,14 @@ public abstract partial class AbstractUserDiagnosticTest : AbstractCodeActionOrU
protected override async Task<(ImmutableArray<CodeAction>, CodeAction actionToInvoke)> GetCodeActionsWorkerAsync(
TestWorkspace workspace, TestParameters parameters)
{
var (_, actions, actionToInvoke) = await GetDiagnosticAndFixesAsync(workspace, parameters);
var (_, actions, actionToInvoke) = await GetDiagnosticAndFixesAsync(workspace, parameters, fixableDiagnosticsOnly: true);
return (actions, actionToInvoke);
}
protected override async Task<ImmutableArray<Diagnostic>> GetDiagnosticsWorkerAsync(
TestWorkspace workspace, TestParameters parameters)
TestWorkspace workspace, TestParameters parameters, bool fixableDiagnosticsOnly)
{
var (dxs, _, _) = await GetDiagnosticAndFixesAsync(workspace, parameters);
var (dxs, _, _) = await GetDiagnosticAndFixesAsync(workspace, parameters, fixableDiagnosticsOnly);
return dxs;
}
......@@ -308,7 +308,7 @@ protected Document GetDocumentAndAnnotatedSpan(TestWorkspace workspace, out stri
{
using (var workspace = CreateWorkspaceFromOptions(initialMarkup, parameters))
{
var (_, actions, _) = await GetDiagnosticAndFixesAsync(workspace, parameters);
var (_, actions, _) = await GetDiagnosticAndFixesAsync(workspace, parameters, fixableDiagnosticsOnly: true);
Assert.Equal(count, actions.Length);
}
}
......@@ -317,7 +317,8 @@ protected Document GetDocumentAndAnnotatedSpan(TestWorkspace workspace, out stri
string initialMarkup,
int index = 0,
string diagnosticId = null,
TestParameters parameters = default)
TestParameters parameters = default,
bool fixableDiagnosticsOnly = true)
{
MarkupTestFile.GetSpans(initialMarkup, out var unused, out ImmutableArray<TextSpan> spansList);
......@@ -327,7 +328,7 @@ protected Document GetDocumentAndAnnotatedSpan(TestWorkspace workspace, out stri
ISet<TextSpan> actualTextSpans;
if (diagnosticId == null)
{
var (diagnostics, _, _) = await GetDiagnosticAndFixesAsync(workspace, parameters);
var (diagnostics, _, _) = await GetDiagnosticAndFixesAsync(workspace, parameters, fixableDiagnosticsOnly);
actualTextSpans = diagnostics.Select(d => d.Location.SourceSpan).ToSet();
}
else
......@@ -385,7 +386,7 @@ protected Document GetDocumentAndAnnotatedSpan(TestWorkspace workspace, out stri
defaultNamespace: defaultNamespace);
var testOptions = new TestParameters();
var (diagnostics, actions, _) = await GetDiagnosticAndFixesAsync(testState.Workspace, testOptions);
var (diagnostics, actions, _) = await GetDiagnosticAndFixesAsync(testState.Workspace, testOptions, fixableDiagnosticsOnly: true);
var generateTypeDiagFixes = diagnostics.SingleOrDefault(df => GenerateTypeTestState.FixIds.Contains(df.Id));
if (isMissing)
......
......@@ -1861,7 +1861,7 @@ End Module
Await TestInRegularAndScriptAsync(source.Value, expected.Value)
Using workspace = TestWorkspace.CreateVisualBasic(source.Value)
Dim diagnosticAndFixes = Await GetDiagnosticAndFixesAsync(workspace, New TestParameters())
Dim diagnosticAndFixes = Await GetDiagnosticAndFixesAsync(workspace, New TestParameters(), fixableDiagnosticsOnly:=True)
Dim span = diagnosticAndFixes.Item1.First().Location.SourceSpan
Assert.NotEqual(span.Start, 0)
Assert.NotEqual(span.End, 0)
......@@ -1910,7 +1910,7 @@ End Namespace
Await TestInRegularAndScriptAsync(source.Value, expected.Value)
Using workspace = TestWorkspace.CreateVisualBasic(source.Value)
Dim diagnosticAndFixes = Await GetDiagnosticAndFixesAsync(workspace, New TestParameters())
Dim diagnosticAndFixes = Await GetDiagnosticAndFixesAsync(workspace, New TestParameters(), fixableDiagnosticsOnly:=True)
Dim span = diagnosticAndFixes.Item1.First().Location.SourceSpan
Assert.Equal(span.Start, expected.Value.ToString.Replace(vbLf, vbCrLf).IndexOf("new C", StringComparison.Ordinal) + 4)
Assert.Equal(span.Length, "A.B".Length)
......@@ -1945,7 +1945,7 @@ End Module
Await TestInRegularAndScriptAsync(source.Value, expected.Value)
Using workspace = TestWorkspace.CreateVisualBasic(source.Value)
Dim diagnosticAndFixes = Await GetDiagnosticAndFixesAsync(workspace, New TestParameters())
Dim diagnosticAndFixes = Await GetDiagnosticAndFixesAsync(workspace, New TestParameters(), fixableDiagnosticsOnly:=True)
Dim span = diagnosticAndFixes.Item1.First().Location.SourceSpan
Assert.Equal(span.Start, expected.Value.ToString.Replace(vbLf, vbCrLf).IndexOf("Console.WriteLine(""goo"")", StringComparison.Ordinal))
Assert.Equal(span.Length, "System".Length)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册