1var fs = require('graceful-fs') 2var path = require('path') 3 4var t = require('tap') 5var mkdirp = require('mkdirp') 6var rimraf = require('rimraf') 7 8var common = require('../common-tap.js') 9 10var fixtures = path.resolve(__dirname, '..', 'fixtures') 11 12var pkg = common.pkg 13var nm = path.resolve(pkg, 'node_modules') 14var target = path.resolve(nm, 'npm-test-gitignore') 15var cache = common.cache 16var tmp = path.resolve(pkg, 'tmp') 17 18var EXEC_OPTS = { 19 env: { 20 'npm_config_cache': cache, 21 'npm_config_tmp': tmp 22 }, 23 cwd: pkg 24} 25 26function verify (t, files, code) { 27 if (code) { 28 return t.fail('exited with failure: ' + code) 29 } 30 var actual = fs.readdirSync(target).sort() 31 var expect = files.concat(['.npmignore', 'package.json']).sort() 32 t.same(actual, expect) 33} 34 35t.comment('test for https://github.com/npm/npm/issues/5658') 36 37t.test('npmignore only', function (t) { 38 t.test('setup', setup) 39 var file = path.resolve(fixtures, 'npmignore.tgz') 40 return t.test('test', t => common.npm(['install', file], EXEC_OPTS) 41 .then(([code]) => verify(t, ['foo'], code))) 42}) 43 44t.test('gitignore only', function (t) { 45 t.test('setup', setup) 46 var file = path.resolve(fixtures, 'gitignore.tgz') 47 return t.test('test', t => common.npm(['install', file], EXEC_OPTS) 48 .then(([code]) => verify(t, ['foo'], code))) 49}) 50 51t.test('gitignore and npmignore', function (t) { 52 t.test('setup', setup) 53 var file = path.resolve(fixtures, 'gitignore-and-npmignore.tgz') 54 return t.test('test', t => common.npm(['install', file], EXEC_OPTS) 55 .then(([code]) => verify(t, ['foo', 'bar'], code))) 56}) 57 58t.test('gitignore and npmignore, not gzipped 1/2', function (t) { 59 t.test('setup', setup) 60 var file = path.resolve(fixtures, 'gitignore-and-npmignore.tar') 61 return t.test('test', t => common.npm(['install', file], EXEC_OPTS) 62 .then(([code]) => verify(t, ['foo', 'bar'], code))) 63}) 64 65t.test('gitignore and npmignore, not gzipped 2/2', function (t) { 66 t.test('setup', setup) 67 var file = path.resolve(fixtures, 'gitignore-and-npmignore-2.tar') 68 return t.test('test', t => common.npm(['install', file], EXEC_OPTS) 69 .then(([code]) => verify(t, ['foo', 'bar'], code))) 70}) 71 72function setup (t) { 73 t.test('destroy', t => { 74 t.plan(2) 75 t.test('node_modules', t => rimraf(nm, t.end)) 76 t.test('tmp', t => rimraf(tmp, t.end)) 77 }) 78 t.test('create', t => { 79 mkdirp.sync(nm) 80 mkdirp.sync(tmp) 81 t.end() 82 }) 83 t.end() 84} 85