2 var path = require('path')
4 var mkdirp = require('mkdirp')
5 var osenv = require('osenv')
6 var rimraf = require('rimraf')
7 var test = require('tap').test
9 var npm = require('../../')
10 var common = require('../common-tap.js')
12 var pkg = path.resolve(__dirname, 'version-shrinkwrap')
13 var cache = path.resolve(pkg, 'cache')
15 test('npm version <semver> updates shrinkwrap - no git', function (t) {
17 npm.load({ cache: pkg + '/cache', registry: common.registry }, function () {
18 npm.commands.version(['patch'], function (err) {
19 if (err) return t.fail('Error perform version patch')
20 var shrinkwrap = require(path.resolve(pkg, 'npm-shrinkwrap.json'))
21 t.equal(shrinkwrap.version, '0.0.1', 'got expected version')
27 test('npm version <semver> updates git works with no shrinkwrap', function (t) {
29 rimraf.sync(path.resolve(pkg, 'npm-shrinkwrap.json'))
31 npm.config.set('sign-git-tag', false)
35 added: ['package.json']
38 function version (er, stdout, stderr) {
39 t.ifError(er, 'git repo initialized without issue')
40 t.notOk(stderr, 'no error output')
42 npm.commands.version(['patch'], checkCommit)
45 function checkCommit (er) {
46 t.ifError(er, 'version command ran without error')
48 var shrinkwrap = require(path.resolve(pkg, 'npm-shrinkwrap.json'))
49 t.equal(shrinkwrap.version, '0.0.1', 'got expected version')
51 var opts = { cwd: pkg, env: { PATH: process.env.PATH }}
52 var git = require('../../lib/utils/git.js')
54 ['show', 'HEAD', '--name-only'],
56 function (er, stdout, stderr) {
57 t.ifError(er, 'git show ran without issues')
58 t.notOk(stderr, 'no error output')
60 var lines = stdout.split('\n')
61 t.notEqual(lines.indexOf('package.json'), -1, 'package.json commited')
62 t.equal(lines.indexOf('npm-shrinkwrap.json'), -1, 'npm-shrinkwrap.json not present')
70 test('npm version <semver> updates shrinkwrap and updates git', function (t) {
73 npm.config.set('sign-git-tag', false)
77 added: ['package.json', 'npm-shrinkwrap.json']
80 function version (er, stdout, stderr) {
81 t.ifError(er, 'git repo initialized without issue')
82 t.notOk(stderr, 'no error output')
84 npm.commands.version(['patch'], checkCommit)
87 function checkCommit (er) {
88 t.ifError(er, 'version command ran without error')
90 var shrinkwrap = require(path.resolve(pkg, 'npm-shrinkwrap.json'))
91 t.equal(shrinkwrap.version, '0.0.1', 'got expected version')
93 var git = require('../../lib/utils/git.js')
94 var opts = { cwd: pkg, env: { PATH: process.env.PATH }}
96 ['show', 'HEAD', '--name-only'],
98 function (er, stdout, stderr) {
99 t.ifError(er, 'git show ran without issues')
100 t.notOk(stderr, 'no error output')
102 var lines = stdout.split('\n')
103 t.notEqual(lines.indexOf('package.json'), -1, 'package.json commited')
104 t.notEqual(lines.indexOf('npm-shrinkwrap.json'), -1, 'npm-shrinkwrap.json commited')
112 test('cleanup', function (t) {
113 // windows fix for locked files
114 process.chdir(osenv.tmpdir())
125 author: 'Nathan Bowser && Faiq Raza',
126 name: 'version-with-shrinkwrap-test',
128 description: 'Test for version with shrinkwrap update'
131 fs.writeFileSync(path.resolve(pkg, 'package.json'), JSON.stringify(contents), 'utf8')
132 fs.writeFileSync(path.resolve(pkg, 'npm-shrinkwrap.json'), JSON.stringify(contents), 'utf8')