From dd66b72f34da8c701815a6f33a5eb4b358d24920 Mon Sep 17 00:00:00 2001 From: Shen Chen Date: Tue, 12 Dec 2023 11:57:01 -0800 Subject: [PATCH] Add test --- .../CSharp/CSharpRename.cs | 53 ++++++++++++++++++- .../InProcess/SolutionExplorerInProcess.cs | 2 +- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/VisualStudio/IntegrationTest/New.IntegrationTests/CSharp/CSharpRename.cs b/src/VisualStudio/IntegrationTest/New.IntegrationTests/CSharp/CSharpRename.cs index 3b0c78c162059..2f43d3d0c4811 100644 --- a/src/VisualStudio/IntegrationTest/New.IntegrationTests/CSharp/CSharpRename.cs +++ b/src/VisualStudio/IntegrationTest/New.IntegrationTests/CSharp/CSharpRename.cs @@ -9,7 +9,6 @@ using Microsoft.CodeAnalysis.Editor.InlineRename; using Microsoft.CodeAnalysis.InlineRename; using Microsoft.CodeAnalysis.Options; -using Microsoft.CodeAnalysis.Shared.TestHooks; using Microsoft.CodeAnalysis.Test.Utilities; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.IntegrationTest.Utilities; @@ -719,5 +718,57 @@ public class Class2 public int LongOtherStuff$$Field; }", HangMitigatingCancellationToken); } + + [IdeFact] + public async Task VerifyRenameLinkedDocumentsAsync() + { + var projectName = "MultiTFMProject"; + await TestServices.SolutionExplorer.AddCustomProjectAsync(projectName, ".csproj", @" + + + Exe + net6.0-windows;net48 + enable + enable + preview + + +", HangMitigatingCancellationToken); + + var startCode = @" +public class TestClass +{ +} +"; + await TestServices.SolutionExplorer.AddFileAsync(projectName, "TestClass.cs", startCode, cancellationToken: HangMitigatingCancellationToken); + + var referencedCode = @" +public class MyClass +{ + void Method() + { + TestClass x = new TestClass(); + } +}"; + await TestServices.SolutionExplorer.AddFileAsync(projectName, "MyClass.cs", referencedCode, cancellationToken: HangMitigatingCancellationToken); + + await TestServices.SolutionExplorer.OpenFileAsync(projectName, "TestClass.cs", HangMitigatingCancellationToken); + await TestServices.SolutionExplorer.OpenFileAsync(projectName, "MyClass.cs", HangMitigatingCancellationToken); + await TestServices.Editor.PlaceCaretAsync("TestClass", charsOffset: 0, HangMitigatingCancellationToken); + await TestServices.InlineRename.InvokeAsync(HangMitigatingCancellationToken); + await TestServices.Input.SendWithoutActivateAsync([VirtualKeyCode.HOME, "M", "y", VirtualKeyCode.RETURN], HangMitigatingCancellationToken); + await TestServices.Workspace.WaitForRenameAsync(HangMitigatingCancellationToken); + await TestServices.EditorVerifier.TextEqualsAsync( + @" +public class MyClass +{ + void Method() + { + MyTestClass x = new MyTestClass(); + } +}", HangMitigatingCancellationToken); + // Make sure the file is renamed. + await TestServices.SolutionExplorer.GetProjectItemAsync(projectName, "./MyTestClass.cs", HangMitigatingCancellationToken); + } } } diff --git a/src/VisualStudio/IntegrationTest/New.IntegrationTests/InProcess/SolutionExplorerInProcess.cs b/src/VisualStudio/IntegrationTest/New.IntegrationTests/InProcess/SolutionExplorerInProcess.cs index 9d73b7bbd98c4..1db6be3be6c1b 100644 --- a/src/VisualStudio/IntegrationTest/New.IntegrationTests/InProcess/SolutionExplorerInProcess.cs +++ b/src/VisualStudio/IntegrationTest/New.IntegrationTests/InProcess/SolutionExplorerInProcess.cs @@ -567,7 +567,7 @@ public async Task RenameFileAsync(string projectName, string oldFileName, string projectItem.Name = newFileName; } - private async Task GetProjectItemAsync(string projectName, string relativeFilePath, CancellationToken cancellationToken) + public async Task GetProjectItemAsync(string projectName, string relativeFilePath, CancellationToken cancellationToken) { await JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);