Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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));
        }
Пример #5
0
        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);
        }
Пример #6
0
        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"));
        }
Пример #7
0
        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());
        }
Пример #8
0
        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"));
        }
Пример #9
0
        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());
        }
Пример #10
0
        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());
        }
Пример #11
0
        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());
        }
Пример #12
0
        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());
        }
Пример #13
0
        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);
        }
Пример #14
0
        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());
        }
Пример #15
0
        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());
        }