public void GetOwnerPackageReturnsPackageForValidFunctionDefinition() { var loader = new PackageLoader(PackagesDirectory); loader.RequestLoadCustomNodeDirectory += (dir) => this.CurrentDynamoModel.CustomNodeManager.AddUninitializedCustomNodesInPath(dir, true); loader.LoadAll(new LoadPackageParams { Preferences = this.CurrentDynamoModel.PreferenceSettings }); var pkg = loader.LocalPackages.FirstOrDefault(x => x.Name == "Custom Rounding"); Assert.AreEqual(3, pkg.LoadedCustomNodes.Count); foreach (var nodeInfo in pkg.LoadedCustomNodes) { CustomNodeDefinition funcDef; Assert.IsTrue(this.CurrentDynamoModel.CustomNodeManager.TryGetFunctionDefinition(nodeInfo.FunctionId, true, out funcDef)); Assert.IsNotNull(funcDef); var foundPkg = loader.GetOwnerPackage(nodeInfo); Assert.IsNotNull(foundPkg); Assert.AreEqual(pkg.Name, foundPkg.Name); Assert.IsTrue(pkg.Name == foundPkg.Name); } }
public void LoadingConflictingCustomNodePackageDoesNotGetLoaded() { var loader = new PackageLoader(PackagesDirectory); var libraryLoader = new ExtensionLibraryLoader(CurrentDynamoModel); loader.PackagesLoaded += libraryLoader.LoadPackages; loader.RequestLoadNodeLibrary += (libraryLoader as ExtensionLibraryLoader).LoadLibraryAndSuppressZTSearchImport; // This test needs the "isTestMode" flag to be turned off as an exception to be able // to test duplicate custom node def loading. loader.RequestLoadCustomNodeDirectory += (dir, pkgInfo) => CurrentDynamoModel.CustomNodeManager.AddUninitializedCustomNodesInPath(dir, isTestMode: false, packageInfo: pkgInfo); loader.LoadAll(new LoadPackageParams { Preferences = CurrentDynamoModel.PreferenceSettings, PathManager = CurrentDynamoModel.PathManager }); // There are 18 packages in "Dynamo\test\pkgs" Assert.AreEqual(18, loader.LocalPackages.Count()); var entries = CurrentDynamoModel.SearchModel.SearchEntries.OfType <CustomNodeSearchElement>(); // Check that conflicting custom node package "EvenOdd2" is not installed Assert.IsTrue(entries.Count(x => Path.GetDirectoryName(x.Path).EndsWith(@"EvenOdd2\dyf")) == 0); Assert.IsTrue(entries.Count(x => Path.GetDirectoryName(x.Path).EndsWith(@"EvenOdd\dyf") && x.FullName == "Test.EvenOdd") == 1); }
public void GetOwnerPackageReturnsPackageForValidFunctionDefinition() { var loader = new PackageLoader(PackagesDirectory); loader.RequestLoadCustomNodeDirectory += (dir, pkgInfo) => this.CurrentDynamoModel.CustomNodeManager.AddUninitializedCustomNodesInPath(dir, true, pkgInfo); loader.LoadAll(new LoadPackageParams { Preferences = this.CurrentDynamoModel.PreferenceSettings }); var pkg = loader.LocalPackages.FirstOrDefault(x => x.Name == "Custom Rounding"); Assert.AreEqual(3, pkg.LoadedCustomNodes.Count); foreach (var nodeInfo in pkg.LoadedCustomNodes) { CustomNodeDefinition funcDef; Assert.IsTrue(this.CurrentDynamoModel.CustomNodeManager.TryGetFunctionDefinition(nodeInfo.FunctionId, true, out funcDef)); Assert.IsNotNull(funcDef); var foundPkg = loader.GetOwnerPackage(nodeInfo); Assert.IsNotNull(foundPkg); Assert.AreEqual(pkg.Name, foundPkg.Name); Assert.IsTrue(pkg.Name == foundPkg.Name); } }
public void LoadingCustomNodeFromPackageSetsNodeInfoPackageInfoCorrectly() { var loader = new PackageLoader(PackagesDirectory); var libraryLoader = new ExtensionLibraryLoader(CurrentDynamoModel); loader.PackagesLoaded += libraryLoader.LoadPackages; loader.RequestLoadNodeLibrary += (libraryLoader as ExtensionLibraryLoader).LoadLibraryAndSuppressZTSearchImport; // This test needs the "isTestMode" flag to be turned off as an exception to be able // to test duplicate custom node def loading. loader.RequestLoadCustomNodeDirectory += (dir, pkgInfo) => CurrentDynamoModel.CustomNodeManager.AddUninitializedCustomNodesInPath(dir, isTestMode: false, packageInfo: pkgInfo); loader.LoadAll(new LoadPackageParams { Preferences = CurrentDynamoModel.PreferenceSettings, PathManager = CurrentDynamoModel.PathManager }); var packageInfo = new PackageInfo("EvenOdd", new System.Version(1, 0, 0)); var matchingNodes = CurrentDynamoModel.CustomNodeManager.NodeInfos.Where(x => x.Value.PackageInfo.Equals(packageInfo)).ToList(); //the node should have the correct package info and should be marked a packageMember. Assert.AreEqual(1, matchingNodes.Count); Assert.IsTrue(matchingNodes.All(x => x.Value.IsPackageMember == true)); }
public void LoadingPackageDoesNotAffectLoadedSearchEntries() { var loader = new PackageLoader(PackagesDirectory); var libraryLoader = new ExtensionLibraryLoader(CurrentDynamoModel); loader.PackagesLoaded += libraryLoader.LoadPackages; loader.RequestLoadNodeLibrary += (libraryLoader as ExtensionLibraryLoader).LoadLibraryAndSuppressZTSearchImport; loader.LoadAll(new LoadPackageParams { Preferences = CurrentDynamoModel.PreferenceSettings, PathManager = CurrentDynamoModel.PathManager }); // There are 18 packages in "Dynamo\test\pkgs" Assert.AreEqual(18, loader.LocalPackages.Count()); // Simulate loading new package from PM string packageDirectory = Path.Combine(TestDirectory, @"core\packageDependencyTests\ZTTestPackage"); var pkg = loader.ScanPackageDirectory(packageDirectory); loader.LoadPackages(new List <Package> { pkg }); // Assert that node belonging to new package is imported var node = GetNodeInstance("ZTTestPackage.RRTestClass.RRTestClass"); Assert.IsNotNull(node); // Check that node belonging to one of the preloaded packages exists and is unique var entries = CurrentDynamoModel.SearchModel.SearchEntries.ToList(); Assert.IsTrue(entries.Count(x => x.FullName == "AnotherPackage.AnotherPackage.AnotherPackage.HelloAnotherWorld") == 1); }
public void LoadPackagesReturnsAllValidPackagesInValidDirectory() { var loader = new PackageLoader(PackagesDirectory); var libraryLoader = new ExtensionLibraryLoader(CurrentDynamoModel); loader.PackagesLoaded += libraryLoader.LoadPackages; loader.RequestLoadNodeLibrary += (libraryLoader as ExtensionLibraryLoader).LoadLibraryAndSuppressZTSearchImport; loader.LoadAll(new LoadPackageParams { Preferences = CurrentDynamoModel.PreferenceSettings, PathManager = CurrentDynamoModel.PathManager }); // There are 18 packages in "Dynamo\test\pkgs" Assert.AreEqual(18, loader.LocalPackages.Count()); // Verify that interdependent packages are resolved successfully // TODO: Review these assertions. Lambdas are not using x, so they are basically just checking that test files exist. var libs = CurrentDynamoModel.LibraryServices.ImportedLibraries.ToList(); Assert.IsTrue(libs.Any(x => File.Exists(Path.Combine(PackagesDirectory, "AnotherPackage", "bin", "AnotherPackage.dll")))); Assert.IsTrue(libs.Any(x => File.Exists(Path.Combine(PackagesDirectory, "Dependent Package", "bin", "DependentPackage.dll")))); Assert.IsTrue(libs.Any(x => File.Exists(Path.Combine(PackagesDirectory, "Package", "bin", "Package.dll")))); // Verify that interdependent packages are imported successfully var entries = CurrentDynamoModel.SearchModel.SearchEntries.ToList(); Assert.IsTrue(entries.Any(x => x.FullName == "AnotherPackage.AnotherPackage.AnotherPackage.HelloAnotherWorld")); Assert.IsTrue(entries.Any(x => x.FullName == "DependentPackage.DependentPackage.DependentPackage.HelloWorld")); Assert.IsTrue(entries.Any(x => x.FullName == "Package.Package.Package.Hello")); }
public void DisablingCustomPackagePathsCorrectlyDisablesLoading() { //setup clean loader where std lib is a custom package path var loader = new PackageLoader(new[] { StandardLibraryTestDirectory }, string.Empty); var settings = new PreferenceSettings(); //disable custom package paths settings.DisableCustomPackageLocations = true; settings.CustomPackageFolders = new List <string>() { StandardLibraryTestDirectory }; var loaderParams = new LoadPackageParams() { PathManager = CurrentDynamoModel.PathManager, Preferences = settings }; //invoke the load loader.LoadAll(loaderParams); //assert the package in the custom package path was not loaded Assert.IsFalse(loader.LocalPackages.Any(x => x.BinaryDirectory.Contains("SignedPackage2"))); Assert.AreEqual(0, loader.LocalPackages.Count()); }
public void LoadPackagesReturnsAllValidPackagesInValidDirectory() { var loader = new PackageLoader(PackagesDirectory); var libraryLoader = new ExtensionLibraryLoader(CurrentDynamoModel); loader.PackagesLoaded += libraryLoader.LoadPackages; loader.RequestLoadNodeLibrary += libraryLoader.LoadNodeLibrary; loader.LoadAll(new LoadPackageParams { Preferences = CurrentDynamoModel.PreferenceSettings, PathManager = CurrentDynamoModel.PathManager }); // There are 15 packages in "GitHub\Dynamo\test\pkgs" Assert.AreEqual(15, loader.LocalPackages.Count()); // Verify that interdependent packages are resolved successfully var libs = CurrentDynamoModel.LibraryServices.ImportedLibraries.ToList(); Assert.IsTrue(libs.Any(x => File.Exists(Path.Combine(PackagesDirectory, "AnotherPackage", "bin", "AnotherPackage.dll")))); Assert.IsTrue(libs.Any(x => File.Exists(Path.Combine(PackagesDirectory, "Dependent Package", "bin", "DependentPackage.dll")))); Assert.IsTrue(libs.Any(x => File.Exists(Path.Combine(PackagesDirectory, "Package", "bin", "Package.dll")))); // Verify that interdependent packages are imported successfully var entries = CurrentDynamoModel.SearchModel.SearchEntries.ToList(); Assert.IsTrue(entries.Any(x => x.FullName == "AnotherPackage.AnotherPackage.AnotherPackage.HelloAnotherWorld")); Assert.IsTrue(entries.Any(x => x.FullName == "DependentPackage.DependentPackage.DependentPackage.HelloWorld")); Assert.IsTrue(entries.Any(x => x.FullName == "Package.Package.Package.Hello")); }
public void LoadPackagesReturnsNoPackagesForInvalidDirectory() { var pkgDir = Path.Combine(PackagesDirectory, "No directory"); var loader = new PackageLoader(pkgDir); loader.LoadAll(new LoadPackageParams { Preferences = this.CurrentDynamoModel.PreferenceSettings }); Assert.AreEqual(0, loader.LocalPackages.Count()); }
public void LoadPackagesReturnsAllValidPackagesInValidDirectory() { var loader = new PackageLoader(PackagesDirectory); loader.LoadAll(new LoadPackageParams { Preferences = this.CurrentDynamoModel.PreferenceSettings }); // There are four packages in "GitHub\Dynamo\test\pkgs" Assert.AreEqual(4, loader.LocalPackages.Count()); }
public void NewPackageVersionUpload_DoesNotThrowExceptionWhenDLLIsLoadedSeveralTimes() { string packagesDirectory = Path.Combine(TestDirectory, "pkgs"); var loader = new PackageLoader(packagesDirectory); loader.LoadAll(new LoadPackageParams { Preferences = ViewModel.Model.PreferenceSettings }); PublishPackageViewModel vm = null; Assert.DoesNotThrow(() => { vm = PublishPackageViewModel.FromLocalPackage(ViewModel, loader.LocalPackages.First()); }); Assert.AreEqual(PackageUploadHandle.State.Error, vm.UploadState); }
public void PackageInStandardLibLocationIsLoaded() { //setup clean loader var loader = new PackageLoader(new string[0], StandardLibraryTestDirectory); var settings = new PreferenceSettings(); settings.DisableStandardLibrary = false; var loaderParams = new LoadPackageParams() { PathManager = CurrentDynamoModel.PathManager, Preferences = settings }; //invoke the load loader.LoadAll(loaderParams); //assert the package in std lib was loaded. Assert.IsTrue(loader.LocalPackages.Any(x => x.BinaryDirectory.Contains("SignedPackage2"))); Assert.AreEqual(1, loader.LocalPackages.Count()); }
public void DisablingStandardLibraryCorrectlyDisablesLoading() { //setup clean loader var loader = new PackageLoader(new string[0], StandardLibraryTestDirectory); var settings = new PreferenceSettings(); settings.DisableStandardLibrary = true; var loaderParams = new LoadPackageParams() { PathManager = CurrentDynamoModel.PathManager, Preferences = settings }; //then invoke load loader.LoadAll(loaderParams); //assert the package in std lib was not loaded. Assert.IsFalse(loader.LocalPackages.Any(x => x.Name.Contains("SignedPackage2"))); Assert.AreEqual(0, loader.LocalPackages.Count()); }