diff options
Diffstat (limited to 'deps/node/deps/npm/test/tap/pack-files-and-ignores.js')
-rw-r--r-- | deps/node/deps/npm/test/tap/pack-files-and-ignores.js | 697 |
1 files changed, 0 insertions, 697 deletions
diff --git a/deps/node/deps/npm/test/tap/pack-files-and-ignores.js b/deps/node/deps/npm/test/tap/pack-files-and-ignores.js deleted file mode 100644 index 6d8b43e9..00000000 --- a/deps/node/deps/npm/test/tap/pack-files-and-ignores.js +++ /dev/null @@ -1,697 +0,0 @@ -'use strict' -var test = require('tap').test -var common = require('../common-tap.js') -var path = require('path') -var rimraf = require('rimraf') -var mkdirp = require('mkdirp') -var fs = require('graceful-fs') -var tar = require('tar') -var basepath = path.resolve(__dirname, path.basename(__filename, '.js')) -var fixturepath = path.resolve(basepath, 'npm-test-files') -var targetpath = path.resolve(basepath, 'target') -var Tacks = require('tacks') -var File = Tacks.File -var Dir = Tacks.Dir - -test('basic file inclusion', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5', - files: [ - 'include', - 'sub/include' - ] - }), - include: File(''), - sub: Dir({ include: File('') }), - notincluded: File('') - }) - ) - withFixture(t, fixture, function (done) { - t.ok(fileExists('include'), 'toplevel file included') - t.ok(fileExists('sub/include'), 'nested file included') - t.notOk(fileExists('notincluded'), 'unspecified file not included') - done() - }) -}) - -test('basic file exclusion', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5' - }), - '.npmignore': File( - 'ignore\n' + - 'sub/ignore\n' - ), - include: File(''), - ignore: File(''), - sub: Dir({ ignore: File('') }) - }) - ) - withFixture(t, fixture, function (done) { - t.notOk(fileExists('ignore'), 'toplevel file excluded') - t.notOk(fileExists('sub/ignore'), 'nested file excluded') - t.ok(fileExists('include'), 'unignored file included') - done() - }) -}) - -test('toplevel-only and blanket ignores', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5' - }), - '.npmignore': File( - './shallow1\n' + - '/shallow2\n' + - '/sub/onelevel\n' + - 'deep\n' + - '' - ), - shallow1: File(''), - shallow2: File(''), - deep: File(''), - sub: Dir({ - shallow1: File(''), - shallow2: File(''), - onelevel: File(''), - deep: File(''), - sub: Dir({ - deep: File(''), - onelevel: File('') - }) - }) - }) - ) - withFixture(t, fixture, function (done) { - t.notOk(fileExists('shallow2'), '/ file excluded') - t.ok(fileExists('sub/shallow1'), 'nested ./ file included') - t.ok(fileExists('sub/shallow2'), 'nested / file included') - t.ok(fileExists('sub/sub/onelevel'), 'double-nested file included') - t.notOk(fileExists('sub/onelevel'), 'nested / file excluded') - t.notOk(fileExists('deep'), 'deep file excluded') - t.notOk(fileExists('sub/deep'), 'nested deep file excluded') - t.notOk(fileExists('sub/sub/deep'), 'double-nested deep file excluded') - t.ok(fileExists('shallow1'), './ file included') - done() - }) -}) - -test('.npmignore works for nested directories recursively', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5' - }), - '.npmignore': File( - '/ignore\n' + - 'deep\n' - ), - include: File(''), - ignore: File(''), - deep: File(''), - sub: Dir({ - ignore: File(''), - include: File(''), - deep: File(''), - sub: Dir({ - '.npmignore': File( - '/ignore\n' - ), - ignore: File(''), - include: File(''), - deep: File('') - }) - }) - }) - ) - withFixture(t, fixture, function (done) { - t.notOk(fileExists('ignore'), 'toplevel file excluded') - t.ok(fileExists('include'), 'unignored file included') - t.ok(fileExists('sub/ignore'), 'same-name file in nested dir included') - t.ok(fileExists('sub/include'), 'unignored nested dir file included') - t.notOk(fileExists('sub/sub/ignore'), 'sub-sub-directory file excluded') - t.ok(fileExists('sub/sub/include'), 'sub-sube-directory file included') - t.notOk(fileExists('deep'), 'deep file excluded') - t.notOk(fileExists('sub/deep'), 'sub-dir deep file excluded') - t.notOk(fileExists('sub/sub/deep'), 'sub-sub-dir deep file excluded') - done() - }) -}) - -test('.gitignore should have identical semantics', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5' - }), - '.gitignore': File( - './shallow1\n' + - '/shallow2\n' + - '/sub/onelevel\n' + - 'deep\n' + - '' - ), - shallow1: File(''), - shallow2: File(''), - deep: File(''), - sub: Dir({ - shallow1: File(''), - shallow2: File(''), - onelevel: File(''), - deep: File(''), - sub: Dir({ - deep: File(''), - onelevel: File('') - }) - }) - }) - ) - withFixture(t, fixture, function (done) { - t.notOk(fileExists('shallow2'), '/ file excluded') - t.ok(fileExists('sub/shallow1'), 'nested ./ file included') - t.ok(fileExists('sub/shallow2'), 'nested / file included') - t.ok(fileExists('sub/sub/onelevel'), 'double-nested file included') - t.notOk(fileExists('sub/onelevel'), 'nested / file excluded') - t.notOk(fileExists('deep'), 'deep file excluded') - t.notOk(fileExists('sub/deep'), 'nested deep file excluded') - t.notOk(fileExists('sub/sub/deep'), 'double-nested deep file excluded') - t.ok(fileExists('shallow1'), './ file included') - done() - }) -}) - -test('.npmignore should always be overridden by files array', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5', - files: [ - 'include', - 'sub' - ] - }), - '.npmignore': File( - 'include\n' + - 'ignore\n' + - 'sub/included\n' - ), - include: File(''), - ignore: File(''), - sub: Dir({ - included: File('') - }) - }) - ) - withFixture(t, fixture, function (done) { - t.notOk(fileExists('ignore'), 'toplevel file excluded') - t.ok(fileExists('include'), 'unignored file included') - t.ok(fileExists('sub/included'), 'nested file included') - done() - }) -}) - -test('.gitignore supported for ignores', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5' - }), - '.gitignore': File( - 'ignore\n' + - 'sub/ignore\n' - ), - include: File(''), - ignore: File(''), - sub: Dir({ ignore: File('') }) - }) - ) - withFixture(t, fixture, function (done) { - t.notOk(fileExists('ignore'), 'toplevel file excluded') - t.notOk(fileExists('sub/ignore'), 'nested file excluded') - t.ok(fileExists('include'), 'unignored file included') - done() - }) -}) - -test('.npmignore completely overrides .gitignore', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5' - }), - '.npmignore': File( - 'ignore\n' + - 'sub/ignore\n' - ), - '.gitignore': File( - 'include\n' + - 'sub/include\n' + - 'extra\n' - ), - include: File(''), - sub: Dir({ include: File('') }), - extra: File('') - }) - ) - withFixture(t, fixture, function (done) { - t.ok(fileExists('include'), 'gitignored toplevel file included') - t.ok(fileExists('extra'), 'gitignored extra toplevel file included') - t.ok(fileExists('sub/include'), 'gitignored nested file included') - t.notOk(fileExists('ignore'), 'toplevel file excluded') - t.notOk(fileExists('sub/ignore'), 'nested file excluded') - done() - }) -}) - -test('files array overrides .npmignore', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5', - files: [ - 'include', - 'sub/include' - ] - }), - '.npmignore': File( - 'include\n' + - 'sub/include\n' - ), - include: File(''), - sub: Dir({ include: File('') }) - }) - ) - withFixture(t, fixture, function (done) { - t.ok(fileExists('include'), 'toplevel file included') - t.ok(fileExists('sub/include'), 'nested file included') - done() - }) -}) - -test('includes files regardless of emptiness', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5', - files: [ - 'full', - 'empty' - ] - }), - full: File('This file has contents~'), - empty: File('') - }) - ) - withFixture(t, fixture, function (done) { - t.ok(fileExists('full'), 'contentful file included') - t.ok(fileExists('empty'), 'empty file included') - done() - }) -}) - -test('.npmignore itself gets included', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5', - files: [ - '.npmignore' - ] - }), - '.npmignore': File('') - }) - ) - withFixture(t, fixture, function (done) { - t.ok(fileExists('.npmignore'), '.npmignore included') - done() - }) -}) - -test('include default files when missing files spec', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5' - }), - 'index.js': File(''), - foo: File(''), - node_modules: Dir({foo: Dir({bar: File('')})}) - }) - ) - withFixture(t, fixture, function (done) { - t.ok(fileExists('index.js'), 'index.js included') - t.ok(fileExists('foo'), 'foo included') - t.notOk(fileExists('node_modules'), 'node_modules not included') - done() - }) -}) - -test('include main file', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5', - main: 'foo.js', - files: [] - }), - 'index.js': File(''), - 'foo.js': File('') - }) - ) - withFixture(t, fixture, function (done) { - t.ok(fileExists('foo.js'), 'foo.js included because of main') - t.notOk(fileExists('index.js'), 'index.js not included') - done() - }) -}) - -test('certain files ignored by default', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5' - }), - '.git': Dir({foo: File('')}), - '.svn': Dir({foo: File('')}), - 'CVS': Dir({foo: File('')}), - '.hg': Dir({foo: File('')}), - '.lock-wscript': File(''), - '.wafpickle-0': File(''), - '.wafpickle-5': File(''), - '.wafpickle-50': File(''), - 'build': Dir({'config.gypi': File('')}), - 'npm-debug.log': File(''), - '.npmrc': File(''), - '.foo.swp': File(''), - '.DS_Store': Dir({foo: File('')}), - '._ohno': File(''), - '._ohnoes': Dir({noes: File('')}), - 'foo.orig': File(''), - 'package-lock.json': File('') - }) - ) - withFixture(t, fixture, function (done) { - t.notOk(fileExists('.git'), '.git not included') - t.notOk(fileExists('.svn'), '.svn not included') - t.notOk(fileExists('CVS'), 'CVS not included') - t.notOk(fileExists('.hg'), '.hg not included') - t.notOk(fileExists('.lock-wscript'), '.lock-wscript not included') - t.notOk(fileExists('.wafpickle-0'), '.wafpickle-0 not included') - t.notOk(fileExists('.wafpickle-5'), '.wafpickle-5 not included') - t.notOk(fileExists('.wafpickle-50'), '.wafpickle-50 not included') - t.notOk(fileExists('build/config.gypi'), 'build/config.gypi not included') - t.notOk(fileExists('npm-debug.log'), 'npm-debug.log not included') - t.notOk(fileExists('.npmrc'), '.npmrc not included') - t.notOk(fileExists('.foo.swp'), '.foo.swp not included') - t.notOk(fileExists('.DS_Store'), '.DS_Store not included') - t.notOk(fileExists('._ohno'), '._ohno not included') - t.notOk(fileExists('._ohnoes'), '._ohnoes not included') - t.notOk(fileExists('foo.orig'), 'foo.orig not included') - t.notOk(fileExists('package-lock.json'), 'package-lock.json not included') - done() - }) -}) - -test('default-ignored files can be explicitly included', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5', - files: [ - '.git', - '.svn', - 'CVS', - '.hg', - '.lock-wscript', - '.wafpickle-0', - '.wafpickle-5', - '.wafpickle-50', - 'build/config.gypi', - 'npm-debug.log', - '.npmrc', - '.foo.swp', - '.DS_Store', - '._ohno', - '._ohnoes', - 'foo.orig', - 'package-lock.json' - ] - }), - '.git': Dir({foo: File('')}), - '.svn': Dir({foo: File('')}), - 'CVS': Dir({foo: File('')}), - '.hg': Dir({foo: File('')}), - '.lock-wscript': File(''), - '.wafpickle-0': File(''), - '.wafpickle-5': File(''), - '.wafpickle-50': File(''), - 'build': Dir({'config.gypi': File('')}), - 'npm-debug.log': File(''), - '.npmrc': File(''), - '.foo.swp': File(''), - '.DS_Store': Dir({foo: File('')}), - '._ohno': File(''), - '._ohnoes': Dir({noes: File('')}), - 'foo.orig': File(''), - 'package-lock.json': File('') - }) - ) - withFixture(t, fixture, function (done) { - t.ok(fileExists('.git'), '.git included') - t.ok(fileExists('.svn'), '.svn included') - t.ok(fileExists('CVS'), 'CVS included') - t.ok(fileExists('.hg'), '.hg included') - t.ok(fileExists('.lock-wscript'), '.lock-wscript included') - t.ok(fileExists('.wafpickle-0'), '.wafpickle-0 included') - t.ok(fileExists('.wafpickle-5'), '.wafpickle-5 included') - t.ok(fileExists('.wafpickle-50'), '.wafpickle-50 included') - t.ok(fileExists('build/config.gypi'), 'build/config.gypi included') - t.ok(fileExists('npm-debug.log'), 'npm-debug.log included') - t.ok(fileExists('.npmrc'), '.npmrc included') - t.ok(fileExists('.foo.swp'), '.foo.swp included') - t.ok(fileExists('.DS_Store'), '.DS_Store included') - t.ok(fileExists('._ohno'), '._ohno included') - t.ok(fileExists('._ohnoes'), '._ohnoes included') - t.ok(fileExists('foo.orig'), 'foo.orig included') - t.ok(fileExists('package-lock.json'), 'package-lock.json included') - done() - }) -}) - -test('certain files included unconditionally', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5' - }), - '.npmignore': File( - 'package.json', - 'README', - 'Readme', - 'readme.md', - 'readme.randomext', - 'changelog', - 'CHAngelog', - 'ChangeLOG.txt', - 'history', - 'HistorY', - 'HistorY.md', - 'license', - 'licence', - 'LICENSE', - 'LICENCE' - ), - 'README': File(''), - 'Readme': File(''), - 'readme.md': File(''), - 'readme.randomext': File(''), - 'changelog': File(''), - 'CHAngelog': File(''), - 'ChangeLOG.txt': File(''), - 'history': File(''), - 'HistorY': File(''), - 'HistorY.md': File(''), - 'license': File(''), - 'licence': File(''), - 'LICENSE': File(''), - 'LICENCE': File('') - }) - ) - withFixture(t, fixture, function (done) { - t.ok(fileExists('package.json'), 'package.json included') - t.ok(fileExists('README'), 'README included') - t.ok(fileExists('Readme'), 'Readme included') - t.ok(fileExists('readme.md'), 'readme.md included') - t.ok(fileExists('readme.randomext'), 'readme.randomext included') - t.ok(fileExists('changelog'), 'changelog included') - t.ok(fileExists('CHAngelog'), 'CHAngelog included') - t.ok(fileExists('ChangeLOG.txt'), 'ChangeLOG.txt included') - t.ok(fileExists('license'), 'license included') - t.ok(fileExists('licence'), 'licence included') - t.ok(fileExists('LICENSE'), 'LICENSE included') - t.ok(fileExists('LICENCE'), 'LICENCE included') - done() - }) -}) - -test('unconditional inclusion does not capture modules', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5' - }), - 'node_modules': Dir({ - 'readme': Dir({ 'file': File('') }), - 'README': Dir({ 'file': File('') }), - 'licence': Dir({ 'file': File('') }), - 'license': Dir({ 'file': File('') }), - 'history': Dir({ 'file': File('') }), - 'History': Dir({ 'file': File('') }), - 'changelog': Dir({ 'file': File('') }), - 'ChangeLOG': Dir({ 'file': File('') }) - }) - }) - ) - withFixture(t, fixture, function (done) { - t.notOk(fileExists('node_modules/readme/file'), 'readme module not included') - t.notOk(fileExists('node_modules/README/file'), 'README module not included') - t.notOk(fileExists('node_modules/licence/file'), 'licence module not included') - t.notOk(fileExists('node_modules/license/file'), 'license module not included') - t.notOk(fileExists('node_modules/history/file'), 'history module not included') - t.notOk(fileExists('node_modules/History/file'), 'History module not included') - t.notOk(fileExists('node_modules/changelog/file'), 'changelog module not included') - t.notOk(fileExists('node_modules/ChangeLOG/file'), 'ChangeLOG module not included') - - done() - }) -}) - -test('folder-based inclusion works', function (t) { - var fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5', - files: [ - 'sub1/sub', - 'sub2' - ] - }), - sub1: Dir({ - sub: Dir({ - include1: File(''), - include2: File('') - }), - ignored: File('') - }), - sub2: Dir({ - include1: File(''), - include2: File(''), - empty: Dir({}) - }) - }) - ) - withFixture(t, fixture, function (done) { - t.ok(fileExists('sub1/sub/include1'), 'nested dir included') - t.ok(fileExists('sub1/sub/include2'), 'nested dir included') - t.notOk(fileExists('sub1/ignored'), 'unspecified file not included') - - t.ok(fileExists('sub2/include1'), 'dir contents included') - t.ok(fileExists('sub2/include2'), 'dir contents included') - t.notOk(fileExists('sub2/empty'), 'empty dir not included') - - done() - }) -}) - -test('file that starts with @ sign included normally', (t) => { - const fixture = new Tacks( - Dir({ - 'package.json': File({ - name: 'npm-test-files', - version: '1.2.5' - }), - '@sub1': Dir({ - sub: Dir({ - include1: File('') - }) - }), - sub2: Dir({ - '@include': File(''), - '@sub3': Dir({ - include1: File('') - }) - }) - }) - ) - withFixture(t, fixture, function (done) { - t.ok(fileExists('@sub1/sub/include1'), '@ dir included') - - t.ok(fileExists('sub2/@include'), '@ file included') - t.ok(fileExists('sub2/@sub3/include1'), 'nested @ dir included') - - done() - }) -}) - -function fileExists (file) { - try { - return !!fs.statSync(path.resolve(targetpath, 'package', file)) - } catch (_) { - return false - } -} - -function withFixture (t, fixture, tester) { - fixture.create(fixturepath) - mkdirp.sync(targetpath) - common.npm(['pack', fixturepath], {cwd: basepath}, extractAndCheck) - function extractAndCheck (err, code) { - if (err) throw err - t.is(code, 0, 'pack went ok') - extractTarball(checkTests) - } - function checkTests (err) { - if (err) throw err - tester(removeAndDone) - } - function removeAndDone (err) { - if (err) throw err - fixture.remove(fixturepath) - rimraf.sync(basepath) - t.done() - } -} - -function extractTarball (cb) { - // Unpack to disk so case-insensitive filesystems are consistent - tar.extract({ - file: basepath + '/npm-test-files-1.2.5.tgz', - cwd: targetpath, - sync: true - }) - - cb() -} |