mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
249 lines
7.0 KiB
249 lines
7.0 KiB
var common = require("../common-tap.js")
|
|
var test = require("tap").test
|
|
var npm = require("../../")
|
|
var osenv = require("osenv")
|
|
var path = require("path")
|
|
var fs = require("fs")
|
|
var rimraf = require("rimraf")
|
|
var mkdirp = require("mkdirp")
|
|
var which = require("which")
|
|
var spawn = require("child_process").spawn
|
|
|
|
var pkg = path.resolve(__dirname, "version-shrinkwrap")
|
|
var cache = path.resolve(pkg, "cache")
|
|
|
|
test("npm version <semver> updates shrinkwrap - no git", function (t) {
|
|
setup()
|
|
npm.load({ cache: pkg + "/cache", registry: common.registry }, function () {
|
|
npm.commands.version(["patch"], function(err) {
|
|
if (err) return t.fail("Error perform version patch")
|
|
var shrinkwrap = require(path.resolve(pkg, "npm-shrinkwrap.json"))
|
|
t.equal(shrinkwrap.version, "0.0.1", "got expected version")
|
|
t.end()
|
|
})
|
|
})
|
|
})
|
|
|
|
test("npm version <semver> updates git works with no shrinkwrap", function (t) {
|
|
setup()
|
|
|
|
rimraf.sync(path.resolve(pkg, "npm-shrinkwrap.json"))
|
|
|
|
var opts = {
|
|
cache : cache,
|
|
registry : common.registry
|
|
}
|
|
npm.load(opts, function () {
|
|
npm.config.set("sign-git-tag", false)
|
|
which("git", function (err, git) {
|
|
if (err) t.fail("Git not installed, or which git command error")
|
|
|
|
initRepo()
|
|
|
|
function initRepo () {
|
|
var init = spawn(git, ["init"])
|
|
init.stdout.pipe(process.stdout)
|
|
init.on("exit", function (code) {
|
|
t.notOk(code, "git init exited without issue")
|
|
|
|
configName()
|
|
})
|
|
}
|
|
|
|
function configName () {
|
|
var namer = spawn(git, ["config", "user.name", "Phantom Faker"])
|
|
namer.stdout.pipe(process.stdout)
|
|
namer.on("exit", function (code) {
|
|
t.notOk(code, "git config user.name exited without issue")
|
|
|
|
configEmail()
|
|
})
|
|
}
|
|
|
|
function configEmail () {
|
|
var emailer = spawn(git, ["config", "user.email", "nope@not.real"])
|
|
emailer.stdout.pipe(process.stdout)
|
|
emailer.on("exit", function (code) {
|
|
t.notOk(code, "git config user.email exited without issue")
|
|
|
|
addAll()
|
|
})
|
|
}
|
|
|
|
function addAll () {
|
|
var emailer = spawn(git, ["add", "package.json"])
|
|
emailer.stdout.pipe(process.stdout)
|
|
emailer.on("exit", function (code) {
|
|
t.notOk(code, "git add package.json exited without issue")
|
|
|
|
commit()
|
|
})
|
|
|
|
}
|
|
|
|
function commit () {
|
|
var emailer = spawn(git, ["commit", "-m", "test setup"])
|
|
emailer.stdout.pipe(process.stdout)
|
|
emailer.on("exit", function (code) {
|
|
t.notOk(code, "git commit -m 'test setup' exited without issue")
|
|
|
|
version()
|
|
})
|
|
|
|
}
|
|
|
|
function version () {
|
|
npm.commands.version(["patch"], checkCommit)
|
|
}
|
|
|
|
function checkCommit (er) {
|
|
t.ifError(er, "version command ran without error")
|
|
|
|
var shrinkwrap = require(path.resolve(pkg, "npm-shrinkwrap.json"))
|
|
t.equal(shrinkwrap.version, "0.0.1", "got expected version")
|
|
|
|
var shower = spawn(git, ["show", "HEAD", "--name-only"])
|
|
var out = "", eout = ""
|
|
shower.stdout.on("data", function (d) {
|
|
out += d.toString()
|
|
})
|
|
shower.stderr.on("data", function (d) {
|
|
eout += d.toString()
|
|
})
|
|
shower.on("exit", function (code) {
|
|
t.notOk(code, "git show HEAD exited without issue")
|
|
t.notOk(err, "git show produced no error output")
|
|
|
|
var lines = out.split("\n")
|
|
t.notEqual(lines.indexOf("package.json"), -1, "package.json commited")
|
|
t.equal(lines.indexOf("npm-shrinkwrap.json"), -1, "npm-shrinkwrap.json not present")
|
|
|
|
t.end()
|
|
})
|
|
}
|
|
})
|
|
})
|
|
})
|
|
|
|
test("npm version <semver> updates shrinkwrap and updates git", function (t) {
|
|
setup()
|
|
|
|
var opts = {
|
|
cache : cache,
|
|
registry : common.registry
|
|
}
|
|
npm.load(opts, function () {
|
|
npm.config.set("sign-git-tag", false)
|
|
which("git", function (err, git) {
|
|
t.ifError(err, "git found")
|
|
|
|
initRepo()
|
|
|
|
function initRepo () {
|
|
var init = spawn(git, ["init"])
|
|
init.stdout.pipe(process.stdout)
|
|
init.on("exit", function (code) {
|
|
t.notOk(code, "git init exited without issue")
|
|
|
|
configName()
|
|
})
|
|
}
|
|
|
|
function configName () {
|
|
var namer = spawn(git, ["config", "user.name", "Phantom Faker"])
|
|
namer.stdout.pipe(process.stdout)
|
|
namer.on("exit", function (code) {
|
|
t.notOk(code, "git config user.name exited without issue")
|
|
|
|
configEmail()
|
|
})
|
|
}
|
|
|
|
function configEmail () {
|
|
var emailer = spawn(git, ["config", "user.email", "nope@not.real"])
|
|
emailer.stdout.pipe(process.stdout)
|
|
emailer.on("exit", function (code) {
|
|
t.notOk(code, "git config user.email exited without issue")
|
|
|
|
addAll()
|
|
})
|
|
}
|
|
|
|
function addAll () {
|
|
var emailer = spawn(git, ["add", "package.json", "npm-shrinkwrap.json"])
|
|
emailer.stdout.pipe(process.stdout)
|
|
emailer.on("exit", function (code) {
|
|
t.notOk(code, "git add package.json npm-shrinkwrap.json exited without issue")
|
|
|
|
commit()
|
|
})
|
|
|
|
}
|
|
|
|
function commit () {
|
|
var emailer = spawn(git, ["commit", "-m", "test setup"])
|
|
emailer.stdout.pipe(process.stdout)
|
|
emailer.on("exit", function (code) {
|
|
t.notOk(code, "git commit -m 'test setup' exited without issue")
|
|
|
|
version()
|
|
})
|
|
|
|
}
|
|
|
|
function version () {
|
|
npm.commands.version(["patch"], checkCommit)
|
|
}
|
|
|
|
function checkCommit (er) {
|
|
t.ifError(er, "version command ran without error")
|
|
|
|
var shrinkwrap = require(path.resolve(pkg, "npm-shrinkwrap.json"))
|
|
t.equal(shrinkwrap.version, "0.0.1", "got expected version")
|
|
|
|
var shower = spawn(git, ["show", "HEAD", "--name-only"])
|
|
var out = "", eout = ""
|
|
shower.stdout.on("data", function (d) {
|
|
out += d.toString()
|
|
})
|
|
shower.stderr.on("data", function (d) {
|
|
eout += d.toString()
|
|
})
|
|
shower.on("exit", function (code) {
|
|
t.notOk(code, "git show HEAD exited without issue")
|
|
t.notOk(err, "git show produced no error output")
|
|
|
|
var lines = out.split("\n")
|
|
t.notEqual(lines.indexOf("package.json"), -1, "package.json commited")
|
|
t.notEqual(lines.indexOf("npm-shrinkwrap.json"), -1, "npm-shrinkwrap.json commited")
|
|
|
|
t.end()
|
|
})
|
|
}
|
|
})
|
|
})
|
|
})
|
|
|
|
test("cleanup", function(t) {
|
|
// windows fix for locked files
|
|
process.chdir(osenv.tmpdir())
|
|
|
|
rimraf.sync(pkg)
|
|
t.end()
|
|
})
|
|
|
|
function setup() {
|
|
rimraf.sync(pkg)
|
|
mkdirp.sync(pkg)
|
|
mkdirp.sync(cache)
|
|
var contents = {
|
|
author: "Nathan Bowser && Faiq Raza",
|
|
name: "version-with-shrinkwrap-test",
|
|
version: "0.0.0",
|
|
description: "Test for version with shrinkwrap update"
|
|
}
|
|
|
|
fs.writeFileSync(path.resolve(pkg, "package.json"), JSON.stringify(contents), "utf8")
|
|
fs.writeFileSync(path.resolve(pkg, "npm-shrinkwrap.json"), JSON.stringify(contents), "utf8")
|
|
process.chdir(pkg)
|
|
}
|
|
|