| // verify that prepublish runs on pack and publish |
| var test = require("tap").test |
| var common = require("../common-tap") |
| var fs = require("graceful-fs") |
| var join = require("path").join |
| var mkdirp = require("mkdirp") |
| var rimraf = require("rimraf") |
| |
| var pkg = join(__dirname, "scoped_package") |
| var manifest = join(pkg, "package.json") |
| var tmp = join(pkg, "tmp") |
| var cache = join(pkg, "cache") |
| |
| var data = { |
| name : "@scope/generic-package", |
| version : "90000.100001.5" |
| } |
| |
| test("setup", function (t) { |
| var n = 0 |
| |
| rimraf.sync(pkg) |
| |
| mkdirp(pkg, then()) |
| mkdirp(cache, then()) |
| mkdirp(tmp, then()) |
| |
| function then () { |
| n++ |
| return function (er) { |
| t.ifError(er) |
| if (--n === 0) next() |
| } |
| } |
| |
| function next () { |
| fs.writeFile(manifest, JSON.stringify(data), "ascii", done) |
| } |
| |
| function done (er) { |
| t.ifError(er) |
| |
| t.pass("setup done") |
| t.end() |
| } |
| }) |
| |
| test("test", function (t) { |
| var env = { |
| "npm_config_cache" : cache, |
| "npm_config_tmp" : tmp, |
| "npm_config_prefix" : pkg, |
| "npm_config_global" : "false" |
| } |
| |
| for (var i in process.env) { |
| if (!/^npm_config_/.test(i)) env[i] = process.env[i] |
| } |
| |
| common.npm([ |
| "pack", |
| "--loglevel", "warn" |
| ], { |
| cwd: pkg, |
| env: env |
| }, function(err, code, stdout, stderr) { |
| t.ifErr(err, "npm pack finished without error") |
| t.equal(code, 0, "npm pack exited ok") |
| t.notOk(stderr, "got stderr data: " + JSON.stringify("" + stderr)) |
| stdout = stdout.trim() |
| var regex = new RegExp("scope-generic-package-90000.100001.5.tgz", "ig") |
| t.ok(stdout.match(regex), "found package") |
| t.end() |
| }) |
| }) |
| |
| test("cleanup", function (t) { |
| rimraf.sync(pkg) |
| t.pass("cleaned up") |
| t.end() |
| }) |