1var fs = require('graceful-fs') 2var path = require('path') 3 4var mr = require('npm-registry-mock') 5var test = require('tap').test 6 7var common = require('../common-tap.js') 8var server 9 10var pkg = common.pkg 11 12var EXEC_OPTS = { cwd: pkg } 13 14var json = { 15 name: 'outdated-json', 16 author: 'Rockbert', 17 version: '0.0.0', 18 dependencies: { 19 underscore: '~1.3.1' 20 }, 21 devDependencies: { 22 request: '~0.9.0' 23 } 24} 25 26var expected = { 27 underscore: { 28 current: '1.3.3', 29 wanted: '1.3.3', 30 latest: '1.5.1', 31 location: 'node_modules' + path.sep + 'underscore' 32 }, 33 request: { 34 current: '0.9.5', 35 wanted: '0.9.5', 36 latest: '2.27.0', 37 location: 'node_modules' + path.sep + 'request' 38 } 39} 40 41test('setup', function (t) { 42 fs.writeFileSync( 43 path.join(pkg, 'package.json'), 44 JSON.stringify(json, null, 2) 45 ) 46 process.chdir(pkg) 47 mr({ port: common.port }, function (er, s) { 48 t.ifError(er, 'mock registry should never fail to start') 49 server = s 50 common.npm( 51 [ 52 '--registry', common.registry, 53 '--silent', 54 'install' 55 ], 56 EXEC_OPTS, 57 function (err, code) { 58 t.ifError(err, 'npm install ran without issue') 59 t.notOk(code, 'npm install ran without raising error code') 60 61 t.end() 62 } 63 ) 64 }) 65}) 66 67test('it should log json data', function (t) { 68 common.npm( 69 [ 70 '--registry', common.registry, 71 '--silent', 72 '--json', 73 'outdated' 74 ], 75 EXEC_OPTS, 76 function (err, code, stdout) { 77 t.ifError(err, 'npm outdated ran without error') 78 t.is(code, 1, 'npm outdated exited with code 1') 79 var out 80 t.doesNotThrow(function () { 81 out = JSON.parse(stdout) 82 }, 'output correctly parsed as JSON') 83 t.deepEqual(out, expected) 84 85 t.end() 86 } 87 ) 88}) 89 90test('it should log json data even when the list is empty', function (t) { 91 common.npm( 92 [ 93 'rm', 94 'request', 95 'underscore' 96 ], 97 EXEC_OPTS, 98 function (er, code, stdout) { 99 t.ifError(er, 'run without error') 100 t.is(code, 0, 'successful exit status') 101 common.npm( 102 [ 103 '--registry', common.registry, 104 '--silent', 105 '--json', 106 'outdated' 107 ], 108 EXEC_OPTS, 109 function (er, code, stdout) { 110 t.ifError(er, 'run without error') 111 t.is(code, 0, 'successful exit status') 112 t.same(JSON.parse(stdout), {}, 'got an empty object printed') 113 t.end() 114 } 115 ) 116 } 117 ) 118}) 119 120test('cleanup', function (t) { 121 server.close() 122 t.end() 123}) 124