From 1836d17b4fc4c0164df2fe1ccaca4d2f16f6f2d1 Mon Sep 17 00:00:00 2001 From: Kristoffer K Date: Wed, 30 Sep 2020 15:47:31 -0700 Subject: [PATCH] fix: handle package managers with a bin array correctly (#20) * test: fix tests on older versions of node * test: fix tests on Windows * fix: handle package managers with a bin array correctly --- .pnp.js | 35 ++++++++++++++++++ ...rator-npm-7.10.4-dd7a5fdb9c-5a20d8bcbf.zip | Bin 0 -> 3395 bytes ...erator-npm-7.8.3-8a723173b5-4ba0375375.zip | Bin 0 -> 2945 bytes babel.config.js | 1 + package.json | 1 + sources/pmmUtils.ts | 10 ++++- tests/Disable.test.ts | 2 +- tests/Enable.test.ts | 2 +- tests/main.test.ts | 28 +++++++++++--- yarn.lock | 24 ++++++++++++ 10 files changed, 94 insertions(+), 9 deletions(-) create mode 100644 .yarn/cache/@babel-plugin-proposal-nullish-coalescing-operator-npm-7.10.4-dd7a5fdb9c-5a20d8bcbf.zip create mode 100644 .yarn/cache/@babel-plugin-syntax-nullish-coalescing-operator-npm-7.8.3-8a723173b5-4ba0375375.zip diff --git a/.pnp.js b/.pnp.js index 7e25f4f..e4e9651 100755 --- a/.pnp.js +++ b/.pnp.js @@ -40,6 +40,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@babel/core", "npm:7.11.0"], ["@babel/plugin-proposal-class-properties", "virtual:0bda696f47fa4339976f909c007f0dc954386da51b8923bf264010d9929618071aa538c29b76d4b6c53f7388a7d83508f2a5027eb81cfc74b39b9d4a0b1a8c5a#npm:7.10.4"], ["@babel/plugin-proposal-decorators", "virtual:0bda696f47fa4339976f909c007f0dc954386da51b8923bf264010d9929618071aa538c29b76d4b6c53f7388a7d83508f2a5027eb81cfc74b39b9d4a0b1a8c5a#npm:7.10.5"], + ["@babel/plugin-proposal-nullish-coalescing-operator", "virtual:0bda696f47fa4339976f909c007f0dc954386da51b8923bf264010d9929618071aa538c29b76d4b6c53f7388a7d83508f2a5027eb81cfc74b39b9d4a0b1a8c5a#npm:7.10.4"], ["@babel/plugin-transform-modules-commonjs", "virtual:0bda696f47fa4339976f909c007f0dc954386da51b8923bf264010d9929618071aa538c29b76d4b6c53f7388a7d83508f2a5027eb81cfc74b39b9d4a0b1a8c5a#npm:7.8.3"], ["@babel/preset-typescript", "virtual:0bda696f47fa4339976f909c007f0dc954386da51b8923bf264010d9929618071aa538c29b76d4b6c53f7388a7d83508f2a5027eb81cfc74b39b9d4a0b1a8c5a#npm:7.10.4"], ["@types/debug", "npm:4.1.5"], @@ -487,6 +488,23 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["@babel/plugin-proposal-nullish-coalescing-operator", [ + ["virtual:0bda696f47fa4339976f909c007f0dc954386da51b8923bf264010d9929618071aa538c29b76d4b6c53f7388a7d83508f2a5027eb81cfc74b39b9d4a0b1a8c5a#npm:7.10.4", { + "packageLocation": "./.yarn/$$virtual/@babel-plugin-proposal-nullish-coalescing-operator-virtual-bd98b5d760/0/cache/@babel-plugin-proposal-nullish-coalescing-operator-npm-7.10.4-dd7a5fdb9c-5a20d8bcbf.zip/node_modules/@babel/plugin-proposal-nullish-coalescing-operator/", + "packageDependencies": [ + ["@babel/plugin-proposal-nullish-coalescing-operator", "virtual:0bda696f47fa4339976f909c007f0dc954386da51b8923bf264010d9929618071aa538c29b76d4b6c53f7388a7d83508f2a5027eb81cfc74b39b9d4a0b1a8c5a#npm:7.10.4"], + ["@babel/core", "npm:7.11.0"], + ["@babel/helper-plugin-utils", "npm:7.10.4"], + ["@babel/plugin-syntax-nullish-coalescing-operator", "virtual:bd98b5d760bf6764f08ba70bbf309191487113e76cad7ab625345d176aafe8794d4418a3d1cce882bd210ecae1f155ab0c4932e4314122ae5026a8a5bdfb6d0e#npm:7.8.3"], + ["@types/babel__core", null] + ], + "packagePeers": [ + "@babel/core", + "@types/babel__core" + ], + "linkType": "HARD", + }] + ]], ["@babel/plugin-syntax-bigint", [ ["virtual:c35bc3215fec2d22c38f8c1112d7d34c3c55792cf1e9e148aa8755cb2680310d8e91f690f866e8073fe05de053b0487b1209bda10126d6a4d518f8f822a23126#npm:7.8.3", { "packageLocation": "./.yarn/$$virtual/@babel-plugin-syntax-bigint-virtual-cb6879adb0/0/cache/@babel-plugin-syntax-bigint-npm-7.8.3-b05d971e6c-8c9b610377.zip/node_modules/@babel/plugin-syntax-bigint/", @@ -519,6 +537,22 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["@babel/plugin-syntax-nullish-coalescing-operator", [ + ["virtual:bd98b5d760bf6764f08ba70bbf309191487113e76cad7ab625345d176aafe8794d4418a3d1cce882bd210ecae1f155ab0c4932e4314122ae5026a8a5bdfb6d0e#npm:7.8.3", { + "packageLocation": "./.yarn/$$virtual/@babel-plugin-syntax-nullish-coalescing-operator-virtual-3353bb767f/0/cache/@babel-plugin-syntax-nullish-coalescing-operator-npm-7.8.3-8a723173b5-4ba0375375.zip/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/", + "packageDependencies": [ + ["@babel/plugin-syntax-nullish-coalescing-operator", "virtual:bd98b5d760bf6764f08ba70bbf309191487113e76cad7ab625345d176aafe8794d4418a3d1cce882bd210ecae1f155ab0c4932e4314122ae5026a8a5bdfb6d0e#npm:7.8.3"], + ["@babel/core", "npm:7.11.0"], + ["@babel/helper-plugin-utils", "npm:7.8.3"], + ["@types/babel__core", null] + ], + "packagePeers": [ + "@babel/core", + "@types/babel__core" + ], + "linkType": "HARD", + }] + ]], ["@babel/plugin-syntax-object-rest-spread", [ ["virtual:c35bc3215fec2d22c38f8c1112d7d34c3c55792cf1e9e148aa8755cb2680310d8e91f690f866e8073fe05de053b0487b1209bda10126d6a4d518f8f822a23126#npm:7.8.3", { "packageLocation": "./.yarn/$$virtual/@babel-plugin-syntax-object-rest-spread-virtual-229e140fb3/0/cache/@babel-plugin-syntax-object-rest-spread-npm-7.8.3-60bd05b6ae-db5dfb39fa.zip/node_modules/@babel/plugin-syntax-object-rest-spread/", @@ -2568,6 +2602,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@babel/core", "npm:7.11.0"], ["@babel/plugin-proposal-class-properties", "virtual:0bda696f47fa4339976f909c007f0dc954386da51b8923bf264010d9929618071aa538c29b76d4b6c53f7388a7d83508f2a5027eb81cfc74b39b9d4a0b1a8c5a#npm:7.10.4"], ["@babel/plugin-proposal-decorators", "virtual:0bda696f47fa4339976f909c007f0dc954386da51b8923bf264010d9929618071aa538c29b76d4b6c53f7388a7d83508f2a5027eb81cfc74b39b9d4a0b1a8c5a#npm:7.10.5"], + ["@babel/plugin-proposal-nullish-coalescing-operator", "virtual:0bda696f47fa4339976f909c007f0dc954386da51b8923bf264010d9929618071aa538c29b76d4b6c53f7388a7d83508f2a5027eb81cfc74b39b9d4a0b1a8c5a#npm:7.10.4"], ["@babel/plugin-transform-modules-commonjs", "virtual:0bda696f47fa4339976f909c007f0dc954386da51b8923bf264010d9929618071aa538c29b76d4b6c53f7388a7d83508f2a5027eb81cfc74b39b9d4a0b1a8c5a#npm:7.8.3"], ["@babel/preset-typescript", "virtual:0bda696f47fa4339976f909c007f0dc954386da51b8923bf264010d9929618071aa538c29b76d4b6c53f7388a7d83508f2a5027eb81cfc74b39b9d4a0b1a8c5a#npm:7.10.4"], ["@types/debug", "npm:4.1.5"], diff --git a/.yarn/cache/@babel-plugin-proposal-nullish-coalescing-operator-npm-7.10.4-dd7a5fdb9c-5a20d8bcbf.zip b/.yarn/cache/@babel-plugin-proposal-nullish-coalescing-operator-npm-7.10.4-dd7a5fdb9c-5a20d8bcbf.zip new file mode 100644 index 0000000000000000000000000000000000000000..0d092e8bc7a5101f5eda1d933df7cbd3f6aaad73 GIT binary patch literal 3395 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 literal 0 HcmV?d00001 diff --git a/babel.config.js b/babel.config.js index f055416..78f5926 100644 --- a/babel.config.js +++ b/babel.config.js @@ -6,5 +6,6 @@ module.exports = { [`@babel/plugin-proposal-decorators`, {legacy: true}], [`@babel/plugin-proposal-class-properties`, {loose: true}], [`@babel/plugin-transform-modules-commonjs`], + [`@babel/plugin-proposal-nullish-coalescing-operator`], ], }; diff --git a/package.json b/package.json index 9aa8910..402a94b 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@babel/core": "^7.11.0", "@babel/plugin-proposal-class-properties": "^7.10.4", "@babel/plugin-proposal-decorators": "^7.10.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", "@babel/plugin-transform-modules-commonjs": "^7.8.3", "@babel/preset-typescript": "^7.10.4", "@types/debug": "^4.1.5", diff --git a/sources/pmmUtils.ts b/sources/pmmUtils.ts index 455d563..ed5278f 100644 --- a/sources/pmmUtils.ts +++ b/sources/pmmUtils.ts @@ -130,7 +130,13 @@ export async function installVersion(installTarget: string, locator: Locator, {s export async function runVersion(installSpec: { location: string, spec: PackageManagerSpec }, locator: Locator, binName: string, args: Array, context: Context) { let binPath: string | null = null; if (Array.isArray(installSpec.spec.bin)) { - binPath = path.join(installSpec.location, `${binName}.js`); + if (installSpec.spec.bin.some(bin => bin === binName)) { + const parsedUrl = new URL(installSpec.spec.url); + const ext = path.posix.extname(parsedUrl.pathname); + if (ext === `.js`) { + binPath = path.join(installSpec.location, path.posix.basename(parsedUrl.pathname)); + } + } } else { for (const [name, dest] of Object.entries(installSpec.spec.bin)) { if (name === binName) { @@ -141,7 +147,7 @@ export async function runVersion(installSpec: { location: string, spec: PackageM } if (!binPath) - throw new Error(`Assertion failed: Unable to locate bin path`); + throw new Error(`Assertion failed: Unable to locate path for bin '${binName}'`); return new Promise((resolve, reject) => { process.on(`SIGINT`, () => { diff --git a/tests/Disable.test.ts b/tests/Disable.test.ts index 7dd4bd5..3c9822a 100644 --- a/tests/Disable.test.ts +++ b/tests/Disable.test.ts @@ -9,7 +9,7 @@ import {runCli} from './_runCli'; const engine = new Engine(); beforeEach(async () => { - process.env.COREPACK_HOME = await xfs.mktempPromise(); + process.env.COREPACK_HOME = npath.fromPortablePath(await xfs.mktempPromise()); }); async function makeBin(cwd: PortablePath, name: Filename) { diff --git a/tests/Enable.test.ts b/tests/Enable.test.ts index 2cebe67..500db0a 100644 --- a/tests/Enable.test.ts +++ b/tests/Enable.test.ts @@ -9,7 +9,7 @@ import {runCli} from './_runCli'; const engine = new Engine(); beforeEach(async () => { - process.env.COREPACK_HOME = await xfs.mktempPromise(); + process.env.COREPACK_HOME = npath.fromPortablePath(await xfs.mktempPromise()); }); async function makeBin(cwd: PortablePath, name: Filename) { diff --git a/tests/main.test.ts b/tests/main.test.ts index 5f0a1e2..07ad611 100644 --- a/tests/main.test.ts +++ b/tests/main.test.ts @@ -1,11 +1,11 @@ -import {Filename, ppath, xfs} from '@yarnpkg/fslib'; +import {Filename, ppath, xfs, npath} from '@yarnpkg/fslib'; -import config from '../config.json'; +import config from '../config.json'; -import {runCli} from './_runCli'; +import {runCli} from './_runCli'; beforeEach(async () => { - process.env.COREPACK_HOME = await xfs.mktempPromise(); + process.env.COREPACK_HOME = npath.fromPortablePath(await xfs.mktempPromise()); }); for (const [name, version] of [[`yarn`, `1.22.4`], [`yarn`, `2.0.0-rc.30`], [`pnpm`, `4.11.6`], [`npm`, `6.14.2`]]) { @@ -169,7 +169,7 @@ it(`should support hydrating package managers from cached archives`, async () => }); // Use a new cache - process.env.COREPACK_HOME = await xfs.mktempPromise(); + process.env.COREPACK_HOME = npath.fromPortablePath(await xfs.mktempPromise()); // Disable the network to make sure we don't succeed by accident process.env.COREPACK_ENABLE_NETWORK = `0`; @@ -193,3 +193,21 @@ it(`should support hydrating package managers from cached archives`, async () => } }); }); + +it(`should support running package managers with bin array`, async () => { + await xfs.mktempPromise(async cwd => { + await xfs.writeJsonPromise(ppath.join(cwd, `package.json` as Filename), { + packageManager: `yarn@2.2.2`, + }); + + await expect(runCli(cwd, [`yarn`, `yarnpkg`, `--version`])).resolves.toMatchObject({ + stdout: `2.2.2\n`, + exitCode: 0, + }); + + await expect(runCli(cwd, [`yarn`, `yarn`, `--version`])).resolves.toMatchObject({ + stdout: `2.2.2\n`, + exitCode: 0, + }); + }); +}); diff --git a/yarn.lock b/yarn.lock index e2eaaf2..de2c9d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -403,6 +403,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5a20d8bcbf2926dde3e9edcf847eaa5485d0d0fea76d0683ef1cafb11e0c35e46620391916283e1a9c0f76351e8c5ecccebf0d3a6bdf24559c5ad381433a0e3a + languageName: node + linkType: hard + "@babel/plugin-syntax-bigint@npm:^7.0.0": version: 7.8.3 resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" @@ -425,6 +437,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.0": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4ba03753759a2d9783b792c060147a20f474f76c42edf77cbf89c6669f9f22ffb3cbba4facdd8ce651129db6089a81feca1f7e42da75244eabedecba37bd20be + languageName: node + linkType: hard + "@babel/plugin-syntax-object-rest-spread@npm:^7.0.0": version: 7.8.3 resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" @@ -2212,6 +2235,7 @@ __metadata: "@babel/core": ^7.11.0 "@babel/plugin-proposal-class-properties": ^7.10.4 "@babel/plugin-proposal-decorators": ^7.10.5 + "@babel/plugin-proposal-nullish-coalescing-operator": ^7.10.4 "@babel/plugin-transform-modules-commonjs": ^7.8.3 "@babel/preset-typescript": ^7.10.4 "@types/debug": ^4.1.5