tar-stream/test/slow/huge.js

63 lines
1.4 KiB
JavaScript
Raw Normal View History

const test = require('brittle')
const zlib = require('zlib')
const fs = require('fs')
const { Writable } = require('streamx')
const tar = require('../..')
const fixtures = require('../fixtures')
test('huge', function (t) {
2023-06-17 17:11:53 +00:00
t.plan(3)
const extract = tar.extract()
let noEntries = false
const hugeFileSize = 8804630528 // ~8.2GB
let dataLength = 0
const countStream = new Writable({
write (data, cb) {
dataLength += data.length
cb()
}
})
// Make sure we read the correct pax size entry for a file larger than 8GB.
extract.on('entry', function (header, stream, callback) {
t.alike(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)
2023-06-17 17:11:53 +00:00
callback()
})
extract.on('finish', function () {
t.ok(noEntries)
t.is(dataLength, hugeFileSize)
})
const gunzip = zlib.createGunzip()
const reader = fs.createReadStream(fixtures.HUGE)
reader.pipe(gunzip).pipe(extract)
})