| var fs = require('graceful-fs') |
| var join = require('path').join |
| |
| var mkdirp = require('mkdirp') |
| var rimraf = require('rimraf') |
| var test = require('tap').test |
| |
| var Packer = require('..') |
| |
| var pkg = join(__dirname, 'test-package') |
| |
| var elfJS = function () {/* |
| module.exports = function () { |
| console.log("i'm a elf") |
| } |
| */}.toString().split('\n').slice(1, -1).join() |
| |
| var json = { |
| 'name': 'test-package', |
| 'version': '3.1.4', |
| 'main': 'elf.js' |
| } |
| |
| test('setup', function (t) { |
| setup() |
| t.end() |
| }) |
| |
| var included = [ |
| 'package.json', |
| 'elf.js', |
| join('deps', 'foo', 'config', 'config.gypi') |
| ] |
| |
| test('follows npm package ignoring rules', function (t) { |
| var subject = new Packer({ path: pkg, type: 'Directory', isDirectory: true }) |
| var filenames = [] |
| subject.on('entry', function (entry) { |
| t.equal(entry.type, 'File', 'only files in this package') |
| |
| // include relative path in filename |
| var filename = entry._path.slice(entry.root._path.length + 1) |
| |
| filenames.push(filename) |
| }) |
| // need to do this so fstream doesn't explode when files are removed from |
| // under it |
| subject.on('end', function () { |
| // ensure we get *exactly* the results we expect by comparing in both |
| // directions |
| filenames.forEach(function (filename) { |
| t.ok( |
| included.indexOf(filename) > -1, |
| filename + ' is included' |
| ) |
| }) |
| included.forEach(function (filename) { |
| t.ok( |
| filenames.indexOf(filename) > -1, |
| filename + ' is not included' |
| ) |
| }) |
| t.end() |
| }) |
| }) |
| |
| test('cleanup', function (t) { |
| // rimraf.sync chokes here for some reason |
| rimraf(pkg, function () { t.end() }) |
| }) |
| |
| function setup () { |
| rimraf.sync(pkg) |
| mkdirp.sync(pkg) |
| fs.writeFileSync( |
| join(pkg, 'package.json'), |
| JSON.stringify(json, null, 2) |
| ) |
| |
| fs.writeFileSync( |
| join(pkg, 'elf.js'), |
| elfJS |
| ) |
| |
| fs.writeFileSync( |
| join(pkg, '.npmrc'), |
| 'packaged=false' |
| ) |
| |
| fs.writeFileSync( |
| join(pkg, '.npmignore'), |
| '.npmignore\ndummy\npackage.json' |
| ) |
| |
| fs.writeFileSync( |
| join(pkg, 'dummy'), |
| 'foo' |
| ) |
| |
| var buildDir = join(pkg, 'build') |
| mkdirp.sync(buildDir) |
| fs.writeFileSync( |
| join(buildDir, 'config.gypi'), |
| "i_wont_be_included_by_fstream='with any luck'" |
| ) |
| |
| var depscfg = join(pkg, 'deps', 'foo', 'config') |
| mkdirp.sync(depscfg) |
| fs.writeFileSync( |
| join(depscfg, 'config.gypi'), |
| "i_will_be_included_by_fstream='with any luck'" |
| ) |
| |
| fs.writeFileSync( |
| join(buildDir, 'npm-debug.log'), |
| '0 lol\n' |
| ) |
| |
| var gitDir = join(pkg, '.git') |
| mkdirp.sync(gitDir) |
| fs.writeFileSync( |
| join(gitDir, 'gitstub'), |
| "won't fool git, also won't be included by fstream" |
| ) |
| |
| var historyDir = join(pkg, 'node_modules/history') |
| mkdirp.sync(historyDir) |
| fs.writeFileSync( |
| join(historyDir, 'README.md'), |
| "please don't include me" |
| ) |
| } |