未验证 提交 ca4bd713 编写于 作者: D dotnet-automerge-bot 提交者: GitHub

Merge pull request #33787 from dotnet/merges/dev16.0-to-master

Merge dev16.0 to master
......@@ -12,6 +12,16 @@ namespace Microsoft.VisualStudio.IntegrationTest.Setup
public class TestExtensionErrorHandler : IExtensionErrorHandler
{
public void HandleError(object sender, Exception exception)
=> FatalError.Report(exception);
{
if (exception is ArgumentOutOfRangeException argumentOutOfRangeException
&& argumentOutOfRangeException.ParamName == "index"
&& argumentOutOfRangeException.StackTrace.Contains("Microsoft.NodejsTools.Repl.ReplOutputClassifier.GetClassificationSpans"))
{
// Known issue https://github.com/Microsoft/nodejstools/issues/2138
return;
}
FatalError.Report(exception);
}
}
}
......@@ -35,22 +35,18 @@ public sealed class VisualStudioInstanceFactory : IDisposable
/// </summary>
private static bool _firstLaunch = true;
static VisualStudioInstanceFactory()
public VisualStudioInstanceFactory()
{
var majorVsProductVersion = VsProductVersion.Split('.')[0];
AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolveHandler;
AppDomain.CurrentDomain.FirstChanceException += FirstChanceExceptionHandler;
var majorVsProductVersion = VsProductVersion.Split('.')[0];
if (int.Parse(majorVsProductVersion) < 15)
{
throw new PlatformNotSupportedException("The Visual Studio Integration Test Framework is only supported on Visual Studio 15.0 and later.");
}
}
public VisualStudioInstanceFactory()
{
AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolveHandler;
AppDomain.CurrentDomain.FirstChanceException += FirstChanceExceptionHandler;
}
private static void FirstChanceExceptionHandler(object sender, FirstChanceExceptionEventArgs eventArgs)
{
if (s_inHandler)
......@@ -77,7 +73,7 @@ private static void FirstChanceExceptionHandler(object sender, FirstChanceExcept
baseFileName = $"{DateTime.UtcNow:HH.mm.ss}-{testName}-{eventArgs.Exception.GetType().Name}";
}
ScreenshotService.TakeScreenshot(Path.Combine(logDir, $"{baseFileName}.png"));
Directory.CreateDirectory(logDir);
var exception = eventArgs.Exception;
File.WriteAllText(
......@@ -86,6 +82,8 @@ private static void FirstChanceExceptionHandler(object sender, FirstChanceExcept
EventLogCollector.TryWriteDotNetEntriesToFile(Path.Combine(logDir, $"{baseFileName}.DotNet.log"));
EventLogCollector.TryWriteWatsonEntriesToFile(Path.Combine(logDir, $"{baseFileName}.Watson.log"));
ScreenshotService.TakeScreenshot(Path.Combine(logDir, $"{baseFileName}.png"));
}
finally
{
......@@ -326,6 +324,10 @@ private static Process StartNewVisualStudioProcess(string installationPath, int
// Disable roaming settings to avoid interference from the online user profile
Process.Start(vsRegEditExeFile, $"set \"{installationPath}\" {Settings.Default.VsRootSuffix} HKCU \"ApplicationPrivateSettings\\Microsoft\\VisualStudio\" RoamingEnabled string \"1*System.Boolean*False\"").WaitForExit();
// Disable text editor error reporting because it pops up a dialog. We want to either fail fast in our
// custom handler or fail silently and continue testing.
Process.Start(vsRegEditExeFile, $"set \"{installationPath}\" {Settings.Default.VsRootSuffix} HKCU \"Text Editor\" \"Report Exceptions\" dword 0").WaitForExit();
_firstLaunch = false;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册