Beispiel #1
0
        private void RefreshImplementation()
        {
            OnStartingRefresh();
            try {
                lock (_fileBitsLock) {
                    if (_isReloadingModules)
                    {
                        RestartFileSystemWatcherTimer();
                        return;
                    }
                    else
                    {
                        _isReloadingModules = true;
                    }
                }

                RootPackage = RootPackageFactory.Create(
                    _fullPathToRootPackageDirectory,
                    _showMissingDevOptionalSubPackages);
                return;
            } catch (IOException) {
                // Can sometimes happen when packages are still installing because the file may still be used by another process
            } finally {
                lock (_fileBitsLock) {
                    _isReloadingModules = false;
                }
                if (RootPackage == null)
                {
                    OnOutputLogged("Error - Cannot load local packages.");
                }
                OnFinishedRefresh();
            }
        }
 public void ReadRootPackageNoDependencies()
 {
     using (var manager = new TemporaryFileManager()) {
         var rootDir = FilesystemPackageJsonTestHelpers.CreateRootPackage(manager, PkgSimple);
         var pkg     = RootPackageFactory.Create(rootDir);
         Assert.IsNotNull(pkg, "Root package should not be null.");
         Assert.AreEqual(rootDir, pkg.Path, "Package path mismatch.");
         var json = pkg.PackageJson;
         Assert.IsNotNull(json, "package.json should not be null.");
         Assert.AreEqual(json.Name, pkg.Name, "Package name mismatch.");
         Assert.AreEqual(json.Version, pkg.Version, "Package version mismatch.");
         var modules = pkg.Modules;
         Assert.IsNotNull(modules, "Modules should not be null.");
         Assert.AreEqual(0, modules.Count, "Module count mismatch.");
     }
 }
        public void TestReadRootPackageOneDependency()
        {
            var rootDir = CreateRootPackage(PkgSingleDependency);

            RunNpmInstall(rootDir);

            var pkg = RootPackageFactory.Create(rootDir);

            var json         = pkg.PackageJson;
            var dependencies = json.AllDependencies;

            Assert.AreEqual(1, dependencies.Count, "Dependency count mismatch.");

            IDependency dep = dependencies["sax"];

            Assert.IsNotNull(dep, "sax dependency should not be null.");
            Assert.AreEqual(">=0.1.0 <0.2.0", dep.VersionRangeText, "Version range mismatch.");

            var modules = pkg.Modules;

            Assert.AreEqual(1, modules.Count, "Module count mismatch");

            IPackage module = modules[0];

            Assert.IsNotNull(module, "Module should not be null when retrieved by index.");
            module = modules["sax"];
            Assert.IsNotNull(module, "Module should not be null when retrieved by name.");

            Assert.AreEqual(modules[0], modules["sax"], "Modules should be same whether retrieved by name or index.");

            Assert.AreEqual("sax", module.Name, "Module name mismatch.");

            //  All of these should be indicated, in some way, in the Visual Studio treeview.

            Assert.IsNotNull(module.PackageJson, "Module package.json should not be null.");

            Assert.IsTrue(
                module.IsListedInParentPackageJson,
                "Should be listed as a dependency in parent package.json.");
            Assert.IsFalse(module.IsMissing, "Should not be marked as missing.");
            Assert.IsFalse(module.IsDevDependency, "Should not be marked as dev dependency.");
            Assert.IsFalse(module.IsOptionalDependency, "Should not be marked as optional dependency.");
            Assert.IsFalse(module.IsBundledDependency, "Should not be marked as bundled dependency.");

            //  Redundant?
            Assert.IsTrue(module.HasPackageJson, "Module should have its own package.json");
        }
        public void TestReadRootPackageNoDependencies()
        {
            var rootDir = CreateRootPackage(PkgSimple);
            var pkg     = RootPackageFactory.Create(rootDir);

            Assert.IsNotNull(pkg, "Root package should not be null.");
            Assert.AreEqual(rootDir, pkg.Path, "Package path mismatch.");
            var json = pkg.PackageJson;

            Assert.IsNotNull(json, "package.json should not be null.");
            Assert.AreEqual(json.Name, pkg.Name, "Package name mismatch.");
            Assert.AreEqual(json.Version, pkg.Version, "Package version mismatch.");
            var modules = pkg.Modules;

            Assert.IsNotNull(modules, "Modules should not be null.");
            Assert.AreEqual(0, modules.Count, "Module count mismatch.");
        }
