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-no-tags") var cache = path.resolve(pkg, "cache") test("npm version without git tag", function (t) { setup() npm.load({ cache: cache, registry: common.registry}, function () { which("git", function (err, git) { t.ifError(err, "git found on system") function tagExists(tag, _cb) { var child1 = spawn(git, ["tag", "-l", tag]) var out = "" child1.stdout.on("data", function (d) { out += d.toString() }) child1.on("exit", function () { return _cb(null, Boolean(~out.indexOf(tag))) }) } var child2 = spawn(git, ["init"]) child2.stdout.pipe(process.stdout) child2.on("exit", function () { npm.config.set("git-tag-version", false) npm.commands.version(["patch"], function (err) { if (err) return t.fail("Error perform version patch") var p = path.resolve(pkg, "package") var testPkg = require(p) if (testPkg.version !== "0.0.1") t.fail(testPkg.version+" !== \"0.0.1\"") t.equal("0.0.1", testPkg.version) tagExists("v0.0.1", function (err, exists) { t.ifError(err, "tag found to exist") t.equal(exists, false, "git tag DOES exist") t.pass("git tag does not exist") t.end() }) }) }) }) }) }) test("cleanup", function (t) { // windows fix for locked files process.chdir(osenv.tmpdir()) rimraf.sync(pkg) t.end() }) function setup() { mkdirp.sync(pkg) mkdirp.sync(cache) fs.writeFileSync(path.resolve(pkg, "package.json"), JSON.stringify({ author: "Evan Lucas", name: "version-no-tags-test", version: "0.0.0", description: "Test for git-tag-version flag" }), "utf8") process.chdir(pkg) }