Skip to content

Commit

Permalink
fix: exec legacyPeerDeps
Browse files Browse the repository at this point in the history
`npm exec` wasn't forwarding legacyPeerDeps to `arb.reify()`
  • Loading branch information
ruyadorno committed Aug 29, 2020
1 parent 1dbec09 commit f1b6e83
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 7 deletions.
4 changes: 2 additions & 2 deletions lib/exec.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ const escapeArg = require('./utils/escape-arg.js')
const cmd = (args, cb) => exec(args).then(() => cb()).catch(cb)

const exec = async args => {
const { package: packages, call } = npm.flatOptions
const { package: packages, call, legacyPeerDeps } = npm.flatOptions

if (call && args.length) {
throw usage
Expand Down Expand Up @@ -141,7 +141,7 @@ const exec = async args => {
throw 'canceled'
}
}
await arb.reify({ add })
await arb.reify({ legacyPeerDeps, add })
}
pathArr.unshift(resolve(installDir, 'node_modules/.bin'))
}
Expand Down
40 changes: 35 additions & 5 deletions test/lib/exec.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ const npm = {
flatOptions: {
yes: true,
call: '',
package: []
package: [],
legacyPeerDeps: false
},
localPrefix: 'local-prefix',
config: {
Expand Down Expand Up @@ -87,6 +88,7 @@ t.afterEach(cb => {
READ.length = 0
READ_RESULT = ''
READ_ERROR = null
npm.flatOptions.legacyPeerDeps = false
npm.flatOptions.package = []
npm.flatOptions.call = ''
cb()
Expand Down Expand Up @@ -151,7 +153,7 @@ t.test('npm exec foo, not present locally or in central loc', async t => {
})
t.strictSame(MKDIRPS, [installDir], 'need to make install dir')
t.match(ARB_CTOR, [ { package: ['foo'], path } ])
t.strictSame(ARB_REIFY, [{add: ['foo@']}], 'need to install foo@')
t.strictSame(ARB_REIFY, [{add: ['foo@'], legacyPeerDeps: false}], 'need to install foo@')
t.equal(PROGRESS_ENABLED, true, 'progress re-enabled')
const PATH = `${resolve(installDir, 'node_modules', '.bin')}${delimiter}${process.env.PATH}`
t.match(RUN_SCRIPTS, [{
Expand Down Expand Up @@ -229,7 +231,7 @@ t.test('npm exec foo, present locally but wrong version', async t => {
})
t.strictSame(MKDIRPS, [installDir], 'need to make install dir')
t.match(ARB_CTOR, [ { package: ['foo'], path } ])
t.strictSame(ARB_REIFY, [{ add: ['foo@2.x'] }], 'need to add foo@2.x')
t.strictSame(ARB_REIFY, [{ add: ['foo@2.x'], legacyPeerDeps: false }], 'need to add foo@2.x')
t.equal(PROGRESS_ENABLED, true, 'progress re-enabled')
const PATH = `${resolve(installDir, 'node_modules', '.bin')}${delimiter}${process.env.PATH}`
t.match(RUN_SCRIPTS, [{
Expand Down Expand Up @@ -360,7 +362,7 @@ t.test('run command with 2 packages, need install, verify sort', t => {
})
t.strictSame(MKDIRPS, [installDir], 'need to make install dir')
t.match(ARB_CTOR, [ { package: packages, path } ])
t.strictSame(ARB_REIFY, [{add}], 'need to install both packages')
t.strictSame(ARB_REIFY, [{add, legacyPeerDeps: false}], 'need to install both packages')
t.equal(PROGRESS_ENABLED, true, 'progress re-enabled')
const PATH = `${resolve(installDir, 'node_modules', '.bin')}${delimiter}${process.env.PATH}`
t.match(RUN_SCRIPTS, [{
Expand Down Expand Up @@ -502,7 +504,7 @@ t.test('prompt when installs are needed if not already present', async t => {
})
t.strictSame(MKDIRPS, [installDir], 'need to make install dir')
t.match(ARB_CTOR, [ { package: packages, path } ])
t.strictSame(ARB_REIFY, [{add}], 'need to install both packages')
t.strictSame(ARB_REIFY, [{add, legacyPeerDeps: false}], 'need to install both packages')
t.equal(PROGRESS_ENABLED, true, 'progress re-enabled')
const PATH = `${resolve(installDir, 'node_modules', '.bin')}${delimiter}${process.env.PATH}`
t.match(RUN_SCRIPTS, [{
Expand Down Expand Up @@ -656,3 +658,31 @@ t.test('abort if -n provided', async t => {
t.strictSame(RUN_SCRIPTS, [])
t.strictSame(READ, [])
})

t.test('forward legacyPeerDeps opt', async t => {
const path = t.testdir()
const installDir = resolve('cache-dir/_npx/f7fbba6e0636f890')
npm.localPrefix = path
ARB_ACTUAL_TREE[path] = {
children: new Map()
}
ARB_ACTUAL_TREE[installDir] = {
children: new Map()
}
MANIFESTS.foo = {
name: 'foo',
version: '1.2.3',
bin: {
foo: 'foo'
},
_from: 'foo@'
}
npm.flatOptions.yes = true
npm.flatOptions.legacyPeerDeps = true
await exec(['foo'], er => {
if (er) {
throw er
}
})
t.strictSame(ARB_REIFY, [{add: ['foo@'], legacyPeerDeps: true}], 'need to install foo@ using legacyPeerDeps opt')
})

0 comments on commit f1b6e83

Please sign in to comment.