Beispiel #5
0
        public async Task RefreshAsync()
        {
            OnStartingRefresh();
            try {
                lock (_fileBitsLock) {
                    if (_isReloadingModules)
                    {
                        RestartFileSystemWatcherTimer();
                        return;
                    }
                    else
                    {
                        _isReloadingModules = true;
                    }
                }

                RootPackage = RootPackageFactory.Create(
                    _fullPathToRootPackageDirectory,
                    _showMissingDevOptionalSubPackages);

                var command = new NpmBinCommand(_fullPathToRootPackageDirectory, true, PathToNpm);

                GlobalPackages = (await command.ExecuteAsync())
                    ? RootPackageFactory.Create(command.BinDirectory)
                    : null;
            } catch (IOException) {
                // Can sometimes happen when packages are still installing because the file may still be used by another process
            } finally {
                lock (_fileBitsLock) {
                    _isReloadingModules = false;
                }
                if (RootPackage == null)
                {
                    OnOutputLogged("Error - Cannot load local packages.");
                }
                if (GlobalPackages == null)
                {
                    OnOutputLogged("Error - Cannot load global packages.");
                }
                OnFinishedRefresh();
            }
        }
        public void ReadRootDependencyRecursive()
        {
            using (var manager = new TemporaryFileManager()) {
                var rootDir = FilesystemPackageJsonTestHelpers.CreateRootPackage(manager, PkgSingleRecursiveDependency);
                RunNpmInstall(rootDir);

                var pkg = RootPackageFactory.Create(rootDir, false, int.MaxValue);

                var json         = pkg.PackageJson;
                var dependencies = json.AllDependencies;
                Assert.AreEqual(1, dependencies.Count, "Dependency count mismatch.");

                IDependency dep = dependencies["express"];
                Assert.IsNotNull(dep, "express dependency should not be null.");
                Assert.AreEqual("4.0.0", dep.VersionRangeText, "Version range mismatch.");

                var modules = pkg.Modules;
                Assert.AreEqual(1, modules.Count, "Module count mismatch");

                IPackage module = modules[0];
                Assert.IsNotNull(module, "Module should not be null when retrieved by index.");
                module = modules["express"];
                Assert.IsNotNull(module, "Module should not be null when retrieved by name.");

                Assert.AreEqual(
                    modules[0],
                    modules["express"],
                    "Modules should be same whether retrieved by name or index.");

                Assert.AreEqual("express", module.Name, "Module name mismatch.");

                Assert.AreEqual("4.0.0", module.Version.ToString(), "Module version mismatch");

                var expectedModules = new string[] {
                    "accepts",
                    "buffer-crc32",
                    "cookie",
                    "cookie-signature",
                    "debug",
                    "escape-html",
                    "fresh",
                    "merge-descriptors",
                    "methods",
                    "parseurl",
                    "path-to-regexp",
                    "qs",
                    "range-parser",
                    "send",
                    "serve-static",
                    "type-is",
                    "utils-merge"
                };

                modules = module.Modules;

                Console.WriteLine("module.Modules includes: {0}", string.Join(", ", modules.Select(m => m.Name)));

                Assert.AreEqual(module.PackageJson.Dependencies.Count, modules.Count, "Sub-module count mismatch.");
                foreach (var name in expectedModules)
                {
                    Console.WriteLine("Expecting {0}", name);
                    var current = modules[name];
                    Assert.IsNotNull(current, "Module should not be null when retrieved by name.");

                    Assert.AreEqual(name, current.Name, "Module name mismatch.");

                    Assert.IsNotNull(current.PackageJson, "Module package.json should not be null.");

                    Assert.IsTrue(
                        current.IsListedInParentPackageJson,
                        "Should be listed as a dependency in parent package.json.");
                    Assert.IsFalse(current.IsMissing, "Should not be marked as missing.");
                    Assert.IsFalse(current.IsDevDependency, "Should not be marked as dev dependency.");
                    Assert.IsFalse(current.IsOptionalDependency, "Should not be marked as optional dependency.");
                    Assert.IsFalse(current.IsBundledDependency, "Should not be marked as bundled dependency.");

                    //  Redundant?
                    Assert.IsTrue(current.HasPackageJson, "Module should have its own package.json");
                }
            }
        }