-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Partially reverts #40/#86, keeping the "Don't record linked deps as bundled" part but reverting the "Don't iterate into linked deps" part. It seems that we need to record dependencies of linked deps in order for `npm ci` to work. Fix: https://npm.community/t/6-8-0-npm-ci-fails-with-local-dependency/5385 Fix: https://npm.community/t/npm-ci-fail-to-local-packages/6076 PR-URL: #216 Credit: @jfirebaugh Close: #216 Reviewed-by: @isaacs EDIT: Updated test to not rely on network and follow latest and greatest test patterns.
- Loading branch information
1 parent
3dcf86f
commit 2fb0509
Showing
3 changed files
with
86 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
const fs = require('graceful-fs') | ||
const path = require('path') | ||
|
||
const mkdirp = require('mkdirp') | ||
const t = require('tap') | ||
|
||
const common = require('../common-tap.js') | ||
|
||
const pkg = common.pkg + '/package' | ||
|
||
const EXEC_OPTS = { | ||
cwd: pkg, | ||
stdio: [0, 1, 2], | ||
env: common.newEnv().extend({ | ||
npm_config_registry: common.registry | ||
}) | ||
} | ||
|
||
const localDependencyJson = { | ||
name: 'local-dependency', | ||
version: '0.0.0', | ||
dependencies: { | ||
'test-package': '0.0.0' | ||
} | ||
} | ||
|
||
const dependentJson = { | ||
name: 'dependent', | ||
version: '0.0.0', | ||
dependencies: { | ||
'local-dependency': '../local-dependency' | ||
} | ||
} | ||
|
||
const target = path.resolve(pkg, '../local-dependency') | ||
const mr = require('npm-registry-mock') | ||
let server | ||
t.teardown(() => { | ||
if (server) { | ||
server.close() | ||
} | ||
}) | ||
|
||
t.test('setup', function (t) { | ||
mkdirp.sync(target) | ||
fs.writeFileSync( | ||
path.join(target, 'package.json'), | ||
JSON.stringify(localDependencyJson, null, 2) | ||
) | ||
mkdirp.sync(pkg) | ||
fs.writeFileSync( | ||
path.join(pkg, 'package.json'), | ||
JSON.stringify(dependentJson, null, 2) | ||
) | ||
mr({ port: common.port }, (er, s) => { | ||
if (er) { | ||
throw er | ||
} | ||
server = s | ||
t.end() | ||
}) | ||
}) | ||
|
||
t.test('\'npm install\' should install local pkg from sub path', function (t) { | ||
common.npm(['install', '--loglevel=silent'], EXEC_OPTS, function (err, code) { | ||
if (err) throw err | ||
t.equal(code, 0, 'npm install exited with code') | ||
t.ok(fs.statSync(path.resolve(pkg, 'node_modules/local-dependency/package.json')).isFile(), 'local dependency package.json exists') | ||
t.ok(fs.statSync(path.resolve(pkg, 'node_modules/local-dependency/node_modules/test-package')).isDirectory(), 'transitive dependency installed') | ||
t.end() | ||
}) | ||
}) | ||
|
||
t.test('\'npm ci\' should work', function (t) { | ||
common.npm(['ci', '--loglevel=silent'], EXEC_OPTS, function (err, code) { | ||
if (err) throw err | ||
t.equal(code, 0, 'npm install exited with code') | ||
t.ok(fs.statSync(path.resolve(pkg, 'node_modules/local-dependency/package.json')).isFile(), 'local dependency package.json exists') | ||
t.ok(fs.statSync(path.resolve(pkg, 'node_modules/local-dependency/node_modules/test-package')).isDirectory(), 'transitive dependency installed') | ||
t.end() | ||
}) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters