未验证 提交 7ccfbe0a 编写于 作者: S Sam Harwell 提交者: GitHub

Merge pull request #46811 from sharwell/fail-on-hang

Terminate the integration test process if cleanup fails
......@@ -2,13 +2,13 @@
// 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;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Test.Utilities;
using Microsoft.VisualStudio.IntegrationTest.Utilities;
using Microsoft.VisualStudio.IntegrationTest.Utilities.Input;
using Roslyn.Test.Utilities;
using Xunit;
using Xunit.Abstractions;
using ProjName = Microsoft.VisualStudio.IntegrationTest.Utilities.Common.ProjectUtils.Project;
namespace Roslyn.VisualStudio.IntegrationTests.VisualBasic
......@@ -89,11 +89,19 @@ End Module
");
VisualStudio.Editor.PlaceCaret("(", charsOffset: 1);
VisualStudio.Editor.SendKeys("x as integer", VirtualKey.Tab);
VisualStudio.Editor.SendKeys("x As integer", VirtualKey.Tab);
VisualStudio.Editor.Verify.IsNotSaved();
VisualStudio.Editor.SendKeys(new KeyPress(VirtualKey.S, ShiftState.Ctrl));
VisualStudio.Editor.Verify.IsSaved();
VisualStudio.Editor.Verify.TextContains(@"Sub Main(x As Integer)");
var savedFileName = VisualStudio.Editor.Verify.IsSaved();
try
{
VisualStudio.Editor.Verify.TextContains(@"Sub Main(x As Integer)");
}
catch (Exception e)
{
throw new InvalidOperationException($"Unexpected failure after saving document '{savedFileName}'", e);
}
VisualStudio.ExecuteCommand(WellKnownCommandNames.Edit_Undo);
VisualStudio.Editor.Verify.TextContains(@"Sub Main(x As Integer)");
VisualStudio.Editor.Verify.CaretPosition(45);
......
......@@ -145,9 +145,11 @@ public void VerifyNotSaved()
Contract.ThrowIfTrue(GetDTE().ActiveDocument.ProjectItem.Saved);
}
public void VerifySaved()
public string VerifySaved()
{
Contract.ThrowIfFalse(GetDTE().ActiveDocument.ProjectItem.Saved);
var activeDocument = GetDTE().ActiveDocument;
Contract.ThrowIfFalse(activeDocument.ProjectItem.Saved);
return activeDocument.FullName;
}
public string GetActiveBufferName()
......
......@@ -133,6 +133,18 @@ public void WaitForAllAsyncOperations(TimeSpan timeout, params string[] featureN
GetWaitingService().WaitForAllAsyncOperations(timeout, featureNames);
}
public void WaitForAllAsyncOperationsOrFail(TimeSpan timeout, params string[] featureNames)
{
try
{
WaitForAllAsyncOperations(timeout, featureNames);
}
catch (Exception e)
{
Environment.FailFast("Terminating test process due to unrecoverable timeout.", e);
}
}
private static void WaitForProjectSystem(TimeSpan timeout)
{
var operationProgressStatus = InvokeOnUIThread(_ => GetGlobalService<SVsOperationProgress, IVsOperationProgressStatusService>());
......
......@@ -26,9 +26,9 @@ public void IsNotSaved()
_textViewWindow._editorInProc.VerifyNotSaved();
}
public void IsSaved()
public string IsSaved()
{
_textViewWindow._editorInProc.VerifySaved();
return _textViewWindow._editorInProc.VerifySaved();
}
public void CurrentLineText(
......
......@@ -48,6 +48,9 @@ public void WaitForAsyncOperations(TimeSpan timeout, string featuresToWaitFor, b
public void WaitForAllAsyncOperations(TimeSpan timeout, params string[] featureNames)
=> _inProc.WaitForAllAsyncOperations(timeout, featureNames);
public void WaitForAllAsyncOperationsOrFail(TimeSpan timeout, params string[] featureNames)
=> _inProc.WaitForAllAsyncOperationsOrFail(timeout, featureNames);
public void CleanUpWorkspace()
=> _inProc.CleanUpWorkspace();
......
......@@ -216,7 +216,7 @@ public void CleanUp()
Workspace.CleanUpWaitingService();
Workspace.CleanUpWorkspace();
SolutionExplorer.CleanUpOpenSolution();
Workspace.WaitForAllAsyncOperations(Helper.HangMitigatingTimeout);
Workspace.WaitForAllAsyncOperationsOrFail(Helper.HangMitigatingTimeout);
// Close any windows leftover from previous (failed) tests
InteractiveWindow.CloseInteractiveWindow();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册