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."); }
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"); } } }