diff --git a/src/EditorFeatures/Test/Workspaces/TestWorkspace.cs b/src/EditorFeatures/Test/Workspaces/TestWorkspace.cs index 1b99319b1ca534d3c395072294956b200436bf33..93effa73a7a971d2a97448749afd237f44517eb4 100644 --- a/src/EditorFeatures/Test/Workspaces/TestWorkspace.cs +++ b/src/EditorFeatures/Test/Workspaces/TestWorkspace.cs @@ -280,6 +280,10 @@ public override bool CanApplyChange(ApplyChangesKind feature) case ApplyChangesKind.ChangeAdditionalDocument: return this.CanApplyChangeDocument; + case ApplyChangesKind.AddProjectReference: + case ApplyChangesKind.AddMetadataReference: + return true; + default: return false; } diff --git a/src/EditorFeatures/Test2/Diagnostics/AbstractCrossLanguageUserDiagnosticTest.vb b/src/EditorFeatures/Test2/Diagnostics/AbstractCrossLanguageUserDiagnosticTest.vb index 8a04beec8bb5ddd55dba8d1b493698f712ad1e87..1b293e5ad403c0101cc301b61f2e910b11168342 100644 --- a/src/EditorFeatures/Test2/Diagnostics/AbstractCrossLanguageUserDiagnosticTest.vb +++ b/src/EditorFeatures/Test2/Diagnostics/AbstractCrossLanguageUserDiagnosticTest.vb @@ -53,11 +53,17 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.Diagnostics Dim codeActions = diagnosticAndFix.Item2.Fixes.Select(Function(f) f.Action).ToList() codeActions = MassageActions(codeActions) Dim codeAction = codeActions(codeActionIndex) - Dim operations = Await codeAction.GetOperationsAsync(CancellationToken.None) - Dim edit = operations.OfType(Of ApplyChangesOperation)().First() Dim oldSolution = workspace.CurrentSolution - Dim updatedSolution = edit.ChangedSolution + Dim operations = Await codeAction.GetOperationsAsync(CancellationToken.None) + + For Each operation In operations + If operation.ApplyDuringTests Then + operation.Apply(workspace, CancellationToken.None) + End If + Next + + Dim updatedSolution = workspace.CurrentSolution verifySolutions?.Invoke(oldSolution, updatedSolution) diff --git a/src/Features/Core/Portable/AddImport/AddMetadataReferenceCodeActionOperation.cs b/src/Features/Core/Portable/AddImport/AddMetadataReferenceCodeActionOperation.cs index 157b9e65ac3ae3d3aa7163fa6fbc516cc6a0d450..2ff659ec2a10312642fdbc2df4228b646ee412eb 100644 --- a/src/Features/Core/Portable/AddImport/AddMetadataReferenceCodeActionOperation.cs +++ b/src/Features/Core/Portable/AddImport/AddMetadataReferenceCodeActionOperation.cs @@ -20,6 +20,8 @@ public AddMetadataReferenceCodeActionOperation(DocumentId documentId, PortableEx _reference = reference; } + internal override bool ApplyDuringTests => true; + public override void Apply(Workspace workspace, CancellationToken cancellationToken) { var service = workspace.Services.GetService(); diff --git a/src/Features/Core/Portable/AddImport/AddProjectReferenceCodeActionOperation.cs b/src/Features/Core/Portable/AddImport/AddProjectReferenceCodeActionOperation.cs index 9a7737fbdf75a65ba8431869e1e954cb9b9421fc..21c29e0f9958bb8aad789ab9acb5c45a2ce2c10c 100644 --- a/src/Features/Core/Portable/AddImport/AddProjectReferenceCodeActionOperation.cs +++ b/src/Features/Core/Portable/AddImport/AddProjectReferenceCodeActionOperation.cs @@ -21,6 +21,8 @@ private class AddProjectReferenceCodeActionOperation : CodeActionOperation _toProjectId = toProjectId; } + internal override bool ApplyDuringTests => true; + public override void Apply(Workspace workspace, CancellationToken cancellationToken) { var service = workspace.Services.GetService(); diff --git a/src/Features/Core/Portable/AddImport/IAddImportUndoService.cs b/src/Features/Core/Portable/AddImport/IAddImportUndoService.cs index f48faf22d2d5fac1251883481ba48e99cd459b6d..a4a454271d2c10f515a71ba42f4aa2eb33cdc18f 100644 --- a/src/Features/Core/Portable/AddImport/IAddImportUndoService.cs +++ b/src/Features/Core/Portable/AddImport/IAddImportUndoService.cs @@ -20,7 +20,7 @@ internal interface IAddImportUndoService : IWorkspaceService CancellationToken cancellationToken); } - [ExportWorkspaceService(typeof(IWorkspaceService)), Shared] + [ExportWorkspaceService(typeof(IAddImportUndoService)), Shared] internal class DefaultAddImportUndoService : IAddImportUndoService { public bool TryAddMetadataReference( diff --git a/src/Workspaces/Core/Portable/CodeActions/Operations/ApplyChangesOperation.cs b/src/Workspaces/Core/Portable/CodeActions/Operations/ApplyChangesOperation.cs index 4881015228a053268709046e27fc6455c17a0823..4296f397cc07c2218731d5a80be31ccc45386540 100644 --- a/src/Workspaces/Core/Portable/CodeActions/Operations/ApplyChangesOperation.cs +++ b/src/Workspaces/Core/Portable/CodeActions/Operations/ApplyChangesOperation.cs @@ -41,6 +41,8 @@ public Solution ChangedSolution get { return _changedSolution; } } + internal override bool ApplyDuringTests => true; + public override void Apply(Workspace workspace, CancellationToken cancellationToken) { this.Apply(workspace, new ProgressTracker(), cancellationToken);