From 5f2f7ebe3107483c291ed2a17d041aa4a103264f Mon Sep 17 00:00:00 2001 From: filipw Date: Tue, 24 Nov 2020 22:20:04 +0100 Subject: [PATCH] added a test for analyzer preservation --- .../ProjectWithAnalyzersTests.cs | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/OmniSharp.MSBuild.Tests/ProjectWithAnalyzersTests.cs b/tests/OmniSharp.MSBuild.Tests/ProjectWithAnalyzersTests.cs index 309405bb8d..225335ce6a 100644 --- a/tests/OmniSharp.MSBuild.Tests/ProjectWithAnalyzersTests.cs +++ b/tests/OmniSharp.MSBuild.Tests/ProjectWithAnalyzersTests.cs @@ -122,6 +122,35 @@ public async Task WhenProjectEditorConfigIsChangedThenAnalyzerConfigurationUpdat } } + [Fact] + public async Task WhenProjectChangesAnalyzerConfigurationIsPreserved() + { + var emitter = new ProjectLoadTestEventEmitter(); + + using (var testProject = await TestAssets.Instance.GetTestProjectAsync("ProjectWithAnalyzersAndEditorConfig")) + using (var host = CreateMSBuildTestHost( + testProject.Directory, + emitter.AsExportDescriptionProvider(LoggerFactory), + TestHelpers.GetConfigurationDataWithAnalyzerConfig(roslynAnalyzersEnabled: true, editorConfigEnabled: true))) + { + var initialProject = host.Workspace.CurrentSolution.Projects.Single(); + + var analyzerConfigDocument = initialProject.AnalyzerConfigDocuments.Single(); + + var firstDiagnosticsSet = await host.RequestCodeCheckAsync(Path.Combine(testProject.Directory, "Program.cs")); + Assert.NotEmpty(firstDiagnosticsSet.QuickFixes); + Assert.Contains(firstDiagnosticsSet.QuickFixes.OfType(), x => x.Id == "IDE0005" && x.LogLevel == "Error"); + + // report reloading of a project + await NotifyFileChanged(host, initialProject.FilePath); + emitter.WaitForProjectUpdate(); + + var secondDiagnosticsSet = await host.RequestCodeCheckAsync(Path.Combine(testProject.Directory, "Program.cs")); + Assert.NotEmpty(secondDiagnosticsSet.QuickFixes); + Assert.Contains(secondDiagnosticsSet.QuickFixes.OfType(), x => x.Id == "IDE0005" && x.LogLevel == "Error"); + } + } + [Fact] public async Task WhenProjectIsLoadedThenItContainsAnalyzerConfigurationFromParentFolder() {