110 lines
4.5 KiB
JavaScript
110 lines
4.5 KiB
JavaScript
var tar = require('../')
|
|
var path = require('path')
|
|
var rfile = require('rfile')
|
|
var rimraf = require('rimraf').sync
|
|
var mkdir = require('mkdirp').sync
|
|
|
|
var read = require('fs').createReadStream
|
|
var write = require('fs').createWriteStream
|
|
var assert = require('assert')
|
|
|
|
beforeEach(function () {
|
|
rimraf(__dirname + '/output')
|
|
})
|
|
afterEach(function () {
|
|
rimraf(__dirname + '/output')
|
|
})
|
|
describe('tarball.pipe(unpack(directory, callback))', function () {
|
|
it('unpacks the tarball into the directory', function (done) {
|
|
read(__dirname + '/fixtures/packed.tar').pipe(tar.unpack(__dirname + '/output/unpacked', function (err) {
|
|
if (err) return done(err)
|
|
assert.equal(rfile('./output/unpacked/bar.txt'), rfile('./fixtures/to-pack/bar.txt'))
|
|
assert.equal(rfile('./output/unpacked/foo.txt'), rfile('./fixtures/to-pack/foo.txt'))
|
|
done()
|
|
}))
|
|
})
|
|
it('unpacks the tarball into the directory without deleting existing files', function (done) {
|
|
read(__dirname + '/fixtures/packed-file.txt').pipe(tar.unpack(__dirname + '/output/unpacked', function (err) {
|
|
if (err) return done(err)
|
|
read(__dirname + '/fixtures/packed.tar').pipe(tar.unpack(__dirname + '/output/unpacked', {keepFiles: true}, function (err) {
|
|
if (err) return done(err)
|
|
assert.equal(rfile('./output/unpacked/index.js'), rfile('./fixtures/packed-file.txt'))
|
|
done()
|
|
}))
|
|
}))
|
|
})
|
|
})
|
|
describe('tarball.pipe(unpack(directory, { strip: 0 }, callback))', function () {
|
|
it('unpacks the tarball into the directory with subdir package', function (done) {
|
|
read(__dirname + '/fixtures/packed.tar').pipe(tar.unpack(__dirname + '/output/unpacked', { strip: 0 } , function (err) {
|
|
if (err) return done(err)
|
|
assert.equal(rfile('./output/unpacked/package/bar.txt'), rfile('./fixtures/to-pack/bar.txt'))
|
|
assert.equal(rfile('./output/unpacked/package/foo.txt'), rfile('./fixtures/to-pack/foo.txt'))
|
|
done()
|
|
}))
|
|
})
|
|
})
|
|
describe('gziptarball.pipe(unpack(directory, callback))', function () {
|
|
it('unpacks the tarball into the directory', function (done) {
|
|
read(__dirname + '/fixtures/packed.tar.gz').pipe(tar.unpack(__dirname + '/output/unpacked', function (err) {
|
|
if (err) return done(err)
|
|
assert.equal(rfile('./output/unpacked/bar.txt'), rfile('./fixtures/to-pack/bar.txt'))
|
|
assert.equal(rfile('./output/unpacked/foo.txt'), rfile('./fixtures/to-pack/foo.txt'))
|
|
done()
|
|
}))
|
|
})
|
|
})
|
|
describe('file.pipe(unpack(directory, callback))', function () {
|
|
it('copies the file into the directory', function (done) {
|
|
read(__dirname + '/fixtures/packed-file.txt').pipe(tar.unpack(__dirname + '/output/unpacked', function (err) {
|
|
if (err) return done(err)
|
|
assert.equal(rfile('./output/unpacked/index.js'), rfile('./fixtures/packed-file.txt'))
|
|
done()
|
|
}))
|
|
})
|
|
})
|
|
describe('pack(directory).pipe(tarball)', function () {
|
|
it('packs the directory into the output', function (done) {
|
|
var called = false
|
|
mkdir(__dirname + '/output/')
|
|
tar.pack(__dirname + '/fixtures/to-pack').pipe(write(__dirname + '/output/packed.tar.gz'))
|
|
.on('error', function (err) {
|
|
if (called) return
|
|
called = true
|
|
done(err)
|
|
})
|
|
.on('close', function () {
|
|
if (called) return
|
|
called = true
|
|
read(__dirname + '/output/packed.tar.gz').pipe(tar.unpack(__dirname + '/output/unpacked', function (err) {
|
|
if (err) return done(err)
|
|
assert.equal(rfile('./output/unpacked/bar.txt'), rfile('./fixtures/to-pack/bar.txt'))
|
|
assert.equal(rfile('./output/unpacked/foo.txt'), rfile('./fixtures/to-pack/foo.txt'))
|
|
done()
|
|
}))
|
|
})
|
|
})
|
|
})
|
|
describe('pack(directory, { fromBase: true }).pipe(tarball)', function () {
|
|
it('packs the directory with input dir as base dir', function (done) {
|
|
var called = false
|
|
mkdir(__dirname + '/output/')
|
|
tar.pack(__dirname + '/fixtures/to-pack', { fromBase: true }).pipe(write(__dirname + '/output/packed.tar.gz'))
|
|
.on('error', function (err) {
|
|
if (called) return
|
|
called = true
|
|
done(err)
|
|
})
|
|
.on('close', function () {
|
|
if (called) return
|
|
called = true
|
|
read(__dirname + '/output/packed.tar.gz').pipe(tar.unpack(__dirname + '/output/unpacked', { strip: 0 }, function (err) {
|
|
if (err) return done(err)
|
|
assert.equal(rfile('./output/unpacked/bar.txt'), rfile('./fixtures/to-pack/bar.txt'))
|
|
assert.equal(rfile('./output/unpacked/foo.txt'), rfile('./fixtures/to-pack/foo.txt'))
|
|
done()
|
|
}))
|
|
})
|
|
})
|
|
})
|