提交 596a3708 编写于 作者: J Jason Malinowski

Correctly hook up .editorconfig into document.GetOptionsAsync()

We never hooked up the options provider, which meant syntax trees
would have the options but not the documents themselves if you asked
for an OptionSet.

This exposed an issue in our .editorconfig configuration fix tests:
those tests were setting dotnet_style_object_initializer = false and
then trying to assert that the configuration fix comes up. This setting
should have had the effect that the diagnostic was being disabled
and no fix would be triggered. But since .editorconfig was being
ignored in calls to GetOptions() the fix triggered anyways and
everything else worked from there. Once we fix the .editorconfig bug,
the tests start failing because there are no longer fixes. I'm updating
the tests that change the severity to simply pass true since they
weren't actually sensitive to what the boolean was. The tests that are
trying to test setting a value to true will need to find a different
option entirely to test with, and that's tracked by
https://github.com/dotnet/roslyn/issues/39466.
上级 e77483aa
......@@ -105,7 +105,7 @@ public Customer()
await TestInRegularAndScriptAsync(input, expected, CodeActionIndex);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsConfiguration)]
[Fact(Skip = "https://github.com/dotnet/roslyn/issues/39466"), Trait(Traits.Feature, Traits.Features.CodeActionsConfiguration)]
public async Task ConfigureEditorconfig_RuleExists_True()
{
var input = @"
......@@ -254,7 +254,7 @@ public Customer()
await TestInRegularAndScriptAsync(input, expected, CodeActionIndex);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsConfiguration)]
[Fact(Skip = "https://github.com/dotnet/roslyn/issues/39466"), Trait(Traits.Feature, Traits.Features.CodeActionsConfiguration)]
public async Task ConfigureEditorconfig_MaintainSeverity_True()
{
var input = @"
......
......@@ -285,7 +285,7 @@ public Customer()
}
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{vb,cs}]
dotnet_style_object_initializer = false:suggestion
dotnet_style_object_initializer = true:suggestion
</AnalyzerConfigDocument>
</Project>
</Workspace>";
......@@ -318,7 +318,7 @@ public Customer()
}
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{vb,cs}]
dotnet_style_object_initializer = false:none
dotnet_style_object_initializer = true:none
</AnalyzerConfigDocument>
</Project>
</Workspace>";
......@@ -658,7 +658,7 @@ public Customer()
}
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{vb,cs}]
dotnet_style_object_initializer = false:suggestion
dotnet_style_object_initializer = true:suggestion
</AnalyzerConfigDocument>
</Project>
</Workspace>";
......@@ -691,7 +691,7 @@ public Customer()
}
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{vb,cs}]
dotnet_style_object_initializer = false:silent
dotnet_style_object_initializer = true:silent
</AnalyzerConfigDocument>
</Project>
</Workspace>";
......@@ -1031,7 +1031,7 @@ public Customer()
}
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{vb,cs}]
dotnet_style_object_initializer = false:error
dotnet_style_object_initializer = true:error
</AnalyzerConfigDocument>
</Project>
</Workspace>";
......@@ -1064,7 +1064,7 @@ public Customer()
}
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{vb,cs}]
dotnet_style_object_initializer = false:suggestion
dotnet_style_object_initializer = true:suggestion
</AnalyzerConfigDocument>
</Project>
</Workspace>";
......@@ -1404,7 +1404,7 @@ public Customer()
}
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{vb,cs}]
dotnet_style_object_initializer = false:error
dotnet_style_object_initializer = true:error
</AnalyzerConfigDocument>
</Project>
</Workspace>";
......@@ -1437,7 +1437,7 @@ public Customer()
}
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{vb,cs}]
dotnet_style_object_initializer = false:warning
dotnet_style_object_initializer = true:warning
</AnalyzerConfigDocument>
</Project>
</Workspace>";
......@@ -2852,7 +2852,7 @@ public Customer()
}
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{vb,cs}]
dotnet_style_object_initializer = false:suggestion
dotnet_style_object_initializer = true:suggestion
</AnalyzerConfigDocument>
</Project>
</Workspace>";
......@@ -2885,7 +2885,7 @@ public Customer()
}
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{vb,cs}]
dotnet_style_object_initializer = false:error
dotnet_style_object_initializer = true:error
</AnalyzerConfigDocument>
</Project>
</Workspace>";
......
......@@ -12,6 +12,7 @@
using Microsoft.CodeAnalysis.Editor.Shared.Extensions;
using Microsoft.CodeAnalysis.Formatting;
using Microsoft.CodeAnalysis.Host;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Text;
using Microsoft.CodeAnalysis.Text.Shared.Extensions;
using Microsoft.VisualStudio.Composition;
......@@ -69,6 +70,8 @@ public TestWorkspace(ExportProvider exportProvider, string? workspaceKind = null
_backgroundParser.Start();
_metadataAsSourceFileService = exportProvider.GetExportedValues<IMetadataAsSourceFileService>().FirstOrDefault();
RegisterDocumentOptionProviders(exportProvider.GetExports<IDocumentOptionsProviderFactory, OrderableMetadata>());
}
protected internal override bool PartialSemanticsEnabled
......
......@@ -100,7 +100,7 @@ dotnet_style_object_initializer = true:suggestion
Await TestInRegularAndScriptAsync(input, expected, CodeActionIndex)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsConfiguration)>
<Fact(Skip:="https://github.com/dotnet/roslyn/issues/39466"), Trait(Traits.Feature, Traits.Features.CodeActionsConfiguration)>
Public Async Function ConfigureEditorconfig_RuleExists_True() As Task
Dim input = "
<Workspace>
......@@ -227,7 +227,7 @@ dotnet_style_object_initializer = true:suggestion
Await TestInRegularAndScriptAsync(input, expected, CodeActionIndex)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsConfiguration)>
<Fact(Skip:="https://github.com/dotnet/roslyn/issues/39466"), Trait(Traits.Feature, Traits.Features.CodeActionsConfiguration)>
Public Async Function ConfigureEditorconfig_MaintainCurrentSeverity_True() As Task
Dim input = "
<Workspace>
......
......@@ -253,7 +253,7 @@ Class Program1
End Class
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{cs,vb}]
dotnet_style_object_initializer = false:suggestion
dotnet_style_object_initializer = true:suggestion
</AnalyzerConfigDocument>
</Project>
</Workspace>"
......@@ -281,7 +281,7 @@ Class Program1
End Class
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{cs,vb}]
dotnet_style_object_initializer = false:none
dotnet_style_object_initializer = true:none
</AnalyzerConfigDocument>
</Project>
</Workspace>"
......@@ -576,7 +576,7 @@ Class Program1
End Class
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{cs,vb}]
dotnet_style_object_initializer = false:suggestion
dotnet_style_object_initializer = true:suggestion
</AnalyzerConfigDocument>
</Project>
</Workspace>"
......@@ -604,7 +604,7 @@ Class Program1
End Class
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{cs,vb}]
dotnet_style_object_initializer = false:silent
dotnet_style_object_initializer = true:silent
</AnalyzerConfigDocument>
</Project>
</Workspace>"
......@@ -899,7 +899,7 @@ Class Program1
End Class
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{cs,vb}]
dotnet_style_object_initializer = false:warning
dotnet_style_object_initializer = true:warning
</AnalyzerConfigDocument>
</Project>
</Workspace>"
......@@ -927,7 +927,7 @@ Class Program1
End Class
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{cs,vb}]
dotnet_style_object_initializer = false:suggestion
dotnet_style_object_initializer = true:suggestion
</AnalyzerConfigDocument>
</Project>
</Workspace>"
......@@ -1222,7 +1222,7 @@ Class Program1
End Class
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{cs,vb}]
dotnet_style_object_initializer = false:suggestion
dotnet_style_object_initializer = true:suggestion
</AnalyzerConfigDocument>
</Project>
</Workspace>"
......@@ -1250,7 +1250,7 @@ Class Program1
End Class
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{cs,vb}]
dotnet_style_object_initializer = false:warning
dotnet_style_object_initializer = true:warning
</AnalyzerConfigDocument>
</Project>
</Workspace>"
......@@ -1545,7 +1545,7 @@ Class Program1
End Class
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{cs,vb}]
dotnet_style_object_initializer = false:suggestion
dotnet_style_object_initializer = true:suggestion
</AnalyzerConfigDocument>
</Project>
</Workspace>"
......@@ -1573,7 +1573,7 @@ Class Program1
End Class
</Document>
<AnalyzerConfigDocument FilePath=""z:\\.editorconfig"">[*.{cs,vb}]
dotnet_style_object_initializer = false:error
dotnet_style_object_initializer = true:error
</AnalyzerConfigDocument>
</Project>
</Workspace>"
......
......@@ -749,7 +749,7 @@ public override async Task<VersionStamp> GetTopLevelChangeTextVersionAsync(Cance
{
// We need to work out path to this document. Documents may not have a "real" file path if they're something created
// as a part of a code action, but haven't been written to disk yet.
string effectiveFilePath;
string? effectiveFilePath = null;
if (FilePath != null)
{
......@@ -757,7 +757,19 @@ public override async Task<VersionStamp> GetTopLevelChangeTextVersionAsync(Cance
}
else if (Name != null && projectFilePath != null)
{
effectiveFilePath = PathUtilities.CombinePathsUnchecked(PathUtilities.GetDirectoryName(projectFilePath), Name);
var projectPath = PathUtilities.GetDirectoryName(projectFilePath);
if (!RoslynString.IsNullOrEmpty(projectPath))
{
effectiveFilePath = PathUtilities.CombinePathsUnchecked(PathUtilities.GetDirectoryName(projectFilePath), Name);
}
}
if (effectiveFilePath != null)
{
var analyzerConfigSet = await _analyzerConfigSetSource.GetValueAsync(cancellationToken).ConfigureAwait(false);
return analyzerConfigSet.GetOptionsForSourcePath(effectiveFilePath).AnalyzerOptions;
}
else
{
......@@ -765,10 +777,6 @@ public override async Task<VersionStamp> GetTopLevelChangeTextVersionAsync(Cance
// TODO: use AnalyzerConfigOptions.EmptyDictionary, since we don't have a public dictionary
return ImmutableDictionary.Create<string, string>(AnalyzerConfigOptions.KeyComparer);
}
var analyzerConfigSet = await _analyzerConfigSetSource.GetValueAsync(cancellationToken).ConfigureAwait(false);
return analyzerConfigSet.GetOptionsForSourcePath(effectiveFilePath).AnalyzerOptions;
}
private static readonly ConditionalWeakTable<SyntaxTree, DocumentId> s_syntaxTreeToIdMap =
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册