| 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() |
| }) |