var common = require("../common-tap.js") var test = require("tap").test var npm = require.resolve("../../bin/npm-cli.js") var osenv = require("osenv") var path = require("path") var fs = require("fs") var rimraf = require("rimraf") var mkdirp = require("mkdirp") var mr = require("npm-registry-mock") var child var spawn = require("child_process").spawn var node = process.execPath var pkg = process.env.npm_config_tmp || "/tmp" pkg += path.sep + "noargs-install-config-save" function writePackageJson() { rimraf.sync(pkg) mkdirp.sync(pkg) mkdirp.sync(pkg + "/cache") fs.writeFileSync(pkg + "/package.json", JSON.stringify({ "author": "Rocko Artischocko", "name": "noargs", "version": "0.0.0", "devDependencies": { "underscore": "1.3.1" } }), 'utf8') } function createChild (args) { var env = { npm_config_save: true, npm_config_registry: common.registry, npm_config_cache: pkg + "/cache", HOME: process.env.HOME, Path: process.env.PATH, PATH: process.env.PATH } if (process.platform === "win32") env.npm_config_cache = "%APPDATA%\\npm-cache" return spawn(node, args, { cwd: pkg, env: env }) } test("does not update the package.json with empty arguments", function (t) { writePackageJson() t.plan(1) mr(common.port, function (s) { var child = createChild([npm, "install"]) child.on("close", function (m) { var text = JSON.stringify(fs.readFileSync(pkg + "/package.json", "utf8")) t.ok(text.indexOf('"dependencies') === -1) s.close() t.end() }) }) }) test("updates the package.json (adds dependencies) with an argument", function (t) { writePackageJson() t.plan(1) mr(common.port, function (s) { var child = createChild([npm, "install", "underscore"]) child.on("close", function (m) { var text = JSON.stringify(fs.readFileSync(pkg + "/package.json", "utf8")) t.ok(text.indexOf('"dependencies') !== -1) s.close() t.end() }) }) }) test("cleanup", function (t) { rimraf.sync(pkg + "/cache") t.end() })