tar-stream/test/slow.js

61 lines
1.4 KiB
JavaScript
Raw Normal View History

var test = require('tape')
var stream = require('readable-stream')
var zlib = require('zlib')
var fs = require('fs')
var tar = require('../')
var fixtures = require('./fixtures')
test('huge', function (t) {
t.plan(1)
var extract = tar.extract()
var noEntries = false
var hugeFileSize = 8804630528 // ~8.2GB
var dataLength = 0
var countStream = new stream.Writable()
countStream._write = function (chunk, encoding, done) {
dataLength += chunk.length
done()
}
// Make sure we read the correct pax size entry for a file larger than 8GB.
extract.on('entry', function (header, stream, callback) {
t.deepEqual(header, {
devmajor: 0,
devminor: 0,
gid: 20,
gname: 'staff',
linkname: null,
mode: 420,
mtime: new Date(1521214967000),
name: 'huge.txt',
pax: {
'LIBARCHIVE.creationtime': '1521214954',
'SCHILY.dev': '16777218',
'SCHILY.ino': '91584182',
'SCHILY.nlink': '1',
atime: '1521214969',
ctime: '1521214967',
size: hugeFileSize.toString()
},
size: hugeFileSize,
type: 'file',
uid: 502,
uname: 'apd4n'
})
noEntries = true
stream.pipe(countStream)
})
extract.on('finish', function () {
t.ok(noEntries)
t.equal(dataLength, hugeFileSize)
})
var gunzip = zlib.createGunzip()
var reader = fs.createReadStream(fixtures.HUGE)
reader.pipe(gunzip).pipe(extract)
})