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) }