diff options
author | Jordan Harband <ljharb@gmail.com> | 2015-01-31 23:47:11 +0300 |
---|---|---|
committer | Forrest L Norvell <forrest@npmjs.com> | 2015-02-13 07:07:58 +0300 |
commit | 6fd0fbd8a0347fd47cb7ee0064e0902a2f8a087c (patch) | |
tree | 697f9f2dbfb8f911a03fb6145ffbe6975623fc7f /test | |
parent | 3568764cd69277d708f0623a01fd0c46cc59792e (diff) |
config: ensure etc dir exists before writing to it
When editing config, if the `globalconfig` directory doesn't exist,
create it so that the editor doesn't explode when trying to edit a file
in a nonexistent path.
Diffstat (limited to 'test')
-rw-r--r-- | test/common-tap.js | 2 | ||||
-rw-r--r-- | test/tap/config-edit.js | 72 |
2 files changed, 73 insertions, 1 deletions
diff --git a/test/common-tap.js b/test/common-tap.js index 7dcfc35cc..403670828 100644 --- a/test/common-tap.js +++ b/test/common-tap.js @@ -18,7 +18,7 @@ exports.npm = function (cmd, opts, cb) { cmd = [bin].concat(cmd) opts = opts || {} - opts.env = opts.env ? opts.env : process.env + opts.env = opts.env || process.env if (!opts.env.npm_config_cache) { opts.env.npm_config_cache = npm_config_cache } diff --git a/test/tap/config-edit.js b/test/tap/config-edit.js new file mode 100644 index 000000000..97a54d2ec --- /dev/null +++ b/test/tap/config-edit.js @@ -0,0 +1,72 @@ +var fs = require("fs") +var path = require("path") + +var mkdirp = require("mkdirp") +var rimraf = require("rimraf") +var test = require("tap").test +var common = require("../common-tap.js") + +var pkg = path.resolve(__dirname, "npm-global-edit") + +var editorSrc = function () {/* +#!/usr/bin/env node +var fs = require("fs") +if (fs.existsSync(process.argv[2])) { + console.log("success") +} else { + console.log("error") + process.exit(1) +} +*/}.toString().split("\n").slice(1, -1).join("\n") +var editorPath = path.join(pkg, "editor") + +test("setup", function (t) { + cleanup(function (er) { + t.ifError(er, "old directory removed") + + mkdirp(pkg, "0777", function (er) { + fs.writeFileSync(editorPath, editorSrc) + fs.chmodSync(editorPath, "0777") + t.ifError(er, "created package directory correctly") + t.end() + }) + }) +}) + +test("saving configs", function (t) { + var opts = { + cwd: pkg, + env: { + PATH: process.env.PATH, + EDITOR: editorPath + } + } + common.npm( + [ + "config", + "--prefix", pkg, + "--global", + "edit" + ], + opts, + function (err, code, stdout, stderr) { + t.ifError(err, "command ran without issue") + + t.equal(stderr, "", "got nothing on stderr") + t.equal(code, 0, "exit ok") + t.equal(stdout, "success\n", "got success message") + t.end() + } + ) +}) + +test("cleanup", function (t) { + cleanup(function (er) { + t.ifError(er, "test directory removed OK") + t.end() + }) +}) + +function cleanup (cb) { + rimraf(pkg, cb) +} |