libzim
Version:
Bindings to zimlib (read/write OpenZIM files)
67 lines (65 loc) • 2.62 kB
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()
}))
})
})
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()
}))
})
})
})