public void DthCompilation_GetDiagnostics_OnEmptyConsoleApp() { var projectPath = _testHelper.FindSampleProject("EmptyConsoleApp"); Assert.NotNull(projectPath); using (var server = new DthTestServer(_testHelper.LoggerFactory)) using (var client = new DthTestClient(server)) { // Drain the inital messages client.Initialize(projectPath); client.SendPayLoad(projectPath, "GetDiagnostics"); var diagnosticsGroup = client.DrainTillFirst("AllDiagnostics") .EnsureSource(server, client) .RetrievePayloadAs <JArray>() .AssertJArrayCount(3); foreach (var group in diagnosticsGroup) { group.AsJObject() .AssertProperty <JArray>("Errors", errorsArray => !errorsArray.Any()) .AssertProperty <JArray>("Warnings", warningsArray => !warningsArray.Any()); } } }
public void DthDependencies_UpdateGlobalJson_RefreshDependencies() { var assets = new TestAssetsManager(Path.Combine(AppContext.BaseDirectory, "TestAssets", "ProjectModelServer")); var projectPath = assets.CreateTestInstance("DthUpdateSearchPathSample").WithLockFiles().TestRoot; Assert.True(Directory.Exists(projectPath)); using (var server = new DthTestServer(_loggerFactory)) using (var client = new DthTestClient(server, _loggerFactory)) { var testProject = Path.Combine(projectPath, "home", "src", "MainProject"); client.Initialize(testProject); client.DrainTillFirst("ProjectInformation") .RetrievePayloadAs <JObject>() .RetrievePropertyAs <JArray>("ProjectSearchPaths") .AssertJArrayCount(2); client.DrainTillFirst("DependencyDiagnostics") .RetrievePayloadAs <JObject>() .AssertProperty <JArray>("Errors", array => array.Count == 0) .AssertProperty <JArray>("Warnings", array => array.Count == 0); client.DrainTillFirst("Dependencies") .RetrieveDependency("Newtonsoft.Json") .AssertProperty("Type", "Project") .AssertProperty("Resolved", true) .AssertProperty <JArray>("Errors", array => array.Count == 0, _ => "Dependency shouldn't contain any error."); // Overwrite the global.json to remove search path to ext File.WriteAllText( Path.Combine(projectPath, "home", GlobalSettings.FileName), JsonConvert.SerializeObject(new { project = new string[] { "src" } })); client.SendPayLoad(testProject, "RefreshDependencies"); client.DrainTillFirst("ProjectInformation") .RetrievePayloadAs <JObject>() .RetrievePropertyAs <JArray>("ProjectSearchPaths") .AssertJArrayCount(1) .AssertJArrayElement(0, Path.Combine(projectPath, "home", "src")); client.DrainTillFirst("DependencyDiagnostics") .RetrieveDependencyDiagnosticsCollection() .RetrieveDependencyDiagnosticsErrorAt <JObject>(0) .AssertProperty("ErrorCode", "NU1010"); client.DrainTillFirst("Dependencies") .RetrieveDependency("Newtonsoft.Json") .AssertProperty("Type", "") .AssertProperty("Resolved", false) .RetrievePropertyAs <JArray>("Errors") .AssertJArrayCount(1) .RetrieveArraryElementAs <JObject>(0) .AssertProperty("ErrorCode", "NU1010"); } }
public void RecoverFromGlobalError() { var testProject = _testAssetsManager.CreateTestInstance("EmptyConsoleApp") .WithLockFiles() .TestRoot; using (var server = new DthTestServer(_loggerFactory)) using (var client = new DthTestClient(server, _loggerFactory)) { var projectFile = Path.Combine(testProject, Project.FileName); var content = File.ReadAllText(projectFile); File.WriteAllText(projectFile, content + "}"); client.Initialize(testProject); var messages = client.DrainAllMessages(); messages.ContainsMessage(MessageTypes.Error); File.WriteAllText(projectFile, content); client.SendPayLoad(testProject, MessageTypes.FilesChanged); var clearError = client.DrainTillFirst(MessageTypes.Error); clearError.Payload.AsJObject().AssertProperty("Message", null as string); } }
public void DthDependencies_UpdateGlobalJson_RefreshDependencies() { var assets = new TestAssetsManager(Path.Combine(AppContext.BaseDirectory, "TestAssets", "ProjectModelServer")); var projectPath = assets.CreateTestInstance("DthUpdateSearchPathSample").WithLockFiles().TestRoot; Assert.True(Directory.Exists(projectPath)); using (var server = new DthTestServer(_loggerFactory)) using (var client = new DthTestClient(server)) { var testProject = Path.Combine(projectPath, "home", "src", "MainProject"); client.Initialize(testProject); client.DrainTillFirst("ProjectInformation") .RetrievePayloadAs<JObject>() .RetrievePropertyAs<JArray>("ProjectSearchPaths") .AssertJArrayCount(2); client.DrainTillFirst("DependencyDiagnostics") .RetrievePayloadAs<JObject>() .AssertProperty<JArray>("Errors", array => array.Count == 0) .AssertProperty<JArray>("Warnings", array => array.Count == 0); client.DrainTillFirst("Dependencies") .RetrieveDependency("Newtonsoft.Json") .AssertProperty("Type", "Project") .AssertProperty("Resolved", true) .AssertProperty<JArray>("Errors", array => array.Count == 0, _ => "Dependency shouldn't contain any error."); // Overwrite the global.json to remove search path to ext File.WriteAllText( Path.Combine(projectPath, "home", GlobalSettings.FileName), JsonConvert.SerializeObject(new { project = new string[] { "src" } })); client.SendPayLoad(testProject, "RefreshDependencies"); client.DrainTillFirst("ProjectInformation") .RetrievePayloadAs<JObject>() .RetrievePropertyAs<JArray>("ProjectSearchPaths") .AssertJArrayCount(1) .AssertJArrayElement(0, Path.Combine(projectPath, "home", "src")); client.DrainTillFirst("DependencyDiagnostics") .RetrieveDependencyDiagnosticsCollection() .RetrieveDependencyDiagnosticsErrorAt<JObject>(0) .AssertProperty("ErrorCode", "NU1010"); client.DrainTillFirst("Dependencies") .RetrieveDependency("Newtonsoft.Json") .AssertProperty("Type", "") .AssertProperty("Resolved", false) .RetrievePropertyAs<JArray>("Errors") .AssertJArrayCount(1) .RetrieveArraryElementAs<JObject>(0) .AssertProperty("ErrorCode", "NU1010"); } }
public void RemoveMSBuildDependencyFromProjectJson() { // Remove a msbuild project dependency from project.json and then request refreshing dependency before // restore. var tam = new TestAssetsManager( Path.Combine(RepoRoot, "TestAssets", "ProjectModelServer", "MSBuildReferencesProjects")); // var appName = "EmptyNetCoreApp"; var projectPath = tam.CreateTestInstance("ValidCase01").WithLockFiles().TestRoot; projectPath = Path.Combine(projectPath, "src", "MainApp"); using (var server = new DthTestServer(_loggerFactory)) using (var client = new DthTestClient(server, _loggerFactory)) { client.Initialize(projectPath); client.DrainAllMessages() .AssertDoesNotContain(MessageTypes.Error) .RetrieveSingleMessage(MessageTypes.Dependencies) .RetrieveDependency("MainApp") .RetrievePropertyAs<JArray>("Dependencies") .AssertJArrayContains<JObject>(dep => dep["Name"].Value<string>() == "ClassLibrary1") .AssertJArrayContains<JObject>(dep => dep["Name"].Value<string>() == "ClassLibrary2") .AssertJArrayContains<JObject>(dep => dep["Name"].Value<string>() == "ClassLibrary3"); var projectFilePath = Path.Combine(projectPath, Project.FileName); var projectJson = JsonConvert.DeserializeObject<JObject>(File.ReadAllText(projectFilePath)); // Remove ClassLibrary2 and ClassLibrary3 dependency var dependencies = projectJson["frameworks"]["net46"]["dependencies"] as JObject; dependencies.Remove("ClassLibrary2"); dependencies.Remove("ClassLibrary3"); File.WriteAllText(projectFilePath, JsonConvert.SerializeObject(projectJson)); client.SendPayLoad(projectPath, MessageTypes.RefreshDependencies); var afterDependencies = client.DrainTillFirst(MessageTypes.Dependencies); afterDependencies.RetrieveDependency("MainApp") .RetrievePropertyAs<JArray>("Dependencies") .AssertJArrayNotContains<JObject>(dep => dep["Name"].Value<string>() == "ClassLibrary2") .AssertJArrayNotContains<JObject>(dep => dep["Name"].Value<string>() == "ClassLibrary3"); afterDependencies.RetrieveDependency("ClassLibrary2"); afterDependencies.RetrieveDependency("ClassLibrary3"); } }
public void RemovePackageDependencyFromProjectJson() { // Remove a package dependency from project.json and then request refreshing dependency before // restore. var appName = "EmptyNetCoreApp"; var projectPath = _testAssetsManager.CreateTestInstance(appName) .WithLockFiles() .TestRoot; using (var server = new DthTestServer(_loggerFactory)) using (var client = new DthTestClient(server, _loggerFactory)) { client.Initialize(projectPath); client.DrainAllMessages() .AssertDoesNotContain(MessageTypes.Error) .RetrieveSingleMessage(MessageTypes.Dependencies) .RetrieveDependency(appName) .RetrievePropertyAs<JArray>("Dependencies") .AssertJArrayCount(2); var projectFilePath = Path.Combine(projectPath, Project.FileName); var projectJson = JsonConvert.DeserializeObject<JObject>(File.ReadAllText(projectFilePath)); // Remove newtonsoft.json dependency var dependencies = projectJson["frameworks"]["netcoreapp1.0"]["dependencies"] as JObject; dependencies.Remove("Newtonsoft.Json"); File.WriteAllText(projectFilePath, JsonConvert.SerializeObject(projectJson)); client.SendPayLoad(projectPath, MessageTypes.RefreshDependencies); var afterDependencies = client.DrainTillFirst(MessageTypes.Dependencies); afterDependencies.RetrieveDependency(appName) .RetrievePropertyAs<JArray>("Dependencies") .AssertJArrayCount(1) .RetrieveArraryElementAs<JObject>(0) .AssertProperty("Name", "Microsoft.NETCore.App"); afterDependencies.RetrieveDependency("Newtonsoft.Json"); } }