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.
112 lines
2.7 KiB
112 lines
2.7 KiB
'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 zlib = require('zlib')
|
|
var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
|
|
var fixturepath = path.resolve(basepath, 'npm-test-bundled-deps')
|
|
var targetpath = path.resolve(basepath, 'target')
|
|
var Tacks = require('tacks')
|
|
var File = Tacks.File
|
|
var Dir = Tacks.Dir
|
|
|
|
test('basic bundling', function (t) {
|
|
var fixture = new Tacks(
|
|
Dir({
|
|
'package.json': File({
|
|
name: 'npm-test-files',
|
|
version: '1.2.5',
|
|
bundledDependencies: [
|
|
'addme'
|
|
]
|
|
}),
|
|
node_modules: Dir({
|
|
addme: Dir({
|
|
'index.js': File('')
|
|
}),
|
|
iggyme: Dir({
|
|
'index.js': File('')
|
|
})
|
|
})
|
|
})
|
|
)
|
|
withFixture(t, fixture, function (done) {
|
|
t.ok(fileExists('node_modules/addme'), 'bundled dep included')
|
|
t.notOk(fileExists('node_modules/iggyme'), 'unspecified dep not included')
|
|
done()
|
|
})
|
|
})
|
|
|
|
test('scoped dep bundling', function (t) {
|
|
var fixture = new Tacks(
|
|
Dir({
|
|
'package.json': File({
|
|
name: 'npm-test-files',
|
|
version: '1.2.5',
|
|
bundledDependencies: [
|
|
'@foo/addme'
|
|
]
|
|
}),
|
|
node_modules: Dir({
|
|
'@foo': Dir({
|
|
addme: Dir({
|
|
'index.js': File('')
|
|
}),
|
|
iggyme: Dir({
|
|
'index.js': File('')
|
|
})
|
|
})
|
|
})
|
|
})
|
|
)
|
|
withFixture(t, fixture, function (done) {
|
|
t.ok(fileExists('node_modules/@foo/addme'), 'bundled dep included')
|
|
t.notOk(
|
|
fileExists('node_modules/@foo/iggyme'),
|
|
'unspecified dep not 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
|
|
fs.createReadStream(path.join(basepath, 'npm-test-files-1.2.5.tgz'))
|
|
.pipe(zlib.Unzip())
|
|
.on('error', cb)
|
|
.pipe(tar.Extract(targetpath))
|
|
.on('error', cb)
|
|
.on('end', function () { cb() })
|
|
}
|
|
|