diff --git a/eng/Versions.props b/eng/Versions.props index d023176a10f7ebcec8f47e0bbe8165fbc7c8cabb..6f17e8cc7390b93f0c2ae7d3c1ad891026706b65 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -117,7 +117,7 @@ 15.7.7 1.15.103 16.0.28226-pre - 16.0.28226-pre + 16.1.28917.181 15.7.27703 15.0.25415 15.0.25415 diff --git a/src/VisualStudio/IntegrationTest/TestUtilities/InProcess/VisualStudioWorkspace_InProc.cs b/src/VisualStudio/IntegrationTest/TestUtilities/InProcess/VisualStudioWorkspace_InProc.cs index 5d7622af1f3af753a7bea2c3658f075a50eec5c3..c41e3e35defb86641c517a37484fedd76f979eeb 100644 --- a/src/VisualStudio/IntegrationTest/TestUtilities/InProcess/VisualStudioWorkspace_InProc.cs +++ b/src/VisualStudio/IntegrationTest/TestUtilities/InProcess/VisualStudioWorkspace_InProc.cs @@ -10,6 +10,7 @@ using Microsoft.CodeAnalysis.Options; using Microsoft.CodeAnalysis.Shared.TestHooks; using Microsoft.VisualStudio.LanguageServices; +using Microsoft.VisualStudio.OperationProgress; using Microsoft.VisualStudio.Shell.Interop; using Roslyn.Hosting.Diagnostics.Waiters; @@ -109,10 +110,31 @@ private static TestingOnly_WaitingService GetWaitingService() => GetComponentModel().DefaultExportProvider.GetExport().Value; public void WaitForAsyncOperations(TimeSpan timeout, string featuresToWaitFor, bool waitForWorkspaceFirst = true) - => GetWaitingService().WaitForAsyncOperations(timeout, featuresToWaitFor, waitForWorkspaceFirst); + { + if (waitForWorkspaceFirst || featuresToWaitFor == FeatureAttribute.Workspace) + { + WaitForProjectSystem(timeout); + } + + GetWaitingService().WaitForAsyncOperations(timeout, featuresToWaitFor, waitForWorkspaceFirst); + } public void WaitForAllAsyncOperations(TimeSpan timeout, params string[] featureNames) - => GetWaitingService().WaitForAllAsyncOperations(timeout, featureNames); + { + if (featureNames.Contains(FeatureAttribute.Workspace)) + { + WaitForProjectSystem(timeout); + } + + GetWaitingService().WaitForAllAsyncOperations(timeout, featureNames); + } + + private static void WaitForProjectSystem(TimeSpan timeout) + { + var operationProgressStatus = InvokeOnUIThread(_ => GetGlobalService()); + var stageStatus = operationProgressStatus.GetStageStatus(CommonOperationProgressStageIds.Intellisense); + stageStatus.WaitForCompletionAsync().Wait(timeout); + } private static void LoadRoslynPackage() { diff --git a/src/VisualStudio/IntegrationTest/TestUtilities/OutOfProcess/Editor_OutOfProc.Verifier.cs b/src/VisualStudio/IntegrationTest/TestUtilities/OutOfProcess/Editor_OutOfProc.Verifier.cs index 10d73b8993db84763770dbe52f0dcee8d76879e2..1aae619b31ef71a406364e06a5bb36c392f36c07 100644 --- a/src/VisualStudio/IntegrationTest/TestUtilities/OutOfProcess/Editor_OutOfProc.Verifier.cs +++ b/src/VisualStudio/IntegrationTest/TestUtilities/OutOfProcess/Editor_OutOfProc.Verifier.cs @@ -189,6 +189,7 @@ public void ErrorTags(params string[] expectedTags) { _instance.Workspace.WaitForAllAsyncOperations( Helper.HangMitigatingTimeout, + FeatureAttribute.Workspace, FeatureAttribute.SolutionCrawler, FeatureAttribute.DiagnosticService, FeatureAttribute.ErrorSquiggles);