diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 7ebdad2..f57b0bf 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: - node-version: [14.x, 16.x, 18.x] + node-version: [16.x, 18.x, 20.x, 22.x] steps: - uses: actions/checkout@v4 diff --git a/README.md b/README.md index 42b8a63..4bdaf3a 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,9 @@ Main features are: - Update/uninstall packages - Any Node.js packages can be installed - No special configuration is required -- Installed packages can have dependencies +- Installed packages can have dependencies - dependencies are automatically installed + - optionalDependencies are also installed (errors are ignored) - when updating a dependencies all dependents are reloaded - Support for concurrency operation on filesystem (cloud/web farm scenario where file system is shared) - A filesystem lock is used to prevent multiple instances to work on the same filesystem in the same moment diff --git a/dist/src/PackageInfo.d.ts b/dist/src/PackageInfo.d.ts index a58c9d7..737a1c0 100644 --- a/dist/src/PackageInfo.d.ts +++ b/dist/src/PackageInfo.d.ts @@ -3,6 +3,9 @@ export interface PackageJsonInfo extends PackageInfo { dependencies?: { [name: string]: string; }; + optionalDependencies?: { + [name: string]: string; + }; } export interface PackageInfo { name: string; diff --git a/dist/src/PluginInfo.d.ts b/dist/src/PluginInfo.d.ts index e2eeef5..42df4d2 100644 --- a/dist/src/PluginInfo.d.ts +++ b/dist/src/PluginInfo.d.ts @@ -7,6 +7,9 @@ export interface IPluginInfo { readonly dependencies: { [name: string]: string; }; + readonly optionalDependencies?: { + [name: string]: string; + }; readonly dependencyDetails?: { [name: string]: PackageJsonInfo | undefined; }; diff --git a/dist/src/PluginManager.d.ts b/dist/src/PluginManager.d.ts index 703a855..16b4539 100644 --- a/dist/src/PluginManager.d.ts +++ b/dist/src/PluginManager.d.ts @@ -88,6 +88,8 @@ export declare class PluginManager { private installFromGithubLockFree; private installFromBitbucketLockFree; private installFromCodeLockFree; + private installDependency; + private listDependencies; private installDependencies; private linkDependencyToPlugin; private unloadDependents; diff --git a/dist/src/PluginManager.js b/dist/src/PluginManager.js index 019f4fd..f4d16c7 100644 --- a/dist/src/PluginManager.js +++ b/dist/src/PluginManager.js @@ -478,50 +478,74 @@ class PluginManager { return this.addPlugin(pluginInfo); }); } - installDependencies(plugin) { + installDependency(plugin, name, version) { return __awaiter(this, void 0, void 0, function* () { - if (!plugin.dependencies) { - return {}; - } - const dependencies = {}; - for (const key in plugin.dependencies) { - if (!plugin.dependencies.hasOwnProperty(key)) { - continue; - } - if (this.shouldIgnore(key)) { - continue; + try { + if (this.shouldIgnore(name)) { + return { installed: false }; } - const version = plugin.dependencies[key]; - if (this.isModuleAvailableFromHost(key, version)) { + if (this.isModuleAvailableFromHost(name, version)) { if (debug.enabled) { - debug(`Installing dependencies of ${plugin.name}: ${key} is already available on host`); + debug(`Installing dependencies of ${plugin.name}: ${name} is already available on host`); } } - else if (this.alreadyInstalled(key, version)) { + else if (this.alreadyInstalled(name, version)) { if (debug.enabled) { - debug(`Installing dependencies of ${plugin.name}: ${key} is already installed`); + debug(`Installing dependencies of ${plugin.name}: ${name} is already installed`); } - const installed = yield this.versionManager.resolvePath(key, version); + const installed = yield this.versionManager.resolvePath(name, version); if (!installed) { - throw new Error(`Cannot resolve path for ${key}@${version}`); + const error = new Error(`Cannot resolve path for ${name}@${version}`); + return { installed: false, error }; } - yield this.linkDependencyToPlugin(plugin, key, installed); + yield this.linkDependencyToPlugin(plugin, name, installed); } else { if (debug.enabled) { - debug(`Installing dependencies of ${plugin.name}: ${key} ...`); + debug(`Installing dependencies of ${plugin.name}: ${name} ...`); } - const installedPlugin = yield this.installLockFree(key, version); + const installedPlugin = yield this.installLockFree(name, version); const installed = yield this.versionManager.resolvePath(installedPlugin.name, installedPlugin.version); if (!installed) { - throw new Error(`Cannot resolve path for ${installedPlugin.name}@${installedPlugin.version}`); + const error = new Error(`Cannot resolve path for ${installedPlugin.name}@${installedPlugin.version}`); + return { installed: false, error }; + } + yield this.linkDependencyToPlugin(plugin, name, installed); + } + return { installed: true }; + } + catch (error) { + if (debug.enabled) { + debug(`Error installing dependency ${name} for ${plugin.name}:`, error); + } + const err = error instanceof Error ? error : new Error(String(error)); + return { installed: false, error: err }; + } + }); + } + listDependencies(plugin) { + const allDependenciesToInstall = Object.keys(plugin.dependencies).map((key) => ({ isOptional: false, name: key, version: plugin.dependencies[key] })); + if (plugin.optionalDependencies) { + const optDeps = plugin.optionalDependencies; + allDependenciesToInstall.push(...Object.keys(optDeps).map((key) => ({ isOptional: true, name: key, version: optDeps[key] }))); + } + return allDependenciesToInstall; + } + installDependencies(plugin) { + return __awaiter(this, void 0, void 0, function* () { + const installedDependencies = {}; + for (const dep of this.listDependencies(plugin)) { + const installResult = yield this.installDependency(plugin, dep.name, dep.version); + if (!installResult.installed && installResult.error) { + if (dep.isOptional) { + continue; } - yield this.linkDependencyToPlugin(plugin, key, installed); + throw installResult.error; } - // NOTE: maybe here I should put the actual version? - dependencies[key] = version; + // NOTE: maybe here I should put the actual installed version? + installedDependencies[dep.name] = dep.version; } - return dependencies; + return installedDependencies; }); } linkDependencyToPlugin(plugin, packageName, versionPath) { diff --git a/dist/src/PluginManager.js.map b/dist/src/PluginManager.js.map index 4f44795..83e5f90 100644 --- a/dist/src/PluginManager.js.map +++ b/dist/src/PluginManager.js.map @@ -1 +1 @@ -{"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../src/PluginManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../src/PluginManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/VersionManager.js b/dist/src/VersionManager.js index 341d37d..cde4384 100644 --- a/dist/src/VersionManager.js +++ b/dist/src/VersionManager.js @@ -200,6 +200,7 @@ class VersionManager { location, mainFile, dependencies: packageJson.dependencies || {}, + optionalDependencies: packageJson.optionalDependencies || {}, }; } const dependencies = packageJson.dependencies || {}; @@ -218,6 +219,7 @@ class VersionManager { location, mainFile, dependencies, + optionalDependencies: packageJson.optionalDependencies || {}, dependencyDetails, }; }); diff --git a/dist/src/VersionManager.js.map b/dist/src/VersionManager.js.map index 3dbe822..3024294 100644 --- a/dist/src/VersionManager.js.map +++ b/dist/src/VersionManager.js.map @@ -1 +1 @@ -{"version":3,"file":"VersionManager.js","sourceRoot":"","sources":["../../src/VersionManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"VersionManager.js","sourceRoot":"","sources":["../../src/VersionManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 700b227..232ef27 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "live-plugin-manager", - "version": "1.0.0", + "version": "1.1.0", "description": "Install and uninstall any node package at runtime from npm registry", "keywords": [ "plugin", diff --git a/src/PackageInfo.ts b/src/PackageInfo.ts index 44735eb..0b5ca4a 100644 --- a/src/PackageInfo.ts +++ b/src/PackageInfo.ts @@ -1,6 +1,7 @@ export interface PackageJsonInfo extends PackageInfo { main?: string; dependencies?: { [name: string]: string }; + optionalDependencies?: { [name: string]: string }; } export interface PackageInfo { diff --git a/src/PluginInfo.ts b/src/PluginInfo.ts index 0839528..1bf4108 100644 --- a/src/PluginInfo.ts +++ b/src/PluginInfo.ts @@ -6,6 +6,7 @@ export interface IPluginInfo { readonly name: string; readonly version: string; readonly dependencies: { [name: string]: string }; + readonly optionalDependencies?: { [name: string]: string }; readonly dependencyDetails?: { [name: string]: PackageJsonInfo | undefined; } diff --git a/src/PluginManager.ts b/src/PluginManager.ts index c4ed45a..6ccefea 100644 --- a/src/PluginManager.ts +++ b/src/PluginManager.ts @@ -1,8 +1,8 @@ import * as fs from "./fileSystem"; import * as path from "path"; -import {NpmRegistryClient, NpmRegistryConfig} from "./NpmRegistryClient"; -import {PluginVm} from "./PluginVm"; -import {IPluginInfo} from "./PluginInfo"; +import { NpmRegistryClient, NpmRegistryConfig } from "./NpmRegistryClient"; +import { PluginVm } from "./PluginVm"; +import { IPluginInfo } from "./PluginInfo"; import * as lockFile from "lockfile"; import * as semver from "semver"; import Debug from "debug"; @@ -80,7 +80,7 @@ export class PluginManager { options.pluginsPath = path.join(options.cwd, "plugin_packages"); } - this.options = {...createDefaultOptions(), ...(options || {})}; + this.options = { ...createDefaultOptions(), ...(options || {}) }; this.versionManager = new VersionManager({ cwd: this.options.cwd, rootPath: this.options.versionsPath || path.join(this.options.pluginsPath, ".versions") @@ -210,7 +210,7 @@ export class PluginManager { } require(fullName: string): any { - const {pluginName, requiredPath} = this.vm.splitRequire(fullName); + const { pluginName, requiredPath } = this.vm.splitRequire(fullName); const info = this.getInfo(pluginName); if (!info) { @@ -519,7 +519,7 @@ export class PluginManager { debug(`Create plugin ${name} to ${this.options.pluginsPath} from code`); } - const location = this.versionManager.getPath({name, version}); + const location = this.versionManager.getPath({ name, version }); if (!location) { throw new Error(`Cannot resolve path for ${name}@${version}`); } @@ -533,53 +533,76 @@ export class PluginManager { return this.addPlugin(pluginInfo); } - private async installDependencies(plugin: IPluginInfo): Promise<{ [name: string]: string }> { - if (!plugin.dependencies) { - return {}; - } - - const dependencies: { [name: string]: string } = {}; - - for (const key in plugin.dependencies) { - if (!plugin.dependencies.hasOwnProperty(key)) { - continue; - } - if (this.shouldIgnore(key)) { - continue; + private async installDependency(plugin: IPluginInfo, name: string, version: string): Promise<{ installed: boolean, error?: Error }> { + try { + if (this.shouldIgnore(name)) { + return { installed: false }; } - const version = plugin.dependencies[key]; - - if (this.isModuleAvailableFromHost(key, version)) { + if (this.isModuleAvailableFromHost(name, version)) { if (debug.enabled) { - debug(`Installing dependencies of ${plugin.name}: ${key} is already available on host`); + debug(`Installing dependencies of ${plugin.name}: ${name} is already available on host`); } - } else if (this.alreadyInstalled(key, version)) { + return { installed: true }; + } else if (this.alreadyInstalled(name, version)) { if (debug.enabled) { - debug(`Installing dependencies of ${plugin.name}: ${key} is already installed`); + debug(`Installing dependencies of ${plugin.name}: ${name} is already installed`); } - const installed = await this.versionManager.resolvePath(key, version); + const installed = await this.versionManager.resolvePath(name, version); if (!installed) { - throw new Error(`Cannot resolve path for ${key}@${version}`); + const error = new Error(`Cannot resolve path for ${name}@${version}`); + return { installed: false, error }; } - await this.linkDependencyToPlugin(plugin, key, installed); + await this.linkDependencyToPlugin(plugin, name, installed); + return { installed: true }; } else { if (debug.enabled) { - debug(`Installing dependencies of ${plugin.name}: ${key} ...`); + debug(`Installing dependencies of ${plugin.name}: ${name} ...`); } - const installedPlugin = await this.installLockFree(key, version); + const installedPlugin = await this.installLockFree(name, version); const installed = await this.versionManager.resolvePath(installedPlugin.name, installedPlugin.version); if (!installed) { - throw new Error(`Cannot resolve path for ${installedPlugin.name}@${installedPlugin.version}`); + const error = new Error(`Cannot resolve path for ${installedPlugin.name}@${installedPlugin.version}`); + return { installed: false, error }; + } + await this.linkDependencyToPlugin(plugin, name, installed); + return { installed: true }; + } + } catch (error) { + if (debug.enabled) { + debug(`Error installing dependency ${name} for ${plugin.name}:`, error); + } + const err = error instanceof Error ? error : new Error(String(error)); + return { installed: false, error: err }; + } + } + + private listDependencies(plugin: IPluginInfo): { name: string, version: string, isOptional: boolean }[] { + const allDependenciesToInstall = Object.keys(plugin.dependencies).map((key) => ({ isOptional: false, name: key, version: plugin.dependencies[key] })); + if (plugin.optionalDependencies) { + const optDeps = plugin.optionalDependencies; + allDependenciesToInstall.push(...Object.keys(optDeps).map((key) => ({ isOptional: true, name: key, version: optDeps[key] }))); + } + + return allDependenciesToInstall; + } + + private async installDependencies(plugin: IPluginInfo): Promise<{ [name: string]: string }> { + const installedDependencies: { [name: string]: string } = {}; + for (const dep of this.listDependencies(plugin)) { + const installResult = await this.installDependency(plugin, dep.name, dep.version); + if (!installResult.installed && installResult.error) { + if (dep.isOptional) { + continue; } - await this.linkDependencyToPlugin(plugin, key, installed); + throw installResult.error; } - // NOTE: maybe here I should put the actual version? - dependencies[key] = version; + // NOTE: maybe here I should put the actual installed version? + installedDependencies[dep.name] = dep.version; } - return dependencies; + return installedDependencies; } private async linkDependencyToPlugin(plugin: IPluginInfo, packageName: string, versionPath: string) { @@ -652,7 +675,7 @@ export class PluginManager { // '/' is permitted to support scoped packages if (name.startsWith(".") - || name.indexOf("\\") >= 0) { + || name.indexOf("\\") >= 0) { return false; } @@ -906,7 +929,7 @@ export class PluginManager { } private async createPluginInfo(packageInfo: PackageInfo): Promise { - const {name, version} = packageInfo; + const { name, version } = packageInfo; const location = await this.versionManager.resolvePath(name, version); if (!location) { throw new Error(`Cannot resolve path for ${name}@${version}`); diff --git a/src/VersionManager.ts b/src/VersionManager.ts index 4358e5f..c48ec4a 100644 --- a/src/VersionManager.ts +++ b/src/VersionManager.ts @@ -1,6 +1,6 @@ import * as fs from "./fileSystem"; import * as path from "path"; -import {IPluginInfo} from "./PluginInfo"; +import { IPluginInfo } from "./PluginInfo"; import * as semver from "semver"; import Debug from "debug"; import { PackageJsonInfo, PackageInfo } from "./PackageInfo"; @@ -32,7 +32,7 @@ export class VersionManager { options.rootPath = path.join(options.cwd, "plugin_packages", ".versions"); } - this.options = {...createDefaultOptions(), ...(options || {})}; + this.options = { ...createDefaultOptions(), ...(options || {}) }; } /** @@ -49,7 +49,7 @@ export class VersionManager { * @returns A location for the specified package name and version */ public getPath(packageInfo: PackageInfo): string { - const {name, version} = packageInfo; + const { name, version } = packageInfo; return path.join(this.options.rootPath, `${name}@${version}`); } @@ -174,6 +174,7 @@ export class VersionManager { location, mainFile, dependencies: packageJson.dependencies || {}, + optionalDependencies: packageJson.optionalDependencies || {}, }; } @@ -194,6 +195,7 @@ export class VersionManager { location, mainFile, dependencies, + optionalDependencies: packageJson.optionalDependencies || {}, dependencyDetails, }; } @@ -275,7 +277,7 @@ export class VersionManager { private async checkVersionUsedInDir( packageInfo: PackageInfo, baseDir?: string, ): Promise { - const {name, version} = packageInfo; + const { name, version } = packageInfo; const location = baseDir || this.options.rootPath; const files = await this.listVersionDirs(location); if (debug.enabled) { @@ -318,7 +320,7 @@ export class VersionManager { if (!packageJson.dependencies) { return false; } - const {name, version} = packageInfo; + const { name, version } = packageInfo; if (!packageJson.dependencies[name]) { return false; } diff --git a/test/PluginManagerSuite.js b/test/PluginManagerSuite.js index 00f2422..b993243 100644 --- a/test/PluginManagerSuite.js +++ b/test/PluginManagerSuite.js @@ -740,7 +740,9 @@ describe("PluginManager:", function () { return __awaiter(this, void 0, void 0, function* () { chai_1.assert.equal(manager.list().length, 2); chai_1.assert.equal(manager.list()[0].name, "moment"); + chai_1.assert.equal(manager.list()[0].location, path.join(manager.options.pluginsPath, "moment")); chai_1.assert.equal(manager.list()[1].name, "my-plugin-with-dep"); + chai_1.assert.equal(manager.list()[1].location, path.join(manager.options.pluginsPath, "my-plugin-with-dep")); }); }); it("dependencies are available", function () { @@ -772,13 +774,10 @@ describe("PluginManager:", function () { }); }); it("requiring the plugin will fail", function () { - try { - manager.require("my-plugin-with-dep"); - } - catch (e) { - return; - } - throw new Error("Excepted to fail"); + // VersionManager should be keep the dependencies of my-plugin-with-dep + // after uninstalling moment + const pluginInstance = manager.require("my-plugin-with-dep"); + chai_1.assert.equal(pluginInstance.testMoment, "1981/10/06"); }); it("if dependency is reinstalled plugin will work again", function () { return __awaiter(this, void 0, void 0, function* () { @@ -787,21 +786,6 @@ describe("PluginManager:", function () { chai_1.assert.equal(pluginInstance.testMoment, "1981/10/06"); }); }); - it("after a plugin load error if dependency is reinstalled plugin will work again", function () { - return __awaiter(this, void 0, void 0, function* () { - let initialFailed = false; - try { - manager.require("my-plugin-with-dep"); - } - catch (e) { - initialFailed = true; - } - chai_1.assert.isTrue(initialFailed, "expected to fail to load without moment"); - yield manager.installFromNpm("moment", "2.18.1"); - const pluginInstance = manager.require("my-plugin-with-dep"); - chai_1.assert.equal(pluginInstance.testMoment, "1981/10/06"); - }); - }); }); }); }); @@ -845,6 +829,35 @@ describe("PluginManager:", function () { }); }); }); + describe("Optional dependencies", function () { + describe("Given a package with optional dependencies", function () { + beforeEach(function () { + return __awaiter(this, void 0, void 0, function* () { + const pluginSourcePath = path.join(__dirname, "my-plugin-with-opt-dep"); + yield manager.installFromPath(pluginSourcePath); + }); + }); + it("optional dependencies are installed", function () { + chai_1.assert.equal(manager.list().length, 2); + chai_1.assert.equal(manager.list()[0].name, "moment"); + chai_1.assert.equal(manager.list()[1].name, "my-plugin-with-opt-dep"); + }); + it("optional dependencies are available", function () { + const pluginInstance = manager.require("my-plugin-with-opt-dep"); + chai_1.assert.equal(pluginInstance.testMoment, "1981/10/06"); + }); + }); + it("installation continues when an optional dependency fails", function () { + return __awaiter(this, void 0, void 0, function* () { + const pluginSourcePath = path.join(__dirname, "my-plugin-with-bad-opt-dep"); + yield manager.installFromPath(pluginSourcePath); + chai_1.assert.equal(manager.list().length, 1); + chai_1.assert.equal(manager.list()[0].name, "my-plugin-with-bad-opt-dep"); + const pluginInstance = manager.require("my-plugin-with-bad-opt-dep"); + chai_1.assert.isTrue(pluginInstance.ok); + }); + }); + }); describe("handling updates", function () { beforeEach(function () { return __awaiter(this, void 0, void 0, function* () { @@ -860,27 +873,48 @@ describe("PluginManager:", function () { chai_1.assert.equal(manager.list()[0].name, "my-plugin-a"); chai_1.assert.equal(manager.list()[0].version, "1.0.0"); chai_1.assert.equal(manager.list()[1].name, "my-plugin-b"); + // - my-plugin-a@v1 + // - my-plugin-b + // - (depends) my-plugin-a@v1 + chai_1.assert.equal(manager.require("my-plugin-a"), "v1"); const initialPluginInstance = manager.require("my-plugin-b"); chai_1.assert.equal(initialPluginInstance, "a = v1"); yield manager.installFromPath(path.join(__dirname, "my-plugin-a@v2")); chai_1.assert.equal(manager.list().length, 2); chai_1.assert.isDefined(manager.alreadyInstalled("my-plugin-b", "=1.0.0")); chai_1.assert.isDefined(manager.alreadyInstalled("my-plugin-a", "=2.0.0")); + // - my-plugin-a@v2 <- only this has been updated + // - my-plugin-b + // - (depends) my-plugin-a@v1 <- keep the dependency + // my-plugin-a should return 'a = v2' because it has been updated + chai_1.assert.equal(manager.require("my-plugin-a"), "v2"); + // my-plugin-b should return 'a = v1' because it depends on my-plugin-a@1.0.0 const pluginInstance = manager.require("my-plugin-b"); - chai_1.assert.equal(pluginInstance, "a = v2"); + chai_1.assert.equal(pluginInstance, "a = v1"); }); }); it("updating a package that need a prev version will not downgrade the dependency", function () { return __awaiter(this, void 0, void 0, function* () { yield manager.installFromPath(path.join(__dirname, "my-plugin-a@v2")); // update dependency to v2 yield manager.uninstall("my-plugin-b"); + try { + yield manager.installFromPath(path.join(__dirname, "my-plugin-b")); // depend on my-plugin-a@1.0.0 + throw new Error("Expected to fail"); + } + catch (err) { + // This test should fail. + // because my-plugin-b depends on my-plugin-a@1.0.0, but when my-plugin-b is uninstalled, my-plugin-a@1.0.0 is + // uninstalled. So VersionManager only keeps my-plugin-a@2.0.0, and my-plugin-a does not exist in npm. + chai_1.assert.isTrue(err.message.includes("Failed to get package 'my-plugin-a' Response error 404 Not Found")); + } + yield manager.installFromPath(path.join(__dirname, "my-plugin-a@v1")); yield manager.installFromPath(path.join(__dirname, "my-plugin-b")); // depend on my-plugin-a@1.0.0 chai_1.assert.equal(manager.list().length, 2); chai_1.assert.equal(manager.list()[0].name, "my-plugin-a"); - chai_1.assert.equal(manager.list()[0].version, "2.0.0"); + chai_1.assert.equal(manager.list()[0].version, "1.0.0"); chai_1.assert.equal(manager.list()[1].name, "my-plugin-b"); const initialPluginInstance = manager.require("my-plugin-b"); - chai_1.assert.equal(initialPluginInstance, "a = v2"); + chai_1.assert.equal(initialPluginInstance, "a = v1"); }); }); }); @@ -1338,6 +1372,253 @@ describe("PluginManager:", function () { }); }); }); + describe("uninstall", function () { + afterEach(function () { + return __awaiter(this, void 0, void 0, function* () { + yield manager.uninstallAll(); + }); + }); + it("uninstall a single plugin", function () { + return __awaiter(this, void 0, void 0, function* () { + const pluginSourcePath = path.join(__dirname, "my-basic-plugin"); + yield manager.installFromPath(pluginSourcePath); + const plugins = manager.list(); + chai_1.assert.equal(plugins.length, 1); + const pluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(pluginFiles.filter(f => f !== '.versions').length, 1); + const versionsPath = path.join(manager.options.pluginsPath, ".versions"); + const versionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(versionFiles.length, 1); + yield manager.uninstall("my-basic-plugin"); + const cleanedPlugins = manager.list(); + chai_1.assert.equal(cleanedPlugins.length, 0); + const cleanedPluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(cleanedPluginFiles.filter(f => f !== '.versions').length, 0); + const cleanedVersionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(cleanedVersionFiles.length, 0); + }); + }); + it("uninstall a single plugin with multiple versions", function () { + return __awaiter(this, void 0, void 0, function* () { + yield manager.installFromPath(path.join(__dirname, "my-plugin-a@v1")); + yield manager.installFromPath(path.join(__dirname, "my-plugin-a@v2")); + const plugins = manager.list(); + chai_1.assert.equal(plugins.length, 1); + chai_1.assert.equal(plugins[0].name, "my-plugin-a"); + chai_1.assert.equal(plugins[0].version, "2.0.0"); + const pluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(pluginFiles.filter(f => f !== '.versions').length, 1); + const versionsPath = path.join(manager.options.pluginsPath, ".versions"); + const versionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(versionFiles.length, 1); + yield manager.uninstall("my-plugin-a"); + const cleanedPlugins = manager.list(); + chai_1.assert.equal(cleanedPlugins.length, 0); + const cleanedPluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(cleanedPluginFiles.filter(f => f !== '.versions').length, 0); + const cleanedVersionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(cleanedVersionFiles.length, 0); + }); + }); + it("uninstall a single plugin with multiple versions and keep other plugins", function () { + return __awaiter(this, void 0, void 0, function* () { + yield manager.installFromPath(path.join(__dirname, "my-plugin-a@v1")); + yield manager.installFromPath(path.join(__dirname, "my-basic-plugin")); + yield manager.installFromPath(path.join(__dirname, "my-plugin-a@v2")); + const plugins = manager.list(); + chai_1.assert.equal(plugins.length, 2); + chai_1.assert.equal(plugins[0].name, "my-basic-plugin"); + chai_1.assert.equal(plugins[1].name, "my-plugin-a"); + chai_1.assert.equal(plugins[1].version, "2.0.0"); + const pluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(pluginFiles.filter(f => f !== '.versions').length, 2); + const versionsPath = path.join(manager.options.pluginsPath, ".versions"); + const versionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(versionFiles.length, 2); + yield manager.uninstall("my-plugin-a"); + const cleanedPlugins = manager.list(); + chai_1.assert.equal(cleanedPlugins.length, 1); + chai_1.assert.equal(cleanedPlugins[0].name, "my-basic-plugin"); + const cleanedPluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(cleanedPluginFiles.filter(f => f !== '.versions').length, 1); + const cleanedVersionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(cleanedVersionFiles.length, 1); + }); + }); + it("uninstall a plugin with dependencies, uninstall main package", function () { + return __awaiter(this, void 0, void 0, function* () { + yield manager.installFromPath(path.join(__dirname, "my-plugin-with-dep")); + const plugins = manager.list(); + chai_1.assert.equal(plugins.length, 2); + chai_1.assert.equal(plugins[0].name, "moment"); + chai_1.assert.equal(plugins[1].name, "my-plugin-with-dep"); + const pluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(pluginFiles.filter(f => f !== '.versions').length, 2); + const versionsPath = path.join(manager.options.pluginsPath, ".versions"); + const versionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(versionFiles.length, 2); + yield manager.uninstall("my-plugin-with-dep"); + // Uninstalling my-plugin-with-dep should not uninstall its dependencies + const cleanedPlugins = manager.list(); + chai_1.assert.equal(cleanedPlugins.length, 1); + chai_1.assert.equal(cleanedPlugins[0].name, "moment"); + const cleanedPluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(cleanedPluginFiles.filter(f => f !== '.versions').length, 1); + const cleanedVersionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(cleanedVersionFiles.length, 1); + }); + }); + it("uninstall a plugin with dependencies, uninstall dependency", function () { + return __awaiter(this, void 0, void 0, function* () { + yield manager.installFromPath(path.join(__dirname, "my-plugin-with-dep")); + const plugins = manager.list(); + chai_1.assert.equal(plugins.length, 2); + chai_1.assert.equal(plugins[0].name, "moment"); + chai_1.assert.equal(plugins[1].name, "my-plugin-with-dep"); + const pluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(pluginFiles.filter(f => f !== '.versions').length, 2); + const versionsPath = path.join(manager.options.pluginsPath, ".versions"); + const versionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(versionFiles.length, 2); + yield manager.uninstall("moment"); + // Uninstalling moment should not uninstall my-plugin-with-dep and its dependencies + const cleanedPlugins = manager.list(); + chai_1.assert.equal(cleanedPlugins.length, 1); + chai_1.assert.equal(cleanedPlugins[0].name, "my-plugin-with-dep"); + const cleanedPluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(cleanedPluginFiles.filter(f => f !== '.versions').length, 1); + const cleanedVersionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(cleanedVersionFiles.length, 2); + }); + }); + it("uninstall a plugin with host dependencies", function () { + return __awaiter(this, void 0, void 0, function* () { + yield manager.installFromPath(path.join(__dirname, "my-plugin-with-host-dep")); + const plugins = manager.list(); + chai_1.assert.equal(plugins.length, 1); + chai_1.assert.equal(plugins[0].name, "my-plugin-with-host-dep"); + const pluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(pluginFiles.filter(f => f !== '.versions').length, 1); + const versionsPath = path.join(manager.options.pluginsPath, ".versions"); + const versionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(versionFiles.length, 1); + yield manager.uninstall("my-plugin-with-host-dep"); + const cleanedPlugins = manager.list(); + chai_1.assert.equal(cleanedPlugins.length, 0); + const cleanedPluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(cleanedPluginFiles.filter(f => f !== '.versions').length, 0); + const cleanedVersionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(cleanedVersionFiles.length, 0); + }); + }); + it("uninstall a scoped plugin", function () { + return __awaiter(this, void 0, void 0, function* () { + yield manager.installFromPath(path.join(__dirname, "my-basic-plugin-scoped")); + const plugins = manager.list(); + chai_1.assert.equal(plugins.length, 1); + chai_1.assert.equal(plugins[0].name, "@myscope/my-basic-plugin-scoped"); + const pluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(pluginFiles.filter(f => f !== '.versions').length, 1); + const versionsPath = path.join(manager.options.pluginsPath, ".versions"); + const versionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(versionFiles.length, 1); + yield manager.uninstall("@myscope/my-basic-plugin-scoped"); + const cleanedPlugins = manager.list(); + chai_1.assert.equal(cleanedPlugins.length, 0); + const cleanedPluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(cleanedPluginFiles.filter(f => f !== '.versions').length, 0); + const cleanedVersionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(cleanedVersionFiles.length, 0); + }); + }); + it("uninstall a scoped plugin, keep scope directory", function () { + return __awaiter(this, void 0, void 0, function* () { + yield manager.installFromPath(path.join(__dirname, "my-basic-plugin-scoped")); + yield manager.installFromPath(path.join(__dirname, "my-plugin-a@v1")); + yield manager.installFromPath(path.join(__dirname, "my-plugin-scoped-with-dep")); + const plugins = manager.list(); + chai_1.assert.equal(plugins.length, 3); + chai_1.assert.equal(plugins[0].name, "@myscope/my-basic-plugin-scoped"); + chai_1.assert.equal(plugins[1].name, "my-plugin-a"); + chai_1.assert.equal(plugins[2].name, "@myscope/my-plugin-scoped-with-dep"); + const pluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(pluginFiles.filter(f => f !== '.versions').length, 2); + const versionsPath = path.join(manager.options.pluginsPath, ".versions"); + const versionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(versionFiles.length, 2); + yield manager.uninstall("my-plugin-a"); + // VersionManager should keep the dependencies of my-plugin-scoped-with-dep + const plugin = manager.require("@myscope/my-plugin-scoped-with-dep"); + chai_1.assert.equal(plugin, "a = v1"); + yield manager.uninstall("@myscope/my-plugin-scoped-with-dep"); + const cleanedPlugins = manager.list(); + chai_1.assert.equal(cleanedPlugins.length, 1); + chai_1.assert.equal(cleanedPlugins[0].name, "@myscope/my-basic-plugin-scoped"); + const cleanedPluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(cleanedPluginFiles.filter(f => f !== '.versions').length, 1); + chai_1.assert.isTrue(cleanedPluginFiles.includes("@myscope")); + const scopedPluginFiles = yield fs.readdir(path.join(manager.options.pluginsPath, "@myscope")); + chai_1.assert.equal(scopedPluginFiles.length, 1); + chai_1.assert.isTrue(scopedPluginFiles.includes("my-basic-plugin-scoped")); + const cleanedVersionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(cleanedVersionFiles.length, 1); + chai_1.assert.isTrue(cleanedVersionFiles.includes("@myscope")); + const scopedVersionFiles = yield fs.readdir(path.join(versionsPath, "@myscope")); + chai_1.assert.equal(scopedVersionFiles.length, 1); + chai_1.assert.isTrue(scopedVersionFiles.includes("my-basic-plugin-scoped@1.0.0")); + }); + }); + it("uninstall a plugin with scoped dependencies", function () { + return __awaiter(this, void 0, void 0, function* () { + yield manager.installFromPath(path.join(__dirname, "my-basic-plugin-scoped")); + yield manager.installFromPath(path.join(__dirname, "my-plugin-with-scoped-dep")); + const plugins = manager.list(); + chai_1.assert.equal(plugins.length, 2); + chai_1.assert.equal(plugins[0].name, "@myscope/my-basic-plugin-scoped"); + chai_1.assert.equal(plugins[1].name, "my-plugin-with-scoped-dep"); + const pluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(pluginFiles.filter(f => f !== '.versions').length, 2); + const versionsPath = path.join(manager.options.pluginsPath, ".versions"); + const versionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(versionFiles.length, 2); + yield manager.uninstall("@myscope/my-basic-plugin-scoped"); + yield manager.uninstall("my-plugin-with-scoped-dep"); + const cleanedPlugins = manager.list(); + chai_1.assert.equal(cleanedPlugins.length, 0); + const cleanedPluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(cleanedPluginFiles.filter(f => f !== '.versions').length, 0); + const cleanedVersionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(cleanedVersionFiles.length, 0); + }); + }); + it("uninstall a plugin with git dependencies", function () { + return __awaiter(this, void 0, void 0, function* () { + yield manager.installFromPath(path.join(__dirname, "my-plugin-with-git-dep")); + const plugins = manager.list(); + chai_1.assert.equal(plugins.length, 2); + chai_1.assert.equal(plugins[0].name, "underscore"); + chai_1.assert.equal(plugins[1].name, "my-plugin-with-git-dep"); + const pluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(pluginFiles.filter(f => f !== '.versions').length, 2); + const versionsPath = path.join(manager.options.pluginsPath, ".versions"); + const versionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(versionFiles.length, 2); + const resultBeforeUninstall = manager.require("my-plugin-with-git-dep"); + chai_1.assert.equal(resultBeforeUninstall.testUnderscore, "hello underscore!"); + yield manager.uninstall("underscore"); + // VersionManager should keep the dependencies of my-plugin-with-git-dep after uninstalling underscore + const resultAfterUninstall = manager.require("my-plugin-with-git-dep"); + chai_1.assert.equal(resultAfterUninstall.testUnderscore, "hello underscore!"); + const cleanedPlugins = manager.list(); + chai_1.assert.equal(cleanedPlugins.length, 1); + chai_1.assert.equal(cleanedPlugins[0].name, "my-plugin-with-git-dep"); + const cleanedPluginFiles = yield fs.readdir(manager.options.pluginsPath); + chai_1.assert.equal(cleanedPluginFiles.filter(f => f !== '.versions').length, 1); + const cleanedVersionFiles = yield fs.readdir(versionsPath); + chai_1.assert.equal(cleanedVersionFiles.length, 2); + }); + }); + }); }); function getGithubAuth() { try { diff --git a/test/PluginManagerSuite.js.map b/test/PluginManagerSuite.js.map index 334eb04..19483d9 100644 --- a/test/PluginManagerSuite.js.map +++ b/test/PluginManagerSuite.js.map @@ -1 +1 @@ -{"version":3,"file":"PluginManagerSuite.js","sourceRoot":"","sources":["PluginManagerSuite.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"PluginManagerSuite.js","sourceRoot":"","sources":["PluginManagerSuite.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/test/PluginManagerSuite.ts b/test/PluginManagerSuite.ts index 5e940de..f110f1f 100644 --- a/test/PluginManagerSuite.ts +++ b/test/PluginManagerSuite.ts @@ -4,15 +4,15 @@ import * as fs from "fs-extra"; import * as os from "os"; import * as semver from "semver"; -import {PluginManager, IPluginInfo} from "../dist/index"; +import { PluginManager, IPluginInfo } from "../dist/index"; -describe("PluginManager:", function() { +describe("PluginManager:", function () { this.timeout(15000); this.slow(3000); let manager: PluginManager; - beforeEach(async function() { + beforeEach(async function () { manager = new PluginManager({ githubAuthentication: getGithubAuth(), bitbucketAuthentication: getBitbucketAuth() @@ -26,12 +26,12 @@ describe("PluginManager:", function() { await fs.remove(manager.options.pluginsPath); }); - afterEach(async function() { + afterEach(async function () { await fs.remove(manager.options.pluginsPath); }); - describe("installation", function() { - it("initially should not have any plugins", async function() { + describe("installation", function () { + it("initially should not have any plugins", async function () { const plugins = await manager.list(); assert.equal(plugins.length, 0); @@ -40,7 +40,7 @@ describe("PluginManager:", function() { assert.isUndefined(manager.alreadyInstalled("my-basic-plugin")); }); - it("initially cannot require any plugins", async function() { + it("initially cannot require any plugins", async function () { const isAvaialable = (name: string) => { try { manager.require(name); @@ -60,8 +60,8 @@ describe("PluginManager:", function() { assert.isFalse(isAvaialable("my-basic-plugin"), "my-basic-plugin should not be available"); }); - describe("from path", function() { - it("installing a not existing plugin", async function() { + describe("from path", function () { + it("installing a not existing plugin", async function () { try { await manager.installFromPath("/this/path/does-not-exists"); } catch (e) { @@ -71,7 +71,7 @@ describe("PluginManager:", function() { throw new Error("Expected to fail"); }); - it("installing a plugin", async function() { + it("installing a plugin", async function () { const pluginPath = path.join(__dirname, "my-basic-plugin"); await manager.installFromPath(pluginPath); @@ -81,7 +81,7 @@ describe("PluginManager:", function() { assert.equal(pluginInstance.myVariable, "value1"); }); - it("installing a plugin with a special name", async function() { + it("installing a plugin with a special name", async function () { // name with dot (.) const pluginPath = path.join(__dirname, "my-plugin.js"); await manager.installFromPath(pluginPath); @@ -90,7 +90,7 @@ describe("PluginManager:", function() { }); - it("installing a plugin 2 times doesn't have effect", async function() { + it("installing a plugin 2 times doesn't have effect", async function () { const pluginPath = path.join(__dirname, "my-basic-plugin"); await manager.installFromPath(pluginPath); @@ -103,20 +103,20 @@ describe("PluginManager:", function() { assert.equal(pluginInstance.installDate, pluginInstance2.installDate); }); - it("installing a plugin 2 times with force options allow to force a reinstallation", async function() { + it("installing a plugin 2 times with force options allow to force a reinstallation", async function () { const pluginPath = path.join(__dirname, "my-basic-plugin"); await manager.installFromPath(pluginPath); const pluginInstance = manager.require("my-basic-plugin"); - await manager.installFromPath(pluginPath, {force: true}); + await manager.installFromPath(pluginPath, { force: true }); const pluginInstance2 = manager.require("my-basic-plugin"); assert.notEqual(pluginInstance, pluginInstance2); assert.notEqual(pluginInstance.installDate, pluginInstance2.installDate); }); - it("installing a plugin with minimal info", async function() { + it("installing a plugin with minimal info", async function () { const pluginPath = path.join(__dirname, "my-minimal-plugin"); await manager.installFromPath(pluginPath); @@ -126,7 +126,7 @@ describe("PluginManager:", function() { assert.equal(pluginInstance.myVariable, "value1"); }); - it("installing a plugin with node_modules should not copy node_modules", async function() { + it("installing a plugin with node_modules should not copy node_modules", async function () { const pluginPath = path.join(__dirname, "my-plugin-with-npm-modules"); await manager.installFromPath(pluginPath); @@ -142,8 +142,8 @@ describe("PluginManager:", function() { }); }); - describe("from npm", function() { - it("installing from a not valid npm url", async function() { + describe("from npm", function () { + it("installing from a not valid npm url", async function () { manager = new PluginManager({ npmRegistryUrl: "http://davide.icardi.org/some-not-existing-registry/" }); @@ -156,7 +156,7 @@ describe("PluginManager:", function() { throw new Error("Expected to throw"); }); - it("installing a not existing plugin", async function() { + it("installing a not existing plugin", async function () { try { await manager.installFromNpm("this-does-not-exists", "9.9.9"); } catch (e) { @@ -166,7 +166,7 @@ describe("PluginManager:", function() { throw new Error("Expected to throw"); }); - it("installing a plugin (cookie)", async function() { + it("installing a plugin (cookie)", async function () { await manager.installFromNpm("cookie", "0.3.1"); const cookie = manager.require("cookie"); @@ -178,7 +178,7 @@ describe("PluginManager:", function() { assert.equal(result.x, "y"); }); - it("installing a plugin already present in the folder will succeeded also if npm is down", async function() { + it("installing a plugin already present in the folder will succeeded also if npm is down", async function () { // download it to ensure it is present await manager.installFromNpm("cookie", "0.3.1"); @@ -197,7 +197,7 @@ describe("PluginManager:", function() { assert.equal(result.x, "y"); }); - it("installing a plugin already present in the folder will fail if npm is down and noCache is used", async function() { + it("installing a plugin already present in the folder will fail if npm is down and noCache is used", async function () { // download it to ensure it is present await manager.installFromNpm("cookie", "0.3.1"); @@ -215,7 +215,7 @@ describe("PluginManager:", function() { throw new Error("Expected to throw"); }); - it("installing a plugin already present in the folder will fail if npm is down and I ask for latest", async function() { + it("installing a plugin already present in the folder will fail if npm is down and I ask for latest", async function () { // download it to ensure it is present await manager.installFromNpm("cookie", "0.3.1"); @@ -233,16 +233,16 @@ describe("PluginManager:", function() { }); }); - describe("from github", function() { + describe("from github", function () { this.slow(4000); - it("api configuration", function() { + it("api configuration", function () { if (!manager.options.githubAuthentication) { console.error("WARNING: No github_auth.json or github_auth_username env variable found, github api can give rate limits errors"); } }); - it("installing a not existing plugin", async function() { + it("installing a not existing plugin", async function () { try { await manager.installFromGithub("this/doesnotexists"); } catch (e) { @@ -255,7 +255,7 @@ describe("PluginManager:", function() { // NOTE: Initially I have tried with lodash but it doesn't have a valid structure // (missing lodash.js, probably need a compilation) - it("installing a plugin from master branch (underscore)", async function() { + it("installing a plugin from master branch (underscore)", async function () { await manager.installFromGithub("jashkenas/underscore"); const _ = manager.require("underscore"); @@ -267,7 +267,7 @@ describe("PluginManager:", function() { assert.equal(result.b, 2); }); - it("installing a plugin from commit (underscore)", async function() { + it("installing a plugin from commit (underscore)", async function () { const pluginInfo = await manager.installFromGithub("jashkenas/underscore#1aed9ec"); assert.equal(pluginInfo.version, "1.8.0"); @@ -280,7 +280,7 @@ describe("PluginManager:", function() { assert.equal(result.b, 2); }); - it("installing a plugin from tag (underscore)", async function() { + it("installing a plugin from tag (underscore)", async function () { const pluginInfo = await manager.installFromGithub("jashkenas/underscore#1.8.0"); assert.equal(pluginInfo.version, "1.8.0"); @@ -294,10 +294,10 @@ describe("PluginManager:", function() { }); }); - describe("from bitbucket", function() { + describe("from bitbucket", function () { this.slow(4000); - it("installing a not existing plugin", async function() { + it("installing a not existing plugin", async function () { try { await manager.installFromBitbucket("this/doesnotexists"); } catch (e) { @@ -306,8 +306,8 @@ describe("PluginManager:", function() { throw new Error("Expected to fail"); }); - - it("installing a plugin from master branch", async function() { + + it("installing a plugin from master branch", async function () { await manager.installFromBitbucket("quaren/live-package-test"); const multiply = manager.require("live-package-test"); @@ -318,9 +318,9 @@ describe("PluginManager:", function() { }); }); - describe("from code", function() { + describe("from code", function () { for (const invalidName of ["../test", ".\\test", "", undefined, null]) { - it(`installing a not valid plugin name "${invalidName}" is not supported`, async function() { + it(`installing a not valid plugin name "${invalidName}" is not supported`, async function () { try { const n = invalidName as any; await manager.installFromNpm(n, "9.9.9"); @@ -332,7 +332,7 @@ describe("PluginManager:", function() { }); } - it("installing a plugin", async function() { + it("installing a plugin", async function () { const code = `module.exports = "Hello from code plugin";`; await manager.installFromCode("my-code-plugin", code); @@ -343,7 +343,7 @@ describe("PluginManager:", function() { assert.equal(myPlugin, "Hello from code plugin"); }); - it("update a plugin", async function() { + it("update a plugin", async function () { const code = `module.exports = "Hello from code plugin";`; await manager.installFromCode("my-code-plugin", code); @@ -357,7 +357,7 @@ describe("PluginManager:", function() { assert.equal(myPluginV2, "V2"); }); - it("uninstalling a plugin", async function() { + it("uninstalling a plugin", async function () { const code = `module.exports = "Hello from code plugin";`; await manager.installFromCode("my-code-plugin", code); @@ -374,13 +374,13 @@ describe("PluginManager:", function() { throw new Error("Expected to fail"); }); - describe("given a plugin with an unknown dependency", function() { - beforeEach(async function() { + describe("given a plugin with an unknown dependency", function () { + beforeEach(async function () { const code = `module.exports = require("some-not-valid-dependency");`; await manager.installFromCode("my-code-plugin", code); }); - it("should give an error on require", async function() { + it("should give an error on require", async function () { try { manager.require("my-code-plugin"); } catch (e) { @@ -389,7 +389,7 @@ describe("PluginManager:", function() { throw new Error("Expected to fail"); }); - it("after a failed require it shold fail also for next require", async function() { + it("after a failed require it shold fail also for next require", async function () { // there was a bug that cache a failed plugin also on error for (let i = 0; i < 10; i++) { try { @@ -405,8 +405,8 @@ describe("PluginManager:", function() { }); - describe("run script", function() { - it("simple script", async function() { + describe("run script", function () { + it("simple script", async function () { const code = ` const a = 1; const b = 3; @@ -418,7 +418,7 @@ describe("PluginManager:", function() { assert.equal(result, 4); }); - it("script with comment at the end", async function() { + it("script with comment at the end", async function () { const code = ` const a = 1; const b = 3; @@ -430,7 +430,7 @@ describe("PluginManager:", function() { assert.equal(result, 4); }); - it("require system module", async function() { + it("require system module", async function () { const code = ` const os = require("os"); @@ -442,14 +442,14 @@ describe("PluginManager:", function() { }); }); - describe("given an installed plugin", function() { + describe("given an installed plugin", function () { let pluginInfo: IPluginInfo; - beforeEach(async function() { + beforeEach(async function () { pluginInfo = await manager.installFromNpm("moment", "2.18.1"); }); - it("alreadyInstalled function should respect semver", function() { + it("alreadyInstalled function should respect semver", function () { assert.isDefined(manager.alreadyInstalled("moment")); assert.isDefined(manager.alreadyInstalled("moment", "2.18.1")); assert.isDefined(manager.alreadyInstalled("moment", "v2.18.1")); @@ -466,7 +466,7 @@ describe("PluginManager:", function() { assert.isUndefined(manager.alreadyInstalled("moment", "^3.0.0")); }); - it("alreadyInstalled function should support greater mode (for dependencies)", function() { + it("alreadyInstalled function should support greater mode (for dependencies)", function () { assert.isDefined(manager.alreadyInstalled("moment", undefined, "satisfiesOrGreater")); assert.isDefined(manager.alreadyInstalled("moment", "2.18.1", "satisfiesOrGreater")); assert.isDefined(manager.alreadyInstalled("moment", "v2.18.1", "satisfiesOrGreater")); @@ -487,7 +487,7 @@ describe("PluginManager:", function() { assert.isUndefined(manager.alreadyInstalled("moment", "^3.0.0", "satisfiesOrGreater")); }); - it("should be available", async function() { + it("should be available", async function () { const plugins = await manager.list(); assert.equal(plugins.length, 1); assert.equal(plugins[0].name, "moment"); @@ -502,14 +502,14 @@ describe("PluginManager:", function() { assert.equal(manager.getInfo("moment"), pluginInfo); }); - it("require always return the same instance", async function() { + it("require always return the same instance", async function () { const instance1 = manager.require("moment"); const instance2 = manager.require("moment"); assert.equal(instance1, instance2); }); - it("dynamic script can require a plugin", async function() { + it("dynamic script can require a plugin", async function () { const code = ` const m = require("moment"); @@ -522,7 +522,7 @@ describe("PluginManager:", function() { assert.equal(expectedInstance, result); }); - it("code plugin can require another plugin", async function() { + it("code plugin can require another plugin", async function () { const code = ` const m = require("moment"); @@ -536,19 +536,19 @@ describe("PluginManager:", function() { assert.equal(expectedInstance, result); }); - describe("when uninstalled", function() { - beforeEach(async function() { + describe("when uninstalled", function () { + beforeEach(async function () { await manager.uninstall("moment"); }); - it("should not be available anymore", async function() { + it("should not be available anymore", async function () { const plugins = await manager.list(); assert.equal(plugins.length, 0); assert.isFalse(fs.existsSync(pluginInfo.location), "Directory still exits"); }); - it("requiring a not installed plugin throw an error", async function() { + it("requiring a not installed plugin throw an error", async function () { try { manager.require("moment"); } catch (e) { @@ -558,7 +558,7 @@ describe("PluginManager:", function() { throw new Error("Expected to fail"); }); - it("directly requiring a not installed plugin throw an error", async function() { + it("directly requiring a not installed plugin throw an error", async function () { try { require("moment"); } catch (e) { @@ -568,7 +568,7 @@ describe("PluginManager:", function() { throw new Error("Expected to fail"); }); - it("requiring a not installed plugin using it's path throw an error", async function() { + it("requiring a not installed plugin using it's path throw an error", async function () { // Ensure that the plugin is really unloaded try { require(pluginInfo.location); @@ -581,20 +581,20 @@ describe("PluginManager:", function() { }); }); - describe("given a plugin x that depend on y", function() { - describe("when plugin y is installed", function() { - beforeEach(async function() { + describe("given a plugin x that depend on y", function () { + describe("when plugin y is installed", function () { + beforeEach(async function () { await manager.installFromPath(path.join(__dirname, "my-plugin-y")); }); - it("when plugin x is installed can require plugin y", async function() { + it("when plugin x is installed can require plugin y", async function () { await manager.installFromPath(path.join(__dirname, "my-plugin-x")); const x = manager.require("my-plugin-x"); assert.equal(x.y, "y!"); }); - it("when plugin x is installed can require plugin y sub file", async function() { + it("when plugin x is installed can require plugin y sub file", async function () { await manager.installFromPath(path.join(__dirname, "my-plugin-x")); const x = manager.require("my-plugin-x"); @@ -603,10 +603,10 @@ describe("PluginManager:", function() { }); }); - describe("require", function() { + describe("require", function () { // TODO review this test, split it in microtest - it("plugins respect the same node.js behavior", async function() { + it("plugins respect the same node.js behavior", async function () { const pluginSourcePath = path.join(__dirname, "my-test-plugin"); await manager.installFromPath(pluginSourcePath); @@ -638,7 +638,7 @@ describe("PluginManager:", function() { assert.isDefined(pluginInstance.myGlobals.console); }); - it("require absolute files", async function() { + it("require absolute files", async function () { const pluginSourcePath = path.join(__dirname, "my-plugin-with-abs-require"); await manager.installFromPath(pluginSourcePath); @@ -648,7 +648,7 @@ describe("PluginManager:", function() { assert.equal(pluginInstance.myVariableFromAbsoluteFile, "value3"); }); - it("requre a plugin sub folder", async function() { + it("requre a plugin sub folder", async function () { const pluginSourcePath = path.join(__dirname, "my-test-plugin"); await manager.installFromPath(pluginSourcePath); @@ -656,7 +656,7 @@ describe("PluginManager:", function() { assert.isDefined(result, "value4"); }); - it("requre a plugin sub file", async function() { + it("requre a plugin sub file", async function () { const pluginSourcePath = path.join(__dirname, "my-test-plugin"); await manager.installFromPath(pluginSourcePath); @@ -664,7 +664,7 @@ describe("PluginManager:", function() { assert.isDefined(result, "value3"); }); - it("index file can be required explicitly or implicitly", async function() { + it("index file can be required explicitly or implicitly", async function () { const pluginSourcePath = path.join(__dirname, "my-test-plugin"); await manager.installFromPath(pluginSourcePath); @@ -675,7 +675,7 @@ describe("PluginManager:", function() { assert.equal(resultImplicit, resultExplicit2); }); - it("installing a plugin with folder as main", async function() { + it("installing a plugin with folder as main", async function () { const pluginPath = path.join(__dirname, "my-plugin-with-folder-as-main"); await manager.installFromPath(pluginPath); @@ -685,7 +685,7 @@ describe("PluginManager:", function() { assert.equal(pluginInstance.myVariable, "value1"); }); - it("installing a plugin with a circular reference in require", async function() { + it("installing a plugin with a circular reference in require", async function () { const pluginPath = path.join(__dirname, "my-plugin-with-circular-reference"); await manager.installFromPath(pluginPath); @@ -695,7 +695,7 @@ describe("PluginManager:", function() { assert.equal(pluginInstance.myVariable, "value1"); }); - it("file should wins over folder with the same name", async function() { + it("file should wins over folder with the same name", async function () { const pluginPath = path.join(__dirname, "my-plugin-file-win-over-folder"); await manager.installFromPath(pluginPath); @@ -707,8 +707,8 @@ describe("PluginManager:", function() { }); - describe("scoped plugins", function() { - it("installing a scoped plugin", async function() { + describe("scoped plugins", function () { + it("installing a scoped plugin", async function () { const pluginPath = path.join(__dirname, "my-basic-plugin-scoped"); await manager.installFromPath(pluginPath); @@ -718,7 +718,7 @@ describe("PluginManager:", function() { assert.equal(pluginInstance.myVariable, "value1"); }); - it("installing a scoped plugin with path", async function() { + it("installing a scoped plugin with path", async function () { const pluginPath = path.join(__dirname, "my-basic-plugin-scoped"); await manager.installFromPath(pluginPath); @@ -729,18 +729,18 @@ describe("PluginManager:", function() { }); }); - describe("plugins dependencies", function() { + describe("plugins dependencies", function () { this.slow(6000); - describe("Npm dependencies", function() { + describe("Npm dependencies", function () { - describe("Given a package with npm dependencies", function() { - beforeEach(async function() { + describe("Given a package with npm dependencies", function () { + beforeEach(async function () { const pluginSourcePath = path.join(__dirname, "my-plugin-with-dep"); await manager.installFromPath(pluginSourcePath); }); - it("dependencies are installed", async function() { + it("dependencies are installed", async function () { assert.equal(manager.list().length, 2); assert.equal(manager.list()[0].name, "moment"); assert.equal(manager.list()[0].location, path.join(manager.options.pluginsPath, "moment")); @@ -748,20 +748,20 @@ describe("PluginManager:", function() { assert.equal(manager.list()[1].location, path.join(manager.options.pluginsPath, "my-plugin-with-dep")); }); - it("dependencies are available", async function() { + it("dependencies are available", async function () { const pluginInstance = manager.require("my-plugin-with-dep"); assert.equal(pluginInstance.testDebug, require("debug")); // I expect to be exactly the same assert.equal(pluginInstance.testMoment, "1981/10/06"); }); - it("by default @types dependencies are not installed", async function() { + it("by default @types dependencies are not installed", async function () { for (const p of manager.list()) { assert.notEqual(p.name, "@types/express"); } }); - it("dependencies installed in the host are not installed but are available", async function() { + it("dependencies installed in the host are not installed but are available", async function () { // debug package is already available in the host for (const p of manager.list()) { @@ -769,12 +769,12 @@ describe("PluginManager:", function() { } }); - describe("uninstalling a dependency (moment)", function() { - beforeEach(async function() { + describe("uninstalling a dependency (moment)", function () { + beforeEach(async function () { await manager.uninstall("moment"); }); - it("requiring the plugin will fail", function() { + it("requiring the plugin will fail", function () { // VersionManager should be keep the dependencies of my-plugin-with-dep // after uninstalling moment const pluginInstance = manager.require("my-plugin-with-dep"); @@ -782,7 +782,7 @@ describe("PluginManager:", function() { assert.equal(pluginInstance.testMoment, "1981/10/06"); }); - it("if dependency is reinstalled plugin will work again", async function() { + it("if dependency is reinstalled plugin will work again", async function () { await manager.installFromNpm("moment", "2.18.1"); const pluginInstance = manager.require("my-plugin-with-dep"); @@ -793,9 +793,9 @@ describe("PluginManager:", function() { }); }); - describe("Github dependencies", function() { + describe("Github dependencies", function () { - it("dependencies are installed", async function() { + it("dependencies are installed", async function () { const pluginSourcePath = path.join(__dirname, "my-plugin-with-git-dep"); await manager.installFromPath(pluginSourcePath); @@ -805,12 +805,12 @@ describe("PluginManager:", function() { }); }); - describe("Given some ignored dependencies", function() { - beforeEach(function() { + describe("Given some ignored dependencies", function () { + beforeEach(function () { manager.options.ignoredDependencies = [/^@types\//, "moment"]; }); - it("ignored dependencies are not installed", async function() { + it("ignored dependencies are not installed", async function () { const pluginSourcePath = path.join(__dirname, "my-plugin-with-dep"); await manager.installFromPath(pluginSourcePath); @@ -819,7 +819,7 @@ describe("PluginManager:", function() { } }); - it("if the ignored dependencies is required the plugin will not be loaded", async function() { + it("if the ignored dependencies is required the plugin will not be loaded", async function () { const pluginSourcePath = path.join(__dirname, "my-plugin-with-dep"); await manager.installFromPath(pluginSourcePath); @@ -834,14 +834,45 @@ describe("PluginManager:", function() { }); }); - describe("handling updates", function() { + describe("Optional dependencies", function () { + describe("Given a package with optional dependencies", function () { + beforeEach(async function () { + const pluginSourcePath = path.join(__dirname, "my-plugin-with-opt-dep"); + await manager.installFromPath(pluginSourcePath); + }); + + it("optional dependencies are installed", function () { + assert.equal(manager.list().length, 2); + assert.equal(manager.list()[0].name, "moment"); + assert.equal(manager.list()[1].name, "my-plugin-with-opt-dep"); + }); + + it("optional dependencies are available", function () { + const pluginInstance = manager.require("my-plugin-with-opt-dep"); + assert.equal(pluginInstance.testMoment, "1981/10/06"); + }); + }); + + it("installation continues when an optional dependency fails", async function () { + const pluginSourcePath = path.join(__dirname, "my-plugin-with-bad-opt-dep"); + await manager.installFromPath(pluginSourcePath); + + assert.equal(manager.list().length, 1); + assert.equal(manager.list()[0].name, "my-plugin-with-bad-opt-dep"); + + const pluginInstance = manager.require("my-plugin-with-bad-opt-dep"); + assert.isTrue(pluginInstance.ok); + }); + }); + + describe("handling updates", function () { - beforeEach(async function() { + beforeEach(async function () { await manager.installFromPath(path.join(__dirname, "my-plugin-a@v1")); await manager.installFromPath(path.join(__dirname, "my-plugin-b")); // depend on my-plugin-a@1.0.0 }); - it("updating a dependency will reload dependents", async function() { + it("updating a dependency will reload dependents", async function () { // load the plugin before installing the new version // to ensure that the starting condition is valid assert.equal(manager.list().length, 2); @@ -874,7 +905,7 @@ describe("PluginManager:", function() { assert.equal(pluginInstance, "a = v1"); }); - it("updating a package that need a prev version will not downgrade the dependency", async function() { + it("updating a package that need a prev version will not downgrade the dependency", async function () { await manager.installFromPath(path.join(__dirname, "my-plugin-a@v2")); // update dependency to v2 await manager.uninstall("my-plugin-b"); @@ -900,18 +931,18 @@ describe("PluginManager:", function() { }); }); - describe("given static dependencies", function() { - beforeEach(function() { + describe("given static dependencies", function () { + beforeEach(function () { const momentStub = () => { return { format: () => "this is moment stub" }; }; - manager.options.staticDependencies = {moment: momentStub}; + manager.options.staticDependencies = { moment: momentStub }; }); - it("static dependencies are not installed but resolved correctly", async function() { + it("static dependencies are not installed but resolved correctly", async function () { const pluginSourcePath = path.join(__dirname, "my-plugin-with-dep"); await manager.installFromPath(pluginSourcePath); @@ -923,11 +954,11 @@ describe("PluginManager:", function() { }); }); - describe("Not compatible dependencies with host", function() { + describe("Not compatible dependencies with host", function () { // Note: Assume that host contains "debug" npm package at version 3 - it("dependencies are installed", async function() { + it("dependencies are installed", async function () { // this package contains "debug" at version 2 (different from the host) const pluginSourcePath = path.join(__dirname, "my-plugin-with-diff-dep"); await manager.installFromPath(pluginSourcePath); @@ -938,7 +969,7 @@ describe("PluginManager:", function() { assert.equal(manager.list()[2].name, "my-plugin-with-diff-dep"); }); - it("dependencies are available", async function() { + it("dependencies are available", async function () { const pluginSourcePath = path.join(__dirname, "my-plugin-with-diff-dep"); await manager.installFromPath(pluginSourcePath); @@ -947,7 +978,7 @@ describe("PluginManager:", function() { assert.notEqual(pluginInstance.testDebug, require("debug")); // I expect to be different (v2 vs v3) }); - it("dependencies is not the same", async function() { + it("dependencies is not the same", async function () { const pluginSourcePath = path.join(__dirname, "my-plugin-with-diff-dep"); await manager.installFromPath(pluginSourcePath); @@ -961,22 +992,22 @@ describe("PluginManager:", function() { }); }); - describe("given an host dependency", function() { + describe("given an host dependency", function () { const hostDependencyDestPath = path.join(__dirname, "..", "node_modules", "host-dependency"); // given a dependency installed in the host // with version 1 // note: I simulate an host dependency by manually copy it in the node_modules folder - before(async function() { + before(async function () { const hostDependencySourcePath = path.join(__dirname, "host-dependency@v1"); await fs.copy(hostDependencySourcePath, hostDependencyDestPath); }); - after(async function() { + after(async function () { await fs.remove(hostDependencyDestPath); }); - it("it can be resolved", function() { + it("it can be resolved", function () { const dependency = require("host-dependency"); assert.isDefined(dependency); assert.equal(dependency, "v1.0.0"); @@ -984,19 +1015,19 @@ describe("PluginManager:", function() { assert.equal(dependencyPackage.version, "1.0.0"); }); - describe("when installing plugin that depends on the host dependency", function() { - beforeEach(async function() { + describe("when installing plugin that depends on the host dependency", function () { + beforeEach(async function () { // this package depends on "host-dependency" at version ^1.0.0 const pluginSourcePath = path.join(__dirname, "my-plugin-with-host-dep"); await manager.installFromPath(pluginSourcePath); }); - it("dependency is not installed because already installed in host", function() { + it("dependency is not installed because already installed in host", function () { assert.equal(manager.list().length, 1); assert.equal(manager.list()[0].name, "my-plugin-with-host-dep"); }); - it("it is resolved using the host dependency", function() { + it("it is resolved using the host dependency", function () { const pluginInstance = manager.require("my-plugin-with-host-dep"); assert.isDefined(pluginInstance); @@ -1005,20 +1036,20 @@ describe("PluginManager:", function() { assert.equal(pluginInstance.testHostDependency, "v1.0.0"); }); - describe("when installing an update of the host dependency", function() { - beforeEach(async function() { + describe("when installing an update of the host dependency", function () { + beforeEach(async function () { const pluginSourcePath = path.join(__dirname, "host-dependency@v1.0.1"); await manager.installFromPath(pluginSourcePath); }); - it("dependency is installed/updated", function() { + it("dependency is installed/updated", function () { assert.equal(manager.list().length, 2); assert.equal(manager.list()[0].name, "my-plugin-with-host-dep"); assert.equal(manager.list()[1].name, "host-dependency"); assert.equal(manager.list()[1].version, "1.0.1"); }); - it("the updated dependency is now used by all dependants", function() { + it("the updated dependency is now used by all dependants", function () { const pluginInstance = manager.require("my-plugin-with-host-dep"); assert.isDefined(pluginInstance); @@ -1027,17 +1058,17 @@ describe("PluginManager:", function() { assert.equal(pluginInstance.testHostDependency, "v1.0.1"); }); - describe("when uninstalling the update", function() { - beforeEach(async function() { + describe("when uninstalling the update", function () { + beforeEach(async function () { await manager.uninstall("host-dependency"); }); - it("dependency is uninstalled", function() { + it("dependency is uninstalled", function () { assert.equal(manager.list().length, 1); assert.equal(manager.list()[0].name, "my-plugin-with-host-dep"); }); - it("it is again resolved using the host dependency", function() { + it("it is again resolved using the host dependency", function () { const pluginInstance = manager.require("my-plugin-with-host-dep"); assert.isDefined(pluginInstance); @@ -1051,32 +1082,32 @@ describe("PluginManager:", function() { }); }); - describe("query npm package", function() { - it("get latest version info", async function() { + describe("query npm package", function () { + it("get latest version info", async function () { const info = await manager.queryPackageFromNpm("lodash"); assert.equal("lodash", info.name); assert.isDefined(info.version, "Version not defined"); }); - it("get latest version info (with string empty version)", async function() { + it("get latest version info (with string empty version)", async function () { const info = await manager.queryPackageFromNpm("lodash", ""); assert.equal("lodash", info.name); assert.isDefined(info.version, "Version not defined"); }); - it("get latest version info (with undefined version)", async function() { + it("get latest version info (with undefined version)", async function () { const info = await manager.queryPackageFromNpm("lodash", undefined); assert.equal("lodash", info.name); assert.isDefined(info.version, "Version not defined"); }); - it("get latest version info (with null version)", async function() { + it("get latest version info (with null version)", async function () { const info = await manager.queryPackageFromNpm("lodash", null as any); assert.equal("lodash", info.name); assert.isDefined(info.version, "Version not defined"); }); - it("get specific version info", async function() { + it("get specific version info", async function () { let info = await manager.queryPackageFromNpm("lodash", "4.17.4"); assert.equal(info.name, "lodash"); assert.equal(info.version, "4.17.4"); @@ -1086,19 +1117,19 @@ describe("PluginManager:", function() { assert.equal(info.version, "4.17.4"); }); - it("get caret version range info", async function() { + it("get caret version range info", async function () { const info = await manager.queryPackageFromNpm("lodash", "^3.0.0"); assert.equal(info.name, "lodash"); assert.equal(info.version, "3.10.1"); // this test can fail if lodash publish a 3.x version }); - it("get latest version info for scoped packages", async function() { + it("get latest version info for scoped packages", async function () { const info = await manager.queryPackageFromNpm("@types/node"); assert.equal("@types/node", info.name); assert.isDefined(info.version); }); - it("get specific version info for scoped packages", async function() { + it("get specific version info for scoped packages", async function () { let info = await manager.queryPackageFromNpm("@types/node", "7.0.13"); assert.equal("@types/node", info.name); assert.equal(info.version, "7.0.13"); @@ -1108,7 +1139,7 @@ describe("PluginManager:", function() { assert.equal(info.version, "7.0.13"); }); - it("get caret version range info for scoped packages", async function() { + it("get caret version range info for scoped packages", async function () { const info = await manager.queryPackageFromNpm("@types/node", "^6.0.0"); assert.equal(info.name, "@types/node"); @@ -1117,36 +1148,36 @@ describe("PluginManager:", function() { }); }); - describe("query github package", function() { - it("get version info", async function() { + describe("query github package", function () { + it("get version info", async function () { const info = await manager.queryPackageFromGithub("lodash/lodash"); assert.equal("lodash", info.name); assert.isDefined(info.version); }); }); - describe("query package info", function() { - it("get version from github", async function() { + describe("query package info", function () { + it("get version from github", async function () { const info = await manager.queryPackage("lodash", "lodash/lodash"); assert.equal("lodash", info.name); assert.isDefined(info.version); }); - it("get version from npm", async function() { + it("get version from npm", async function () { const info = await manager.queryPackage("lodash", "4.17.4"); assert.equal("lodash", info.name); assert.isDefined(info.version); }); }); - describe("locking", function() { - beforeEach(function() { + describe("locking", function () { + beforeEach(function () { // reduce lock timeout for test reason manager.options.lockWait = 50; manager.options.lockStale = 1000; }); - it("cannot install multiple package concurrently", async function() { + it("cannot install multiple package concurrently", async function () { // I expect this to take some time... const installation1 = manager.installFromNpm("moment"); @@ -1164,9 +1195,9 @@ describe("PluginManager:", function() { throw new Error("Expected to fail"); }); - describe("given a lock", function() { + describe("given a lock", function () { - beforeEach(async function() { + beforeEach(async function () { await fs.ensureDir(manager.options.pluginsPath); // simulate a lock @@ -1174,12 +1205,12 @@ describe("PluginManager:", function() { manager.options.lockStale = 1000; }); - afterEach(async function() { + afterEach(async function () { // simulate unlock await (manager as any).syncUnlock(); }); - it("cannot install package", async function() { + it("cannot install package", async function () { const pluginSourcePath = path.join(__dirname, "my-basic-plugin"); const installation = manager.installFromPath(pluginSourcePath); @@ -1192,7 +1223,7 @@ describe("PluginManager:", function() { throw new Error("Expected to fail"); }); - it("sync is considered stale after some time", async function() { + it("sync is considered stale after some time", async function () { await sleep(manager.options.lockStale + 1); // expected to succeeded because lock is considered stale @@ -1202,15 +1233,15 @@ describe("PluginManager:", function() { }); }); - describe("sandbox", function() { - describe("given globals variables", function() { - it("should define the same globals", function() { + describe("sandbox", function () { + describe("given globals variables", function () { + it("should define the same globals", function () { const code = `module.exports = global;`; const result = manager.runScript(code); assert.equal(result.Buffer, Buffer); }); - it("unknown globals throw an exception", function() { + it("unknown globals throw an exception", function () { const code = `module.exports = someUnknownGlobalVar;`; try { manager.runScript(code); @@ -1220,13 +1251,13 @@ describe("PluginManager:", function() { throw new Error("Excepted to fail"); }); - it("globals are available", function() { + it("globals are available", function () { const code = `module.exports = encodeURIComponent("test/1");`; const result = manager.runScript(code); assert.equal(result, encodeURIComponent("test/1")); }); - it("globals are inherited from host", function() { + it("globals are inherited from host", function () { // Note: this is a bad practice (modify global...) but I support it (global as any).myCustomGlobalVar = "myCustomGlobalVar1"; const code = `module.exports = myCustomGlobalVar`; @@ -1234,7 +1265,7 @@ describe("PluginManager:", function() { assert.equal(result, "myCustomGlobalVar1"); }); - it("globals can be overwritten from host", function() { + it("globals can be overwritten from host", function () { (manager.options.sandbox.global as any) = { ...global, // copy default global myCustomGlobalVar: "myCustomGlobalVar2" @@ -1244,10 +1275,10 @@ describe("PluginManager:", function() { assert.equal(result, "myCustomGlobalVar2"); }); - it("overwritten globals not affect host, is isolated", function() { + it("overwritten globals not affect host, is isolated", function () { assert.isUndefined((global as any).SOME_OTHER_KEY, "Initially host should not have it"); - manager.options.sandbox.global = {...global, SOME_OTHER_KEY: "test1" } as any; + manager.options.sandbox.global = { ...global, SOME_OTHER_KEY: "test1" } as any; const code = `module.exports = SOME_OTHER_KEY;`; const result = manager.runScript(code); @@ -1257,8 +1288,8 @@ describe("PluginManager:", function() { }); }); - describe("given nodes types", function(){ - it("should access Buffer", function() { + describe("given nodes types", function () { + it("should access Buffer", function () { assert.equal( manager.runScript(`module.exports = Buffer.from("hello", "utf-8").length`), 5 @@ -1270,8 +1301,8 @@ describe("PluginManager:", function() { }); }); - describe("given js types", function(){ - it("should access URL", function() { + describe("given js types", function () { + it("should access URL", function () { assert.equal( manager.runScript(`module.exports = new URL('/foo', 'https://example.org/').toString()`), 'https://example.org/foo' @@ -1281,31 +1312,31 @@ describe("PluginManager:", function() { URL.toString() ); }); - it("should access Error", function() { + it("should access Error", function () { assert.equal( manager.runScript(`module.exports = new Error("an error").message;`), "an error" ); }); - it("should access URLSearchParams", function() { + it("should access URLSearchParams", function () { assert.equal( manager.runScript(`module.exports = new URLSearchParams('user=abc&query=xyz').get('user');`), "abc" ); }); - it("should access Date", function() { + it("should access Date", function () { assert.equal( manager.runScript(`module.exports = new Date(1635107735931).toString()`), new Date(1635107735931).toString() ); }); - it("should access Function", function() { + it("should access Function", function () { assert.equal( manager.runScript(`module.exports = (function(){}).constructor === Function`), true ); }); - it("should access Object", function() { + it("should access Object", function () { const code = ` module.exports = { var1: new Object().constructor === Object, @@ -1318,24 +1349,24 @@ describe("PluginManager:", function() { }); }); - describe("given an environment variables", function() { + describe("given an environment variables", function () { - beforeEach(function() { + beforeEach(function () { process.env.SOME_RANDOM_KEY = "test1"; }); - afterEach(function() { + afterEach(function () { delete process.env.SOME_RANDOM_KEY; }); - it("plugins inherit from host", function() { + it("plugins inherit from host", function () { const code = `module.exports = process.env.SOME_RANDOM_KEY;`; const result = manager.runScript(code); assert.equal(result, "test1"); }); - it("allow to override env from host", function() { + it("allow to override env from host", function () { manager.options.sandbox.env = { SOME_KEY: "test2" }; const code = `module.exports = process.env.SOME_RANDOM_KEY;`; @@ -1347,7 +1378,7 @@ describe("PluginManager:", function() { assert.equal(result2, "test2"); }); - it("overwritten env not affect host, is isolated", function() { + it("overwritten env not affect host, is isolated", function () { assert.isUndefined(process.env.SOME_PLUGIN_KEY, "Initially host should not have it"); manager.options.sandbox.env = { SOME_PLUGIN_KEY: "test2" }; @@ -1360,9 +1391,9 @@ describe("PluginManager:", function() { }); }); - describe("sandbox specific for plugin", function() { + describe("sandbox specific for plugin", function () { - it("set sandbox for a specific plugin", async function() { + it("set sandbox for a specific plugin", async function () { const code = `module.exports = process.env.SOME_RANDOM_KEY;`; await manager.installFromCode("my-plugin-with-sandbox", code); @@ -1377,7 +1408,7 @@ describe("PluginManager:", function() { assert.equal(result, "test1"); }); - it("a plugin share the same globals between modules", async function() { + it("a plugin share the same globals between modules", async function () { const pluginSourcePath = path.join(__dirname, "my-plugin-env-global"); await manager.installFromPath(pluginSourcePath); @@ -1386,7 +1417,7 @@ describe("PluginManager:", function() { assert.equal(result, "Hello world!"); }); - it("a plugin doesn't share global and env with host, is isolated", function() { + it("a plugin doesn't share global and env with host, is isolated", function () { assert.isUndefined(process.env.SOME_PLUGIN_KEY, "Initially host should not have it"); assert.isUndefined((global as any).SOME_OTHER_KEY, "Initially host should not have it"); @@ -1402,8 +1433,8 @@ describe("PluginManager:", function() { }); }); - describe("NodeRequire object inside a plugin", function() { - it("require system module", async function() { + describe("NodeRequire object inside a plugin", function () { + it("require system module", async function () { const code = `module.exports = require("fs");`; await manager.installFromCode("my-plugin-with-sandbox", code); @@ -1412,7 +1443,7 @@ describe("PluginManager:", function() { assert.equal(result, require("fs")); }); - it("require.resolve system module", async function() { + it("require.resolve system module", async function () { const code = `module.exports = require.resolve("fs");`; await manager.installFromCode("my-plugin-with-sandbox", code); @@ -1423,12 +1454,12 @@ describe("PluginManager:", function() { }); }); - describe("uninstall", function() { - afterEach(async function() { + describe("uninstall", function () { + afterEach(async function () { await manager.uninstallAll(); }); - it("uninstall a single plugin", async function() { + it("uninstall a single plugin", async function () { const pluginSourcePath = path.join(__dirname, "my-basic-plugin"); await manager.installFromPath(pluginSourcePath); @@ -1450,7 +1481,7 @@ describe("PluginManager:", function() { assert.equal(cleanedVersionFiles.length, 0); }); - it("uninstall a single plugin with multiple versions", async function() { + it("uninstall a single plugin with multiple versions", async function () { await manager.installFromPath(path.join(__dirname, "my-plugin-a@v1")); await manager.installFromPath(path.join(__dirname, "my-plugin-a@v2")); @@ -1475,7 +1506,7 @@ describe("PluginManager:", function() { assert.equal(cleanedVersionFiles.length, 0); }); - it("uninstall a single plugin with multiple versions and keep other plugins", async function() { + it("uninstall a single plugin with multiple versions and keep other plugins", async function () { await manager.installFromPath(path.join(__dirname, "my-plugin-a@v1")); await manager.installFromPath(path.join(__dirname, "my-basic-plugin")); await manager.installFromPath(path.join(__dirname, "my-plugin-a@v2")); @@ -1503,7 +1534,7 @@ describe("PluginManager:", function() { assert.equal(cleanedVersionFiles.length, 1); }); - it("uninstall a plugin with dependencies, uninstall main package", async function() { + it("uninstall a plugin with dependencies, uninstall main package", async function () { await manager.installFromPath(path.join(__dirname, "my-plugin-with-dep")); const plugins = manager.list(); @@ -1529,7 +1560,7 @@ describe("PluginManager:", function() { assert.equal(cleanedVersionFiles.length, 1); }); - it("uninstall a plugin with dependencies, uninstall dependency", async function() { + it("uninstall a plugin with dependencies, uninstall dependency", async function () { await manager.installFromPath(path.join(__dirname, "my-plugin-with-dep")); const plugins = manager.list(); @@ -1555,7 +1586,7 @@ describe("PluginManager:", function() { assert.equal(cleanedVersionFiles.length, 2); }); - it("uninstall a plugin with host dependencies", async function() { + it("uninstall a plugin with host dependencies", async function () { await manager.installFromPath(path.join(__dirname, "my-plugin-with-host-dep")); const plugins = manager.list(); @@ -1578,7 +1609,7 @@ describe("PluginManager:", function() { assert.equal(cleanedVersionFiles.length, 0); }); - it("uninstall a scoped plugin", async function() { + it("uninstall a scoped plugin", async function () { await manager.installFromPath(path.join(__dirname, "my-basic-plugin-scoped")); const plugins = manager.list(); @@ -1601,7 +1632,7 @@ describe("PluginManager:", function() { assert.equal(cleanedVersionFiles.length, 0); }); - it("uninstall a scoped plugin, keep scope directory", async function() { + it("uninstall a scoped plugin, keep scope directory", async function () { await manager.installFromPath(path.join(__dirname, "my-basic-plugin-scoped")); await manager.installFromPath(path.join(__dirname, "my-plugin-a@v1")); await manager.installFromPath(path.join(__dirname, "my-plugin-scoped-with-dep")); @@ -1642,7 +1673,7 @@ describe("PluginManager:", function() { assert.isTrue(scopedVersionFiles.includes("my-basic-plugin-scoped@1.0.0")); }); - it("uninstall a plugin with scoped dependencies", async function() { + it("uninstall a plugin with scoped dependencies", async function () { await manager.installFromPath(path.join(__dirname, "my-basic-plugin-scoped")); await manager.installFromPath(path.join(__dirname, "my-plugin-with-scoped-dep")); @@ -1668,7 +1699,7 @@ describe("PluginManager:", function() { assert.equal(cleanedVersionFiles.length, 0); }); - it("uninstall a plugin with git dependencies", async function() { + it("uninstall a plugin with git dependencies", async function () { await manager.installFromPath(path.join(__dirname, "my-plugin-with-git-dep")); const plugins = manager.list(); diff --git a/test/my-plugin-with-bad-opt-dep/index.js b/test/my-plugin-with-bad-opt-dep/index.js new file mode 100644 index 0000000..8bff2d3 --- /dev/null +++ b/test/my-plugin-with-bad-opt-dep/index.js @@ -0,0 +1,2 @@ +"use strict"; +exports.ok = true; diff --git a/test/my-plugin-with-bad-opt-dep/package.json b/test/my-plugin-with-bad-opt-dep/package.json new file mode 100644 index 0000000..d9ad998 --- /dev/null +++ b/test/my-plugin-with-bad-opt-dep/package.json @@ -0,0 +1,8 @@ +{ + "name": "my-plugin-with-bad-opt-dep", + "version": "1.0.0", + "main": "index.js", + "optionalDependencies": { + "some-non-existent-package-xyz": "1.0.0" + } +} diff --git a/test/my-plugin-with-opt-dep/index.js b/test/my-plugin-with-opt-dep/index.js new file mode 100644 index 0000000..52aace9 --- /dev/null +++ b/test/my-plugin-with-opt-dep/index.js @@ -0,0 +1,3 @@ +"use strict"; +const moment = require("moment"); +exports.testMoment = moment("19811006", "YYYYMMDD").format("YYYY/MM/DD"); diff --git a/test/my-plugin-with-opt-dep/package.json b/test/my-plugin-with-opt-dep/package.json new file mode 100644 index 0000000..0b823bb --- /dev/null +++ b/test/my-plugin-with-opt-dep/package.json @@ -0,0 +1,8 @@ +{ + "name": "my-plugin-with-opt-dep", + "version": "1.0.0", + "main": "index.js", + "optionalDependencies": { + "moment": "2.29.1" + } +}