mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
2.8 KiB
132 lines
2.8 KiB
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"
|
|
)
|
|
}
|
|
|