blob: ac94251f72caa24be7cdccffd3c4728fea1d3e2d [file] [log] [blame]
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"
)
}