diff --git a/test/DynamoCoreTests/PackageDependencyTests.cs b/test/DynamoCoreTests/PackageDependencyTests.cs index 854bc9e823f..d7eecd292df 100644 --- a/test/DynamoCoreTests/PackageDependencyTests.cs +++ b/test/DynamoCoreTests/PackageDependencyTests.cs @@ -8,12 +8,10 @@ using Dynamo.Graph.Workspaces; using Dynamo.Interfaces; using Dynamo.Models; -using Dynamo.PythonServices; using Dynamo.Scheduler; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NUnit.Framework; -using PythonNodeModels; namespace Dynamo.Tests { @@ -30,13 +28,6 @@ protected override void GetLibrariesToPreload(List libraries) base.GetLibrariesToPreload(libraries); } - private void UpdatePythonEngineAndRun(PythonNode pythonNode, string pythonEngineVersion) - { - pythonNode.EngineName = pythonEngineVersion; - //to kick off a run node modified must be called - pythonNode.OnNodeModified(); - } - private PackageDependencyInfo GetPackageInfo(string packageName) { var loader = GetPackageLoader(); @@ -106,69 +97,6 @@ public void ZeroTouchPackageDependencyIsCollectedAndSerialized() Assert.AreEqual(package.Nodes.Select(n => n.ToString("N")), nodes); } - [Test] - public void PythonEnginePackageDependencyIsCollectedAndSerialized() - { - // Load JSON file graph - string path = Path.Combine(TestDirectory, @"core\packageDependencyTests\PythonDependency.dyn"); - - // Assert package dependency is not already serialized to .dyn - using (StreamReader file = new StreamReader(path)) - { - var data = file.ReadToEnd(); - var json = (JObject)JsonConvert.DeserializeObject(data); - Assert.IsEmpty(json[WorkspaceReadConverter.NodeLibraryDependenciesPropString]); - } - - string packageDirectory = Path.Combine(TestDirectory, @"core\packageDependencyTests\PythonEnginePackage"); - LoadPackage(packageDirectory); - - OpenModel(path); - - //TO-DO: Force load binaries or mock the python engine instead of loading a package - //assert that default python engine was selected, and 2 different engines are loaded - var currentws = CurrentDynamoModel.CurrentWorkspace; - var pyNode = currentws.Nodes.OfType().FirstOrDefault(); - Assert.IsNotNull(pyNode); - Assert.AreEqual(pyNode.EngineName, PythonEngineManager.PythonNet3EngineName); - Assert.AreEqual(PythonEngineManager.Instance.AvailableEngines.Count, 2); - - currentws.ForceComputeWorkspaceReferences = true; - var packageDependencies = currentws.NodeLibraryDependencies; - // PythonNet3 is loaded as a default package, ww should have a single package dependency. - Assert.AreEqual(1, packageDependencies.Count); - - // Change engine to IronPython2, which is loaded as a package. - UpdatePythonEngineAndRun(pyNode, "IronPython2"); - currentws.ForceComputeWorkspaceReferences = true; - - //assert that python engine imported from a package gets added to NodeLibraryDependencies - packageDependencies = currentws.NodeLibraryDependencies; - Assert.AreEqual(1, packageDependencies.Count); - var package = packageDependencies.First(); - Assert.AreEqual(new PackageDependencyInfo("DynamoIronPython2.7", new Version("3.2.1")), package); - Assert.AreEqual(1, package.Nodes.Count); - - Assert.IsTrue(package.IsLoaded); - if (package is PackageDependencyInfo) - { - var packageDependencyState = ((PackageDependencyInfo)package).State; - Assert.AreEqual(PackageDependencyState.Loaded, packageDependencyState); - } - - // Assert package dependency is serialized - var ToJson = currentws.ToJson(CurrentDynamoModel.EngineController); - var JObject = (JObject)JsonConvert.DeserializeObject(ToJson); - var deserializedPackageDependencies = JObject[WorkspaceReadConverter.NodeLibraryDependenciesPropString]; - Assert.AreEqual(1, deserializedPackageDependencies.Count()); - var name = deserializedPackageDependencies.First()[NodeLibraryDependencyConverter.NamePropString].Value(); - Assert.AreEqual(package.Name, name); - var version = deserializedPackageDependencies.First()[NodeLibraryDependencyConverter.VersionPropString].Value(); - Assert.AreEqual(package.Version.ToString(), version); - var nodes = deserializedPackageDependencies.First()[NodeLibraryDependencyConverter.NodesPropString].Values(); - Assert.AreEqual(package.Nodes.Select(n => n.ToString("N")), nodes); - } - [Test] public void CustomNodePackageDependencyIsCollected() { diff --git a/test/Libraries/DynamoPythonTests/PythonEngineSelectorTests.cs b/test/Libraries/DynamoPythonTests/PythonEngineSelectorTests.cs index 56346a9e2aa..74414a93620 100644 --- a/test/Libraries/DynamoPythonTests/PythonEngineSelectorTests.cs +++ b/test/Libraries/DynamoPythonTests/PythonEngineSelectorTests.cs @@ -1,12 +1,16 @@ -using System; -using System.Collections; -using System.Linq; using Dynamo; +using Dynamo.Graph.Workspaces; using Dynamo.PythonServices; using Dynamo.PythonServices.EventHandlers; using Dynamo.Utilities; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using NUnit.Framework; using PythonNodeModels; +using System; +using System.Collections; +using System.IO; +using System.Linq; using static Dynamo.Models.DynamoModel; namespace DynamoPythonTests @@ -14,6 +18,13 @@ namespace DynamoPythonTests [TestFixture] class PythonEngineSelectorTests : DynamoModelTestBase { + private void UpdatePythonEngineAndRun(PythonNode pythonNode, string pythonEngineVersion) + { + pythonNode.EngineName = pythonEngineVersion; + //to kick off a run node modified must be called + pythonNode.OnNodeModified(); + } + /// /// This test will cover the use case of the API to query certain Python engine ability for evaluation /// @@ -24,6 +35,69 @@ public void TestEngineSelectorInitialization() Assert.AreEqual(false, PythonEngineManager.Instance.AvailableEngines.Any(x => x.Name == PythonEngineManager.IronPython2EngineName)); } + [Test] + public void PythonEnginePackageDependencyIsCollectedAndSerialized() + { + // Load JSON file graph + string path = Path.Combine(TestDirectory, @"core\packageDependencyTests\PythonDependency.dyn"); + + // Assert package dependency is not already serialized to .dyn + using (StreamReader file = new StreamReader(path)) + { + var data = file.ReadToEnd(); + var json = (JObject)JsonConvert.DeserializeObject(data); + Assert.IsEmpty(json[WorkspaceReadConverter.NodeLibraryDependenciesPropString]); + } + + string packageDirectory = Path.Combine(TestDirectory, @"core\packageDependencyTests\PythonEnginePackage"); + LoadPackage(packageDirectory); + + OpenModel(path); + + //TO-DO: Force load binaries or mock the python engine instead of loading a package + //assert that default python engine was selected, and 2 different engines are loaded + var currentws = CurrentDynamoModel.CurrentWorkspace; + var pyNode = currentws.Nodes.OfType().FirstOrDefault(); + Assert.IsNotNull(pyNode); + Assert.AreEqual(pyNode.EngineName, PythonEngineManager.PythonNet3EngineName); + Assert.AreEqual(PythonEngineManager.Instance.AvailableEngines.Count, 2); + + currentws.ForceComputeWorkspaceReferences = true; + var packageDependencies = currentws.NodeLibraryDependencies; + // PythonNet3 is loaded as a default package, ww should have a single package dependency. + Assert.AreEqual(1, packageDependencies.Count); + + // Change engine to IronPython2, which is loaded as a package. + UpdatePythonEngineAndRun(pyNode, "IronPython2"); + currentws.ForceComputeWorkspaceReferences = true; + + //assert that python engine imported from a package gets added to NodeLibraryDependencies + packageDependencies = currentws.NodeLibraryDependencies; + Assert.AreEqual(1, packageDependencies.Count); + var package = packageDependencies.First(); + Assert.AreEqual(new PackageDependencyInfo("DynamoIronPython2.7", new Version("3.2.1")), package); + Assert.AreEqual(1, package.Nodes.Count); + + Assert.IsTrue(package.IsLoaded); + if (package is PackageDependencyInfo) + { + var packageDependencyState = ((PackageDependencyInfo)package).State; + Assert.AreEqual(PackageDependencyState.Loaded, packageDependencyState); + } + + // Assert package dependency is serialized + var ToJson = currentws.ToJson(CurrentDynamoModel.EngineController); + var JObject = (JObject)JsonConvert.DeserializeObject(ToJson); + var deserializedPackageDependencies = JObject[WorkspaceReadConverter.NodeLibraryDependenciesPropString]; + Assert.AreEqual(1, deserializedPackageDependencies.Count()); + var name = deserializedPackageDependencies.First()[NodeLibraryDependencyConverter.NamePropString].Value(); + Assert.AreEqual(package.Name, name); + var version = deserializedPackageDependencies.First()[NodeLibraryDependencyConverter.VersionPropString].Value(); + Assert.AreEqual(package.Version.ToString(), version); + var nodes = deserializedPackageDependencies.First()[NodeLibraryDependencyConverter.NodesPropString].Values(); + Assert.AreEqual(package.Nodes.Select(n => n.ToString("N")), nodes); + } + [Test] public void CanCopydAndPasteAndUndoPythonEngine() {