--- /dev/null
+// 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()
+})