未验证 提交 1386d0fd 编写于 作者: T Tomáš Matoušek 提交者: GitHub

Test compositions (#46018)

* Test compositions

* Eliminate TestExportProvider

* Fixes and caching

* Debugger proxies

* Scopes

* Feedback and more fixes

* RemoteHostOptions

* Throw without timeout on invalid thread switches

* EventCollectorTests requires a main thread
上级 6257af45
......@@ -152,7 +152,7 @@ protected override async Task<IEnumerable<CodeActionOperation>> ComputeOperation
#if CODE_STYLE // https://github.com/dotnet/roslyn/issues/42218 tracks removing this conditional code.
return SpecializedCollections.SingletonEnumerable(codeAction);
#else
var factory = _startingSolution.Workspace.Services.GetService<ISymbolRenamedCodeActionOperationFactoryWorkspaceService>();
var factory = _startingSolution.Workspace.Services.GetRequiredService<ISymbolRenamedCodeActionOperationFactoryWorkspaceService>();
return new CodeActionOperation[]
{
codeAction,
......
......@@ -5,19 +5,28 @@
Imports Microsoft.CodeAnalysis.CodeFixes
Imports Microsoft.CodeAnalysis.CodeFixes.NamingStyles
Imports Microsoft.CodeAnalysis.Diagnostics
Imports Microsoft.CodeAnalysis.Editor.UnitTests
Imports Microsoft.CodeAnalysis.Editor.UnitTests.Diagnostics.NamingStyles
Imports Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces
Imports Microsoft.CodeAnalysis.VisualBasic.Diagnostics.Analyzers
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Diagnostics.NamingStyles
Public Class NamingStylesTests
Inherits AbstractVisualBasicDiagnosticProviderBasedUserDiagnosticTest
Private ReadOnly options As NamingStylesTestOptionSets = New NamingStylesTestOptionSets(LanguageNames.VisualBasic)
Private Shared ReadOnly s_options As NamingStylesTestOptionSets = New NamingStylesTestOptionSets(LanguageNames.VisualBasic)
Private Shared ReadOnly s_composition As TestComposition = EditorTestCompositions.EditorFeatures.AddParts(
GetType(TestSymbolRenamedCodeActionOperationFactoryWorkspaceService))
Friend Overrides Function CreateDiagnosticProviderAndFixer(workspace As Workspace) As (DiagnosticAnalyzer, CodeFixProvider)
Return (New VisualBasicNamingStyleDiagnosticAnalyzer(), New NamingStyleCodeFixProvider())
End Function
Protected Overrides Function GetComposition() As TestComposition
Return s_composition
End Function
' TODO: everything else apart from locals
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -31,7 +40,7 @@ end module",
sub M(x as integer)
end sub
end module",
options:=options.ParameterNamesAreCamelCase)
options:=s_options.ParameterNamesAreCamelCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -47,7 +56,7 @@ end module",
dim x = 0
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -63,7 +72,7 @@ end module",
dim X as integer, y, Z as string
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -79,7 +88,7 @@ end module",
dim x(0 to 4) as integer, Y as new object(), Z%? as integer
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -95,7 +104,7 @@ end module",
dim X(0 to 4) as integer, y as new object(), Z%? as integer
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -111,7 +120,7 @@ end module",
dim X(0 to 4) as integer, Y as new object(), z%? as integer
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -129,7 +138,7 @@ end module",
end using
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -147,7 +156,7 @@ end module",
end using
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact(Skip:="Implicit declarations cannot be found by syntax. Requires https://github.com/dotnet/roslyn/issues/14061")>
......@@ -166,7 +175,7 @@ end module",
next
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -178,7 +187,7 @@ end module",
for [|I|] = 1 to 10
next
end sub
end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
end module", New TestParameters(options:=s_options.LocalNamesAreCamelCase))
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -196,7 +205,7 @@ end module",
next
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact(Skip:="Implicit declarations cannot be found by syntax. Requires https://github.com/dotnet/roslyn/issues/14061")>
......@@ -215,7 +224,7 @@ end module",
next
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -227,7 +236,7 @@ end module",
for each [|X|] in {}
next
end sub
end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
end module", New TestParameters(options:=s_options.LocalNamesAreCamelCase))
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -245,7 +254,7 @@ end module",
next
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -267,7 +276,7 @@ module C
end try
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -280,7 +289,7 @@ module C
[|catch|]
end try
end sub
end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
end module", New TestParameters(options:=s_options.LocalNamesAreCamelCase))
End Function
<Fact(Skip:="Implicit declarations cannot be found by syntax. Requires https://github.com/dotnet/roslyn/issues/14061")>
......@@ -299,7 +308,7 @@ end module",
System.Console.WriteLine(value)
end sub
end module",
options:=options.LocalNamesAreCamelCase)
options:=s_options.LocalNamesAreCamelCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -310,7 +319,7 @@ end module",
Value = 0
System.Console.WriteLine([|Value|])
end sub
end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
end module", New TestParameters(options:=s_options.LocalNamesAreCamelCase))
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -322,7 +331,7 @@ end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
[|Value|] = 0
System.Console.WriteLine(Value)
end sub
end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
end module", New TestParameters(options:=s_options.LocalNamesAreCamelCase))
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -336,7 +345,7 @@ end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
let Number = integer.Parse(STR)
select Number * Number
end sub
end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
end module", New TestParameters(options:=s_options.LocalNamesAreCamelCase))
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -350,7 +359,7 @@ end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
let [|Number|] = integer.Parse(STR)
select Number * Number
end sub
end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
end module", New TestParameters(options:=s_options.LocalNamesAreCamelCase))
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -359,7 +368,7 @@ end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
"module C
sub M([|X|] as integer)
end sub
end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
end module", New TestParameters(options:=s_options.LocalNamesAreCamelCase))
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -369,7 +378,7 @@ end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
sub M()
dim tuple as ([|A|] as integer, B as string)
end sub
end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
end module", New TestParameters(options:=s_options.LocalNamesAreCamelCase))
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -379,7 +388,7 @@ end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
sub M()
dim tuple as (A as integer, ([|B|] as string, C as string)) = (0, (string.Empty, string.Empty))
end sub
end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
end module", New TestParameters(options:=s_options.LocalNamesAreCamelCase))
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -389,7 +398,7 @@ end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
sub M()
dim tuple = ([|A|]:=0, B:=0)
end sub
end module", New TestParameters(options:=options.LocalNamesAreCamelCase))
end module", New TestParameters(options:=s_options.LocalNamesAreCamelCase))
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -401,7 +410,7 @@ end module",
"module C
const FIELD = 0
end module",
options:=options.ConstantsAreUpperCase)
options:=s_options.ConstantsAreUpperCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -417,7 +426,7 @@ end module",
const local1 = 0, LOCAL2 as integer = 0
end sub
end module",
options:=options.ConstantsAreUpperCase)
options:=s_options.ConstantsAreUpperCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -425,7 +434,7 @@ end module",
Await TestMissingInRegularAndScriptAsync(
"module C
readonly [|field|] = 0
end module", New TestParameters(options:=options.ConstantsAreUpperCase))
end module", New TestParameters(options:=s_options.ConstantsAreUpperCase))
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -435,7 +444,7 @@ end module", New TestParameters(options:=options.ConstantsAreUpperCase))
sub M()
dim local1 = 0, [|local2|] as integer = 0
end sub
end module", New TestParameters(options:=options.ConstantsAreUpperCase))
end module", New TestParameters(options:=s_options.ConstantsAreUpperCase))
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -451,7 +460,7 @@ end module",
const PASCALCASE = 0
end sub
end module",
options:=options.LocalsAreCamelCaseConstantsAreUpperCase)
options:=s_options.LocalsAreCamelCaseConstantsAreUpperCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -467,7 +476,7 @@ end module",
dim pascalCase = 0
end sub
end module",
options:=options.LocalsAreCamelCaseConstantsAreUpperCase)
options:=s_options.LocalsAreCamelCaseConstantsAreUpperCase)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -478,7 +487,7 @@ end module",
End Interface",
"Interface ITest
End Interface",
options:=options.InterfaceNamesStartWithI)
options:=s_options.InterfaceNamesStartWithI)
End Function
<Fact, Trait(Traits.Feature, Traits.Features.NamingStyle)>
......@@ -489,7 +498,7 @@ End Interface",
End Class",
"Public Class classHolder(Of TType)
End Class",
options:=options.TypeParameterNamesStartWithT)
options:=s_options.TypeParameterNamesStartWithT)
End Function
End Class
......
......@@ -2,11 +2,12 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
namespace Microsoft.CodeAnalysis.Test.Utilities
namespace Microsoft.CodeAnalysis.Editor.CSharp
{
public static class TestWorkspaceName
/// <summary>
/// Stub type - replace with type generated from resx file when resources are needed in this assembly.
/// </summary>
internal static class CSharpEditorWpfResources
{
public const string Name = "Test";
public const string NameWithSharedGlobalOptions = "TestWithSharedGlobalOptions";
}
}
......@@ -38,6 +38,7 @@
<InternalsVisibleTo Include="Microsoft.CodeAnalysis.EditorFeatures2.UnitTests" />
<InternalsVisibleTo Include="Microsoft.CodeAnalysis.EditorFeatures.DiagnosticsTests.Utilities" />
<InternalsVisibleTo Include="Roslyn.Services.Test.Utilities" />
<InternalsVisibleTo Include="Roslyn.Services.UnitTests.Utilities"/>
<InternalsVisibleTo Include="Microsoft.CodeAnalysis.EditorFeatures.Test.Utilities" />
<InternalsVisibleTo Include="Microsoft.VisualStudio.LanguageServices.LiveShare" />
</ItemGroup>
......
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CodeActions;
using Microsoft.CodeAnalysis.CodeFixes;
using Microsoft.CodeAnalysis.CSharp.AddImport;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.Editing;
using Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Diagnostics;
using Microsoft.CodeAnalysis.Editor.UnitTests.CodeActions;
using Microsoft.CodeAnalysis.Remote.Testing;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.AddUsing
{
public abstract class AbstractAddUsingTests : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
{
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace)
=> (null, new CSharpAddImportCodeFixProvider());
private protected OptionsCollection SeparateGroups => Option(GenerationOptions.SeparateImportDirectiveGroups, true);
internal async Task TestAsync(
string initialMarkup,
string expectedMarkup,
TestHost testHost,
int index = 0,
CodeActionPriority? priority = null,
OptionsCollection options = null)
{
await TestInRegularAndScript1Async(
initialMarkup,
expectedMarkup,
index,
parameters: new TestParameters(options: options, testHost: testHost, priority: priority));
}
}
}
......@@ -24,6 +24,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.AddUsing
{
using FixProviderData = Tuple<IPackageInstallerService, ISymbolSearchService>;
[Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
public class AddUsingNuGetTests : AbstractAddUsingTests
{
private const string NugetOrgSource = "nuget.org";
......@@ -31,13 +32,11 @@ public class AddUsingNuGetTests : AbstractAddUsingTests
private static readonly ValueTask<ImmutableArray<PackageSource>?> NugetPackageSources =
new ValueTask<ImmutableArray<PackageSource>?>(ImmutableArray.Create(new PackageSource(NugetOrgSource, "http://nuget.org/")));
protected override TestWorkspace CreateWorkspaceFromFile(string initialMarkup, TestParameters parameters)
protected override void InitializeWorkspace(TestWorkspace workspace, TestParameters parameters)
{
var workspace = base.CreateWorkspaceFromFile(initialMarkup, parameters);
workspace.TryApplyChanges(workspace.CurrentSolution.WithOptions(workspace.Options
.WithChangedOption(SymbolSearchOptions.SuggestForTypesInNuGetPackages, LanguageNames.CSharp, true)
.WithChangedOption(SymbolSearchOptions.SuggestForTypesInReferenceAssemblies, LanguageNames.CSharp, true)));
return workspace;
}
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(
......@@ -50,7 +49,7 @@ protected override TestWorkspace CreateWorkspaceFromFile(string initialMarkup, T
protected override ImmutableArray<CodeAction> MassageActions(ImmutableArray<CodeAction> actions)
=> FlattenActions(actions);
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestSearchPackageSingleName()
{
var installerServiceMock = new Mock<IPackageInstallerService>(MockBehavior.Strict);
......@@ -81,7 +80,7 @@ class C
}", fixProviderData: new FixProviderData(installerServiceMock.Object, packageServiceMock.Object));
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestSearchPackageMultipleNames()
{
var installerServiceMock = new Mock<IPackageInstallerService>(MockBehavior.Strict);
......@@ -112,7 +111,7 @@ class C
}", fixProviderData: new FixProviderData(installerServiceMock.Object, packageServiceMock.Object));
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestMissingIfPackageAlreadyInstalled()
{
var installerServiceMock = new Mock<IPackageInstallerService>(MockBehavior.Strict);
......@@ -135,7 +134,7 @@ public async Task TestMissingIfPackageAlreadyInstalled()
}", new TestParameters(fixProviderData: new FixProviderData(installerServiceMock.Object, packageServiceMock.Object)));
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestOptionsOffered()
{
var installerServiceMock = new Mock<IPackageInstallerService>(MockBehavior.Strict);
......@@ -180,7 +179,7 @@ public async Task TestOptionsOffered()
parameters: new TestParameters(index: 2, fixProviderData: data));
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestInstallGetsCalledNoVersion()
{
var installerServiceMock = new Mock<IPackageInstallerService>(MockBehavior.Strict);
......@@ -212,7 +211,7 @@ class C
installerServiceMock.Verify();
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestInstallGetsCalledWithVersion()
{
var installerServiceMock = new Mock<IPackageInstallerService>(MockBehavior.Strict);
......@@ -246,7 +245,7 @@ class C
}
[WorkItem(14516, "https://github.com/dotnet/roslyn/pull/14516")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestFailedInstallRollsBackFile()
{
var installerServiceMock = new Mock<IPackageInstallerService>(MockBehavior.Strict);
......
......@@ -7,22 +7,21 @@
using Microsoft.CodeAnalysis.CSharp.AddImport;
using Microsoft.CodeAnalysis.CSharp.Diagnostics;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.Editing;
using Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Diagnostics;
using Microsoft.CodeAnalysis.Editor.UnitTests.CodeActions;
using Microsoft.CodeAnalysis.Test.Utilities;
using Roslyn.Test.Utilities;
using Xunit;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.AddUsing
{
[Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
public partial class AddUsingTestsWithAddImportDiagnosticProvider : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
{
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace)
=> (new CSharpUnboundIdentifiersDiagnosticAnalyzer(), new CSharpAddImportCodeFixProvider());
[WorkItem(1239, @"https://github.com/dotnet/roslyn/issues/1239")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestIncompleteLambda1()
{
await TestInRegularAndScriptAsync(
......@@ -46,7 +45,7 @@ class C
}
[WorkItem(1239, @"https://github.com/dotnet/roslyn/issues/1239")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestIncompleteLambda2()
{
await TestInRegularAndScriptAsync(
......@@ -71,7 +70,7 @@ class C
[WorkItem(860648, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/860648")]
[WorkItem(902014, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/902014")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestIncompleteSimpleLambdaExpression()
{
await TestInRegularAndScriptAsync(
......@@ -99,7 +98,7 @@ static void Main(string[] args)
}
[WorkItem(829970, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/829970")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestUnknownIdentifierGenericName()
{
await TestInRegularAndScriptAsync(
......@@ -116,7 +115,7 @@ class C
}
[WorkItem(829970, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/829970")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestUnknownIdentifierInAttributeSyntaxWithoutTarget()
{
await TestInRegularAndScriptAsync(
......@@ -132,7 +131,7 @@ class C
}");
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestOutsideOfMethodWithMalformedGenericParameters()
{
await TestInRegularAndScriptAsync(
......@@ -150,7 +149,7 @@ class Program
}
[WorkItem(752640, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/752640")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestUnknownIdentifierWithSyntaxError()
{
await TestInRegularAndScriptAsync(
......@@ -167,7 +166,7 @@ class C
}
[WorkItem(855748, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/855748")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestGenericNameWithBrackets()
{
await TestInRegularAndScriptAsync(
......@@ -208,7 +207,7 @@ class Class
}
[WorkItem(867496, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/867496")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestMalformedGenericParameters()
{
await TestInRegularAndScriptAsync(
......@@ -233,7 +232,7 @@ class Class
}
[WorkItem(18621, "https://github.com/dotnet/roslyn/issues/18621")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestIncompleteMemberWithAsyncTaskReturnType()
{
await TestInRegularAndScriptAsync(
......@@ -277,7 +276,7 @@ class Program
}
[WorkItem(23667, "https://github.com/dotnet/roslyn/issues/23667")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestMissingDiagnosticForNameOf()
{
await TestDiagnosticMissingAsync(
......
......@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Remote.Testing;
using Microsoft.CodeAnalysis.Test.Utilities;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +12,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.AddUsing
{
public partial class AddUsingTests
{
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestWhereExtension()
{
await TestInRegularAndScriptAsync(
......@@ -36,7 +37,7 @@ static void Main(string[] args)
}");
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestSelectExtension()
{
await TestInRegularAndScriptAsync(
......@@ -61,7 +62,7 @@ static void Main(string[] args)
}");
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestGroupByExtension()
{
await TestInRegularAndScriptAsync(
......@@ -86,7 +87,7 @@ static void Main(string[] args)
}");
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestJoinExtension()
{
await TestInRegularAndScriptAsync(
......@@ -111,7 +112,7 @@ static void Main(string[] args)
}");
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task RegressionFor8455()
{
await TestMissingInRegularAndScriptAsync(
......@@ -125,7 +126,7 @@ void M()
}
[WorkItem(772321, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/772321")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestExtensionWithThePresenceOfTheSameNameNonExtensionMethod()
{
await TestInRegularAndScriptAsync(
......@@ -189,7 +190,7 @@ public static void Goo(this NS1.C c, int x)
[WorkItem(772321, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/772321")]
[WorkItem(920398, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/920398")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestExtensionWithThePresenceOfTheSameNameNonExtensionPrivateMethod()
{
await TestInRegularAndScriptAsync(
......@@ -253,7 +254,7 @@ public static void Goo(this NS1.C c, int x)
[WorkItem(772321, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/772321")]
[WorkItem(920398, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/920398")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestExtensionWithThePresenceOfTheSameNameExtensionPrivateMethod()
{
await TestInRegularAndScriptAsync(
......@@ -333,7 +334,7 @@ public static void Goo(this NS1.C c, int x)
}
[WorkItem(269, "https://github.com/dotnet/roslyn/issues/269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestAddUsingForAddExtentionMethod()
{
await TestAsync(
......@@ -384,7 +385,7 @@ public static void Add(this X x, int i)
}
[WorkItem(269, "https://github.com/dotnet/roslyn/issues/269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestAddUsingForAddExtentionMethod2()
{
await TestAsync(
......@@ -435,7 +436,7 @@ public static void Add(this X x, int i)
}
[WorkItem(269, "https://github.com/dotnet/roslyn/issues/269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestAddUsingForAddExtentionMethod3()
{
await TestAsync(
......@@ -486,7 +487,7 @@ public static void Add(this X x, int i)
}
[WorkItem(269, "https://github.com/dotnet/roslyn/issues/269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestAddUsingForAddExtentionMethod4()
{
await TestAsync(
......@@ -537,7 +538,7 @@ public static void Add(this X x, int i)
}
[WorkItem(269, "https://github.com/dotnet/roslyn/issues/269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestAddUsingForAddExtentionMethod5()
{
await TestAsync(
......@@ -588,7 +589,7 @@ public static void Add(this X x, int i)
}
[WorkItem(269, "https://github.com/dotnet/roslyn/issues/269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestAddUsingForAddExtentionMethod6()
{
await TestAsync(
......@@ -639,7 +640,7 @@ public static void Add(this X x, int i)
}
[WorkItem(269, "https://github.com/dotnet/roslyn/issues/269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestAddUsingForAddExtentionMethod7()
{
await TestAsync(
......@@ -690,7 +691,7 @@ public static void Add(this X x, int i)
}
[WorkItem(269, "https://github.com/dotnet/roslyn/issues/269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestAddUsingForAddExtentionMethod8()
{
await TestAsync(
......@@ -741,7 +742,7 @@ public static void Add(this X x, int i)
}
[WorkItem(269, "https://github.com/dotnet/roslyn/issues/269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestAddUsingForAddExtentionMethod9()
{
await TestAsync(
......@@ -792,7 +793,7 @@ public static void Add(this X x, int i)
}
[WorkItem(269, "https://github.com/dotnet/roslyn/issues/269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestAddUsingForAddExtentionMethod10()
{
await TestAsync(
......@@ -863,7 +864,7 @@ public static void Add(this X x, object[] i)
}
[WorkItem(269, "https://github.com/dotnet/roslyn/issues/269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestAddUsingForAddExtentionMethod11()
{
await TestAsync(
......@@ -935,7 +936,7 @@ public static void Add(this X x, object[] i)
}
[WorkItem(3818, "https://github.com/dotnet/roslyn/issues/3818")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task InExtensionMethodUnderConditionalAccessExpression()
{
var initialText =
......@@ -989,7 +990,7 @@ static void Main(string[] args)
}
[WorkItem(3818, "https://github.com/dotnet/roslyn/issues/3818")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task InExtensionMethodUnderMultipleConditionalAccessExpressions()
{
var initialText =
......@@ -1035,7 +1036,7 @@ public T F<T>(T x)
}
[WorkItem(3818, "https://github.com/dotnet/roslyn/issues/3818")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task InExtensionMethodUnderMultipleConditionalAccessExpressions2()
{
var initialText =
......@@ -1080,7 +1081,7 @@ public T F<T>(T x)
await TestInRegularAndScriptAsync(initialText, expectedText);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestDeconstructExtension()
{
await TestAsync(
......@@ -1121,9 +1122,10 @@ static class E
parseOptions: null);
}
[Theory]
[CombinatorialData]
[WorkItem(16547, "https://github.com/dotnet/roslyn/issues/16547")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
public async Task TestAddUsingForAddExtentionMethodWithSameNameAsProperty()
public async Task TestAddUsingForAddExtentionMethodWithSameNameAsProperty(TestHost testHost)
{
await TestAsync(
@"
......@@ -1181,12 +1183,13 @@ public static Foo Self(this Foo foo)
return foo;
}
}
}");
}", testHost);
}
[Theory]
[CombinatorialData]
[WorkItem(39155, "https://github.com/dotnet/roslyn/issues/39155")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
public async Task TestExtensionGetAwaiterOverload()
public async Task TestExtensionGetAwaiterOverload(TestHost testHost)
{
await TestAsync(
@"
......@@ -1271,12 +1274,13 @@ public void GetResult()
}
}
}
");
", testHost);
}
[Theory]
[CombinatorialData]
[WorkItem(39155, "https://github.com/dotnet/roslyn/issues/39155")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
public async Task TestExtensionSelectOverload()
public async Task TestExtensionSelectOverload(TestHost testHost)
{
await TestAsync(
@"
......@@ -1335,10 +1339,10 @@ public static class FooExtensions
public static IEnumerable<int> Select(this Foo foo, Func<int, int> f) => null;
}
}
");
", testHost);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestExtensionDeconstructOverload()
{
await TestAsync(
......
......@@ -8,9 +8,10 @@
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.AddUsing
{
[Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
public partial class AddUsingTests
{
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestSimpleQuery()
{
await TestInRegularAndScriptAsync(
......@@ -37,7 +38,7 @@ static void Main(string[] args)
}");
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddImport)]
[Fact]
public async Task TestSimpleWhere()
{
await TestInRegularAndScriptAsync(
......
......@@ -839,8 +839,7 @@ void Method()
}");
}
protected override TestWorkspace CreateWorkspace(string code)
=> TestWorkspace.CreateCSharp(code);
protected override string Language => LanguageNames.CSharp;
protected override Action CreateNextHandler(TestWorkspace workspace)
=> () => { };
......
......@@ -22,9 +22,6 @@ protected override CodeRefactoringProvider CreateCodeRefactoringProvider(Workspa
protected internal override string GetLanguage()
=> LanguageNames.CSharp;
protected override TestWorkspace CreateWorkspaceFromFile(string initialMarkup, TestParameters parameters)
=> TestWorkspace.CreateCSharp(initialMarkup, parameters.parseOptions, parameters.compilationOptions);
[WpfFact, Trait(Traits.Feature, Traits.Features.ChangeSignature)]
public async Task ChangeSignature_Delegates_ImplicitInvokeCalls()
{
......
......@@ -352,11 +352,6 @@ void M()
[Trait(Traits.Feature, Traits.Features.Interactive)]
public void ChangeSignatureCommandDisabledInSubmission()
{
var exportProvider = ExportProviderCache
.GetOrCreateExportProviderFactory(
TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(typeof(InteractiveSupportsFeatureService.InteractiveTextBufferSupportsFeatureService)))
.CreateExportProvider();
using var workspace = TestWorkspace.Create(XElement.Parse(@"
<Workspace>
<Submission Language=""C#"" CommonReferences=""true"">
......@@ -369,7 +364,7 @@ class C
</Submission>
</Workspace> "),
workspaceKind: WorkspaceKind.Interactive,
exportProvider: exportProvider);
composition: EditorTestCompositions.EditorFeaturesWpf);
// Force initialization.
workspace.GetOpenDocumentIds().Select(id => workspace.GetTestDocument(id).GetTextView()).ToList();
......
......@@ -3,10 +3,10 @@
// See the LICENSE file in the project root for more information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.UnitTests;
using Microsoft.CodeAnalysis.Editor.UnitTests.Classification;
using Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces;
using Microsoft.CodeAnalysis.Remote.Testing;
using Microsoft.CodeAnalysis.Text;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Classification
{
......@@ -14,17 +14,14 @@ public abstract class AbstractCSharpClassifierTests : AbstractClassifierTests
{
protected static TestWorkspace CreateWorkspace(string code, ParseOptions options, TestHost testHost)
{
var workspace = TestWorkspace.CreateCSharp(code, parseOptions: options);
workspace.TryApplyChanges(workspace.CurrentSolution.WithOptions(
workspace.Options.WithChangedOption(RemoteTestHostOptions.RemoteHostTest, testHost == TestHost.OutOfProcess)));
return workspace;
var composition = EditorTestCompositions.EditorFeatures.WithTestHostParts(testHost);
return TestWorkspace.CreateCSharp(code, parseOptions: options, composition: composition);
}
protected override async Task DefaultTestAsync(string code, string allCode, TestHost testHost, FormattedClassification[] expected)
{
await TestAsync(code, allCode, parseOptions: null, testHost, expected);
await TestAsync(code, allCode, parseOptions: Options.Script, testHost, expected);
await TestAsync(code, allCode, testHost, parseOptions: null, expected);
await TestAsync(code, allCode, testHost, parseOptions: Options.Script, expected);
}
protected override string WrapInClass(string className, string code) =>
......
......@@ -13,8 +13,5 @@ public abstract class AbstractCSharpCodeActionTest : AbstractCodeActionTest
protected override ParseOptions GetScriptOptions() => Options.Script;
protected internal override string GetLanguage() => LanguageNames.CSharp;
protected override TestWorkspace CreateWorkspaceFromFile(string initialMarkup, TestParameters parameters)
=> TestWorkspace.CreateCSharp(initialMarkup, parameters.parseOptions, parameters.compilationOptions);
}
}
......@@ -2,9 +2,9 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.UnitTests;
using Microsoft.CodeAnalysis.Editor.UnitTests.MoveType;
using Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces;
using Microsoft.CodeAnalysis.Test.Utilities;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.CodeActions.MoveType
{
......@@ -13,12 +13,5 @@ public abstract class CSharpMoveTypeTestsBase : AbstractMoveTypeTest
protected override ParseOptions GetScriptOptions() => Options.Script;
protected internal override string GetLanguage() => LanguageNames.CSharp;
protected override TestWorkspace CreateWorkspaceFromFile(string initialMarkup, TestParameters parameters)
{
return TestWorkspace.IsWorkspaceElement(initialMarkup)
? TestWorkspace.Create(initialMarkup)
: TestWorkspace.CreateCSharp(initialMarkup, parameters.parseOptions, parameters.compilationOptions);
}
}
}
......@@ -24,21 +24,21 @@ public partial class PreviewTests
[WpfFact]
public async Task TestExceptionInComputePreview()
{
using var workspace = CreateWorkspaceFromFile("class D {}", new TestParameters());
using var workspace = CreateWorkspaceFromOptions("class D {}", new TestParameters());
await GetPreview(workspace, new ErrorCases.ExceptionInCodeAction());
}
[WpfFact]
public void TestExceptionInDisplayText()
{
using var workspace = CreateWorkspaceFromFile("class D {}", new TestParameters());
using var workspace = CreateWorkspaceFromOptions("class D {}", new TestParameters());
DisplayText(workspace, new ErrorCases.ExceptionInCodeAction());
}
[WpfFact]
public async Task TestExceptionInActionSets()
{
using var workspace = CreateWorkspaceFromFile("class D {}", new TestParameters());
using var workspace = CreateWorkspaceFromOptions("class D {}", new TestParameters());
await ActionSets(workspace, new ErrorCases.ExceptionInCodeAction());
}
......
......@@ -16,11 +16,17 @@
using Roslyn.Utilities;
using Xunit;
using Microsoft.CodeAnalysis.Editor.Implementation.Preview;
using Microsoft.CodeAnalysis.Editor.UnitTests;
using Microsoft.CodeAnalysis.Editor.UnitTests.Preview;
using Microsoft.CodeAnalysis.Test.Utilities;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.CodeRefactorings
{
public partial class PreviewTests : AbstractCSharpCodeActionTest
{
private static readonly TestComposition s_composition = EditorTestCompositions.EditorFeaturesWpf.AddParts(
typeof(MockPreviewPaneService));
private const string AddedDocumentName = "AddedDocument";
private const string AddedDocumentText = "class C1 {}";
private static string s_removedMetadataReferenceDisplayName = "";
......@@ -28,6 +34,8 @@ public partial class PreviewTests : AbstractCSharpCodeActionTest
private static readonly ProjectId s_addedProjectId = ProjectId.CreateNewId();
private const string ChangedDocumentText = "class C {}";
protected override TestComposition GetComposition() => s_composition;
protected override CodeRefactoringProvider CreateCodeRefactoringProvider(Workspace workspace, TestParameters parameters)
=> new MyCodeRefactoringProvider();
......
......@@ -230,7 +230,7 @@ internal override AbstractCommentSelectionBase<ValueTuple> GetToggleCommentComma
.First(export => typeof(CSharpToggleBlockCommentCommandHandler).Equals(export.GetType()));
}
internal override TestWorkspace GetWorkspace(string markup, ExportProvider exportProvider)
=> TestWorkspace.CreateCSharp(markup, exportProvider: exportProvider);
internal override TestWorkspace GetWorkspace(string markup, TestComposition composition)
=> TestWorkspace.CreateCSharp(markup, composition: composition);
}
}
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册