diff options
author | Rebecca Turner <me@re-becca.org> | 2015-08-13 11:49:03 +0300 |
---|---|---|
committer | Rebecca Turner <me@re-becca.org> | 2015-08-14 03:43:11 +0300 |
commit | d2178a9ea034ede58f02919f259ee072a6554c59 (patch) | |
tree | a2fa02779624f420aedebe6f93dfcf243e8205ee /test | |
parent | 981107a42296ebd8e676f4ae8dcdc772c90b1cff (diff) |
install: Ensure walking the tree doesn't result in infinite loops
Fixes: #9223
PR-URL: https://github.com/npm/npm/pull/9261
Diffstat (limited to 'test')
-rw-r--r-- | test/tap/symlink-cycle.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/tap/symlink-cycle.js b/test/tap/symlink-cycle.js new file mode 100644 index 000000000..b09b25acc --- /dev/null +++ b/test/tap/symlink-cycle.js @@ -0,0 +1,61 @@ +'use strict' +var fs = require('fs') +var path = require('path') +var test = require('tap').test +var mkdirp = require('mkdirp') +var osenv = require('osenv') +var rimraf = require('rimraf') +var writeFileSync = require('fs').writeFileSync +var common = require('../common-tap.js') + +var base = path.join(__dirname, path.basename(__filename, '.js')) +var cycle = path.join(base, 'cycle') + +var cycleJSON = { + name: 'cycle', + version: '1.0.0', + description: '', + main: 'index.js', + scripts: { + test: 'echo \"Error: no test specified\" && exit 1' + }, + dependencies: { + 'cycle': '*' + }, + author: '', + license: 'ISC' +} + +test('setup', function (t) { + setup() + t.end() +}) + +test('ls', function (t) { + process.chdir(cycle) + common.npm(['ls'], {}, function (err, code, stdout, stderr) { + t.ifError(err, 'installed w/o error') + t.is(stderr, '', 'no warnings printed to stderr') + t.end() + }) +}) + +test('cleanup', function (t) { + process.chdir(osenv.tmpdir()) + cleanup() + t.end() +}) + +function cleanup () { + rimraf.sync(base) +} + +function setup () { + cleanup() + mkdirp.sync(path.join(cycle, 'node_modules')) + writeFileSync( + path.join(cycle, 'package.json'), + JSON.stringify(cycleJSON, null, 2) + ) + fs.symlinkSync(cycle, path.join(cycle, 'node_modules', 'cycle')) +} |