1 var test = require("tap").test
2 , path = require("path")
3 , rimraf = require("rimraf")
4 , mkdirp = require("mkdirp")
5 , spawn = require("child_process").spawn
6 , npm = require.resolve("../../bin/npm-cli.js")
7 , node = process.execPath
8 , pkg = path.resolve(__dirname, "sorted-package-json")
9 , tmp = path.join(pkg, "tmp")
10 , cache = path.join(pkg, "cache")
12 , common = require("../common-tap.js")
13 , mr = require("npm-registry-mock")
14 , osenv = require("osenv")
17 test("sorting dependencies", function (t) {
18 var packageJson = path.resolve(pkg, "package.json")
25 var before = JSON.parse(fs.readFileSync(packageJson).toString())
27 mr({port : common.port}, function (er, s) {
28 // underscore is already in the package.json,
29 // but --save will trigger a rewrite with sort
30 var child = spawn(node, [npm, "install", "--save", "underscore@1.3.3", "--no-progress", "--loglevel=error"], {
33 "npm_config_registry": common.registry,
34 "npm_config_cache": cache,
35 "npm_config_tmp": tmp,
36 "npm_config_prefix": pkg,
37 "npm_config_global": "false",
38 HOME: process.env.HOME,
39 Path: process.env.PATH,
40 PATH: process.env.PATH
42 stdio: ['ignore', 'ignore', process.stderr]
45 child.on("close", function (code) {
46 t.equal(code, 0, "npm install exited with code")
47 var result = fs.readFileSync(packageJson).toString()
48 , resultAsJson = JSON.parse(result)
52 t.same(Object.keys(resultAsJson.dependencies),
53 Object.keys(before.dependencies).sort())
55 t.notSame(Object.keys(resultAsJson.dependencies),
56 Object.keys(before.dependencies))
58 t.ok(resultAsJson.dependencies.underscore)
59 t.ok(resultAsJson.dependencies.request)
65 test("cleanup", function (t) {
74 fs.writeFileSync(path.resolve(pkg, "package.json"), JSON.stringify({
75 "name": "sorted-package-json",
80 "test": "echo \"Error: no test specified\" && exit 1"
82 "author": "Rocko Artischocko",
85 "underscore": "^1.3.3",
92 process.chdir(osenv.tmpdir())