1var test = require('tap').test 2var path = require('path') 3var common = require('../common-tap.js') 4var pkg = common.pkg 5var tmp = path.join(pkg, 'tmp') 6var cache = common.cache 7var fs = require('fs') 8var mr = require('npm-registry-mock') 9var packageJson = path.resolve(pkg, 'package.json') 10 11fs.writeFileSync(packageJson, JSON.stringify({ 12 'name': 'sorted-package-json', 13 'version': '0.0.0', 14 'description': '', 15 'main': 'index.js', 16 'scripts': { 17 'test': 'echo \'Error: no test specified\' && exit 1' 18 }, 19 'author': 'Rocko Artischocko', 20 'license': 'ISC', 21 'dependencies': { 22 'underscore': '^1.3.3', 23 'request': '^0.9.0' 24 } 25}, null, 2), 'utf8') 26 27test('sorting dependencies', function (t) { 28 var before = JSON.parse(fs.readFileSync(packageJson).toString()) 29 30 mr({ port: common.port }, function (er, s) { 31 // underscore is already in the package.json, 32 // but --save will trigger a rewrite with sort 33 common.npm([ 34 'install', 35 '--save', 'underscore@1.3.3', 36 '--no-progress', 37 '--cache', cache, 38 '--tmp', tmp, 39 '--registry', common.registry 40 ], { 41 cwd: pkg 42 }, function (err, code, stdout, stderr) { 43 t.ifError(err, 'no error') 44 t.equal(code, 0, 'npm install exited with code') 45 var result = fs.readFileSync(packageJson).toString() 46 var resultAsJson = JSON.parse(result) 47 48 s.close() 49 50 t.same(Object.keys(resultAsJson.dependencies), 51 Object.keys(before.dependencies).sort()) 52 53 t.notSame(Object.keys(resultAsJson.dependencies), 54 Object.keys(before.dependencies)) 55 56 t.ok(resultAsJson.dependencies.underscore) 57 t.ok(resultAsJson.dependencies.request) 58 t.end() 59 }) 60 }) 61}) 62