From 20c24a0b36887e636ea662a4505afa6863d0cebe Mon Sep 17 00:00:00 2001 From: Troy Dai Date: Tue, 12 Apr 2016 14:32:45 -0700 Subject: [PATCH] Send DependencyDiagnostics after Dependencies message --- .../ProjectManager.cs | 2 +- .../DthTests.cs | 71 ++++++++++++++----- 2 files changed, 55 insertions(+), 18 deletions(-) diff --git a/src/dotnet/commands/dotnet-projectmodel-server/ProjectManager.cs b/src/dotnet/commands/dotnet-projectmodel-server/ProjectManager.cs index 823c93d90..577dcbac7 100644 --- a/src/dotnet/commands/dotnet-projectmodel-server/ProjectManager.cs +++ b/src/dotnet/commands/dotnet-projectmodel-server/ProjectManager.cs @@ -54,9 +54,9 @@ namespace Microsoft.DotNet.ProjectModel.Server _messengers = new List> { - new DependencyDiagnosticsMessenger(Transmit), new ReferencesMessenger(Transmit), new DependenciesMessenger(Transmit), + new DependencyDiagnosticsMessenger(Transmit), new CompilerOptionsMessenger(Transmit), new SourcesMessenger(Transmit) }; diff --git a/test/dotnet-projectmodel-server.Tests/DthTests.cs b/test/dotnet-projectmodel-server.Tests/DthTests.cs index 8780cf02c..1570ddf21 100644 --- a/test/dotnet-projectmodel-server.Tests/DthTests.cs +++ b/test/dotnet-projectmodel-server.Tests/DthTests.cs @@ -80,6 +80,43 @@ namespace Microsoft.DotNet.ProjectModel.Server.Tests } } + [Fact] + public void DependencyDiagnsoticsAfterDependencies() + { + var projectPath = Path.Combine(_testAssetsManager.AssetsRoot, "EmptyConsoleApp"); + Assert.NotNull(projectPath); + + using (var server = new DthTestServer(_loggerFactory)) + using (var client = new DthTestClient(server, _loggerFactory)) + { + client.Initialize(projectPath); + var messages = client.DrainAllMessages() + .Select(message => message.MessageType) + .ToArray(); + + var expectDependencies = true; + var expectDependencyDiagnostics = false; + for (var i = 0; i < messages.Length; ++i) + { + if (messages[i] == MessageTypes.Dependencies) + { + Assert.True(expectDependencies); + expectDependencies = false; + expectDependencyDiagnostics = true; + } + else if (messages[i] == MessageTypes.DependencyDiagnostics) + { + Assert.True(expectDependencyDiagnostics); + expectDependencyDiagnostics = false; + break; + } + } + + Assert.False(expectDependencies); + Assert.False(expectDependencyDiagnostics); + } + } + [Theory] [InlineData(4, 4)] [InlineData(5, 4)] @@ -195,19 +232,19 @@ namespace Microsoft.DotNet.ProjectModel.Server.Tests client.Initialize(movedProjectPath); - client.DrainTillFirst("DependencyDiagnostics") - .RetrieveDependencyDiagnosticsCollection() - .RetrieveDependencyDiagnosticsErrorAt(0) - .AssertProperty("FormattedMessage", message => message.Contains("error NU1002")) - .RetrievePropertyAs("Source") - .AssertProperty("Name", "EmptyLibrary"); - client.DrainTillFirst("Dependencies") .RetrieveDependency("EmptyLibrary") .AssertProperty("Errors", errorsArray => errorsArray.Count == 1) .AssertProperty("Warnings", warningsArray => warningsArray.Count == 0) .AssertProperty("Name", "EmptyLibrary") .AssertProperty("Resolved", false); + + client.DrainTillFirst("DependencyDiagnostics") + .RetrieveDependencyDiagnosticsCollection() + .RetrieveDependencyDiagnosticsErrorAt(0) + .AssertProperty("FormattedMessage", message => message.Contains("error NU1002")) + .RetrievePropertyAs("Source") + .AssertProperty("Name", "EmptyLibrary"); } } @@ -230,17 +267,17 @@ namespace Microsoft.DotNet.ProjectModel.Server.Tests .RetrievePropertyAs("ProjectSearchPaths") .AssertJArrayCount(2); - client.DrainTillFirst("DependencyDiagnostics") - .RetrievePayloadAs() - .AssertProperty("Errors", array => array.Count == 0) - .AssertProperty("Warnings", array => array.Count == 0); - client.DrainTillFirst("Dependencies") .RetrieveDependency("Newtonsoft.Json") .AssertProperty("Type", "Project") .AssertProperty("Resolved", true) .AssertProperty("Errors", array => array.Count == 0, _ => "Dependency shouldn't contain any error."); + client.DrainTillFirst("DependencyDiagnostics") + .RetrievePayloadAs() + .AssertProperty("Errors", array => array.Count == 0) + .AssertProperty("Warnings", array => array.Count == 0); + // Overwrite the global.json to remove search path to ext File.WriteAllText( Path.Combine(projectPath, "home", GlobalSettings.FileName), @@ -254,11 +291,6 @@ namespace Microsoft.DotNet.ProjectModel.Server.Tests .AssertJArrayCount(1) .AssertJArrayElement(0, Path.Combine(projectPath, "home", "src")); - client.DrainTillFirst("DependencyDiagnostics") - .RetrieveDependencyDiagnosticsCollection() - .RetrieveDependencyDiagnosticsErrorAt(0) - .AssertProperty("ErrorCode", "NU1010"); - client.DrainTillFirst("Dependencies") .RetrieveDependency("Newtonsoft.Json") .AssertProperty("Type", "") @@ -267,6 +299,11 @@ namespace Microsoft.DotNet.ProjectModel.Server.Tests .AssertJArrayCount(1) .RetrieveArraryElementAs(0) .AssertProperty("ErrorCode", "NU1010"); + + client.DrainTillFirst("DependencyDiagnostics") + .RetrieveDependencyDiagnosticsCollection() + .RetrieveDependencyDiagnosticsErrorAt(0) + .AssertProperty("ErrorCode", "NU1010"); } }