From acc4d023c57d07704b20a0955e4bf10ee91bdc83 Mon Sep 17 00:00:00 2001 From: Dav Glass Date: Fri, 14 Feb 2014 20:52:00 -0600 Subject: [PATCH] prune: Added back --production support fixes #4509 Test by @isaacs --- lib/prune.js | 2 +- test/tap/prune.js | 107 ++++++++++++++++++++++++++++++++++++ test/tap/prune/package.json | 13 +++++ 3 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 test/tap/prune.js create mode 100644 test/tap/prune/package.json diff --git a/lib/prune.js b/lib/prune.js index b4836cc6d70..8fa3e5d5089 100644 --- a/lib/prune.js +++ b/lib/prune.js @@ -21,7 +21,7 @@ function prune (args, cb) { }) function next() { - var opt = { depth: npm.config.get("depth") } + var opt = { depth: npm.config.get("depth"), dev: npm.config.get("production") } readInstalled(npm.prefix, opt, function (er, data) { if (er) return cb(er) prune_(args, data, cb) diff --git a/test/tap/prune.js b/test/tap/prune.js new file mode 100644 index 00000000000..acfdc42e353 --- /dev/null +++ b/test/tap/prune.js @@ -0,0 +1,107 @@ +var test = require("tap").test +var fs = require("fs") +var node = process.execPath +var npm = require.resolve("../../bin/npm-cli.js") +var rimraf = require("rimraf") +var mr = require("npm-registry-mock") +var common = require("../common-tap.js") +var spawn = require("child_process").spawn + +var pkg = __dirname + "/prune" + +var server + +test("reg mock", function (t) { + mr(common.port, function (s) { + server = s + t.pass("registry mock started") + t.end() + }) +}) + +test("npm install", function (t) { + var c = spawn(node, [ + npm, "install", + "--registry=" + common.registry, + "--loglevel=silent", + "--production=false" + ], { cwd: pkg }) + c.stderr.on("data", function(d) { + t.fail("Should not get data on stderr: " + d) + }) + c.on("close", function(code) { + t.notOk(code, "exit ok") + t.end() + }) +}) + +test("npm install test-package", function (t) { + var c = spawn(node, [ + npm, "install", "test-package", + "--registry=" + common.registry, + "--loglevel=silent", + "--production=false" + ], { cwd: pkg }) + c.stderr.on("data", function(d) { + t.fail("Should not get data on stderr: " + d) + }) + c.on("close", function(code) { + t.notOk(code, "exit ok") + t.end() + }) +}) + +test("verify installs", function (t) { + var dirs = fs.readdirSync(pkg + "/node_modules").sort() + t.same(dirs, [ "test-package", "mkdirp", "underscore" ].sort()) + t.end() +}) + +test("npm prune", function (t) { + var c = spawn(node, [ + npm, "prune", + "--loglevel=silent", + "--production=false" + ], { cwd: pkg }) + c.stderr.on("data", function(d) { + t.fail("Should not get data on stderr: " + d) + }) + c.on("close", function(code) { + t.notOk(code, "exit ok") + t.end() + }) +}) + +test("verify installs", function (t) { + var dirs = fs.readdirSync(pkg + "/node_modules").sort() + t.same(dirs, [ "mkdirp", "underscore" ]) + t.end() +}) + +test("npm prune", function (t) { + var c = spawn(node, [ + npm, "prune", + "--loglevel=silent", + "--production" + ], { cwd: pkg }) + c.stderr.on("data", function(d) { + t.fail("Should not get data on stderr: " + d) + }) + c.on("close", function(code) { + t.notOk(code, "exit ok") + t.end() + }) +}) + +test("verify installs", function (t) { + var dirs = fs.readdirSync(pkg + "/node_modules").sort() + t.same(dirs, [ "underscore" ]) + t.end() +}) + +test("cleanup", function (t) { + server.close() + rimraf.sync(pkg + "/node_modules") + t.pass("cleaned up") + t.end() +}) diff --git a/test/tap/prune/package.json b/test/tap/prune/package.json new file mode 100644 index 00000000000..641ab658076 --- /dev/null +++ b/test/tap/prune/package.json @@ -0,0 +1,13 @@ +{ + "name": "bla", + "description": "fixture", + "version": "0.0.1", + "main": "index.js", + "dependencies": { + "underscore": "1.3.1" + }, + "devDependencies": { + "mkdirp": "*" + }, + "repository": "git://github.com/robertkowalski/bogusfixture" +}