From f5a1f7f78e164f30bf65a13b18c7264c880ef2e2 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Thu, 5 Jun 2025 08:53:53 -0700 Subject: [PATCH] Track changed text instead of clearing immediate window. --- .../New.IntegrationTests/CSharp/CSharpImmediate.cs | 9 +++++---- .../New.IntegrationTests/VisualBasic/BasicImmediate.cs | 7 ++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/VisualStudio/IntegrationTest/New.IntegrationTests/CSharp/CSharpImmediate.cs b/src/VisualStudio/IntegrationTest/New.IntegrationTests/CSharp/CSharpImmediate.cs index d67a67dea5fcb..04001f04d0cc7 100644 --- a/src/VisualStudio/IntegrationTest/New.IntegrationTests/CSharp/CSharpImmediate.cs +++ b/src/VisualStudio/IntegrationTest/New.IntegrationTests/CSharp/CSharpImmediate.cs @@ -47,12 +47,13 @@ static void Main(string[] args) await TestServices.Debugger.SetBreakpointAsync(ProjectName, "Program.cs", "}", HangMitigatingCancellationToken); await TestServices.Debugger.GoAsync(waitForBreakMode: true, HangMitigatingCancellationToken); await TestServices.ImmediateWindow.ShowAsync(HangMitigatingCancellationToken); - await TestServices.ImmediateWindow.ClearAllAsync(HangMitigatingCancellationToken); - await TestServices.Input.SendWithoutActivateAsync("?n", HangMitigatingCancellationToken); + var existingText = await TestServices.ImmediateWindow.GetTextAsync(HangMitigatingCancellationToken); await TestServices.Workspace.WaitForAsyncOperationsAsync(FeatureAttribute.CompletionSet, HangMitigatingCancellationToken); - await TestServices.Input.SendWithoutActivateAsync(["1", VirtualKeyCode.TAB, VirtualKeyCode.RETURN], HangMitigatingCancellationToken); + await TestServices.Input.SendWithoutActivateAsync("?", HangMitigatingCancellationToken); + await TestServices.Input.SendWithoutActivateAsync(["n1", VirtualKeyCode.TAB, VirtualKeyCode.RETURN], HangMitigatingCancellationToken); + var immediateText = await TestServices.ImmediateWindow.GetTextAsync(HangMitigatingCancellationToken); // Skip checking the EE result "42" (see https://github.com/dotnet/roslyn/issues/75456), without // skipping the test completely (see https://github.com/dotnet/roslyn/issues/75478). - Assert.Contains("?n1Var\r\n", await TestServices.ImmediateWindow.GetTextAsync(HangMitigatingCancellationToken)); + Assert.Contains("?n1Var\r\n", immediateText.Substring(existingText.Length)); } } diff --git a/src/VisualStudio/IntegrationTest/New.IntegrationTests/VisualBasic/BasicImmediate.cs b/src/VisualStudio/IntegrationTest/New.IntegrationTests/VisualBasic/BasicImmediate.cs index 7503f233d8c17..3081cfb95799e 100644 --- a/src/VisualStudio/IntegrationTest/New.IntegrationTests/VisualBasic/BasicImmediate.cs +++ b/src/VisualStudio/IntegrationTest/New.IntegrationTests/VisualBasic/BasicImmediate.cs @@ -45,12 +45,13 @@ End Module await TestServices.Debugger.SetBreakpointAsync(ProjectName, "Module1.vb", "End Sub", HangMitigatingCancellationToken); await TestServices.Debugger.GoAsync(waitForBreakMode: true, HangMitigatingCancellationToken); await TestServices.ImmediateWindow.ShowAsync(HangMitigatingCancellationToken); - await TestServices.ImmediateWindow.ClearAllAsync(HangMitigatingCancellationToken); - await TestServices.Input.SendWithoutActivateAsync("?", HangMitigatingCancellationToken); + var existingText = await TestServices.ImmediateWindow.GetTextAsync(HangMitigatingCancellationToken); await TestServices.Workspace.WaitForAsyncOperationsAsync(FeatureAttribute.CompletionSet, HangMitigatingCancellationToken); + await TestServices.Input.SendWithoutActivateAsync("?", HangMitigatingCancellationToken); await TestServices.Input.SendWithoutActivateAsync(["n1", VirtualKeyCode.TAB, VirtualKeyCode.RETURN], HangMitigatingCancellationToken); + var immediateText = await TestServices.ImmediateWindow.GetTextAsync(HangMitigatingCancellationToken); // Skip checking the EE result "42" (see https://github.com/dotnet/roslyn/issues/75456), without // skipping the test completely (see https://github.com/dotnet/roslyn/issues/75478). - Assert.Contains("?n1Var\r\n", await TestServices.ImmediateWindow.GetTextAsync(HangMitigatingCancellationToken)); + Assert.Contains("?n1Var\r\n", immediateText.Substring(existingText.Length)); } }