1var writeFileSync = require('graceful-fs').writeFileSync 2var resolve = require('path').resolve 3 4var mkdirp = require('mkdirp') 5var Bluebird = require('bluebird') 6var mr = Bluebird.promisify(require('npm-registry-mock')) 7var test = require('tap').test 8var common = require('../common-tap.js') 9 10var pkg = common.pkg 11var dep = resolve(pkg, 'deps', 'glock') 12var modules = resolve(pkg, 'node_modules') 13 14var expected = 15 '\n' + 16 '│ ' + pkg + '\n' + 17 '│ \n' + 18 '└── glock@1.8.7\n' + 19 ' an inexplicably hostile sample package\n' + 20 ' git+https://github.com/npm/glo.ck.git\n' + 21 ' https://glo.ck\n' + 22 ' file:glock-1.8.7.tgz\n' + 23 '\n' 24 25var EXEC_OPTS = { cwd: pkg } 26 27var fixture = { 28 'name': 'glock', 29 'version': '1.8.7', 30 'private': true, 31 'description': 'an inexplicably hostile sample package', 32 'homepage': 'https://glo.ck', 33 'repository': 'https://github.com/npm/glo.ck', 34 'dependencies': { 35 'underscore': '1.5.1' 36 } 37} 38 39var deppack 40 41test('setup', function (t) { 42 mkdirp.sync(modules) 43 mkdirp.sync(dep) 44 45 writeFileSync(resolve(dep, 'package.json'), JSON.stringify(fixture)) 46 return mr({ port: common.port }).then((s) => { 47 t.parent.teardown(() => s.close()) 48 return common.npm(['pack', dep], EXEC_OPTS) 49 }).spread((code, stdout) => { 50 t.is(code, 0, 'pack') 51 deppack = stdout.trim() 52 }) 53}) 54 55test('#6311: npm ll --depth=0 duplicates listing', function (t) { 56 common.npm( 57 [ 58 '--loglevel', 'silent', 59 '--registry', common.registry, 60 '--parseable', 61 'install', deppack 62 ], 63 EXEC_OPTS, 64 function (err, code, stdout, stderr) { 65 if (err) throw err 66 t.notOk(code, 'npm install exited cleanly') 67 t.is(stderr, '', 'npm install ran silently') 68 t.match( 69 stdout.trim(), 70 new RegExp( 71 '^add\tunderscore\t1[.]5[.]1\tnode_modules[\\\\/]underscore\t\t[\n]' + 72 'add\tglock\t1[.]8[.]7\tnode_modules[\\\\/]glock$' 73 ), 74 'got expected install output' 75 ) 76 77 common.npm( 78 [ 79 '--loglevel', 'silent', 80 'ls', '--long', 81 '--unicode=true', 82 '--depth', '0' 83 ], 84 EXEC_OPTS, 85 function (err, code, stdout, stderr) { 86 if (err) throw err 87 t.is(code, 0, 'npm ll exited cleanly') 88 t.is(stderr, '', 'npm ll ran silently') 89 t.equal( 90 stdout, 91 expected, 92 'got expected package name' 93 ) 94 95 t.end() 96 } 97 ) 98 } 99 ) 100}) 101