tar-stream/test/pack.js

170 lines
3.3 KiB
JavaScript
Raw Normal View History

2014-11-05 14:05:22 +00:00
var test = require('tape')
var tar = require('../index')
var fixtures = require('./fixtures')
var concat = require('concat-stream')
var fs = require('fs')
2013-12-21 00:03:48 +00:00
2015-11-06 23:30:21 +00:00
test('one-file', function (t) {
2014-11-05 14:05:22 +00:00
t.plan(2)
2013-12-21 00:03:48 +00:00
2014-11-05 14:05:22 +00:00
var pack = tar.pack()
2013-12-21 00:03:48 +00:00
2014-11-05 14:05:22 +00:00
pack.entry({
2015-11-06 23:30:21 +00:00
name: 'test.txt',
mtime: new Date(1387580181000),
mode: parseInt('644', 8),
uname: 'maf',
gname: 'staff',
uid: 501,
gid: 20
2014-11-05 14:05:22 +00:00
}, 'hello world\n')
2013-12-21 00:03:48 +00:00
2014-11-05 14:05:22 +00:00
pack.finalize()
2013-12-21 00:03:48 +00:00
2015-11-06 23:30:21 +00:00
pack.pipe(concat(function (data) {
2014-11-05 14:05:22 +00:00
t.same(data.length & 511, 0)
t.deepEqual(data, fs.readFileSync(fixtures.ONE_FILE_TAR))
}))
})
2013-12-21 01:04:02 +00:00
2015-11-06 23:30:21 +00:00
test('multi-file', function (t) {
2014-11-05 14:05:22 +00:00
t.plan(2)
var pack = tar.pack()
pack.entry({
2015-11-06 23:30:21 +00:00
name: 'file-1.txt',
mtime: new Date(1387580181000),
mode: parseInt('644', 8),
uname: 'maf',
gname: 'staff',
uid: 501,
gid: 20
2014-11-05 14:05:22 +00:00
}, 'i am file-1\n')
pack.entry({
2015-11-06 23:30:21 +00:00
name: 'file-2.txt',
mtime: new Date(1387580181000),
mode: parseInt('644', 8),
size: 12,
uname: 'maf',
gname: 'staff',
uid: 501,
gid: 20
2014-11-05 14:05:22 +00:00
}).end('i am file-2\n')
pack.finalize()
2015-11-06 23:30:21 +00:00
pack.pipe(concat(function (data) {
2014-11-05 14:05:22 +00:00
t.same(data.length & 511, 0)
t.deepEqual(data, fs.readFileSync(fixtures.MULTI_FILE_TAR))
}))
})
2013-12-21 01:04:02 +00:00
test('pax', function (t) {
t.plan(2)
var pack = tar.pack()
pack.entry({
name: 'pax.txt',
mtime: new Date(1387580181000),
mode: parseInt('644', 8),
uname: 'maf',
gname: 'staff',
uid: 501,
gid: 20,
pax: {special: 'sauce'}
}, 'hello world\n')
pack.finalize()
pack.pipe(concat(function (data) {
// fs.writeFileSync('tmp.tar', data)
t.same(data.length & 511, 0)
t.deepEqual(data, fs.readFileSync(fixtures.PAX_TAR))
}))
})
2015-11-06 23:30:21 +00:00
test('types', function (t) {
2014-11-05 14:05:22 +00:00
t.plan(2)
var pack = tar.pack()
pack.entry({
2015-11-06 23:30:21 +00:00
name: 'directory',
mtime: new Date(1387580181000),
type: 'directory',
mode: parseInt('755', 8),
uname: 'maf',
gname: 'staff',
uid: 501,
gid: 20
2014-11-05 14:05:22 +00:00
})
pack.entry({
2015-11-06 23:30:21 +00:00
name: 'directory-link',
mtime: new Date(1387580181000),
type: 'symlink',
2014-11-05 14:05:22 +00:00
linkname: 'directory',
2015-11-06 23:30:21 +00:00
mode: parseInt('755', 8),
uname: 'maf',
gname: 'staff',
uid: 501,
gid: 20,
size: 9 // Should convert to zero
2014-11-05 14:05:22 +00:00
})
pack.finalize()
2015-11-06 23:30:21 +00:00
pack.pipe(concat(function (data) {
2014-11-05 14:05:22 +00:00
t.equal(data.length & 511, 0)
t.deepEqual(data, fs.readFileSync(fixtures.TYPES_TAR))
}))
})
2013-12-21 01:22:03 +00:00
2015-11-06 23:30:21 +00:00
test('long-name', function (t) {
2014-11-05 14:05:22 +00:00
t.plan(2)
var pack = tar.pack()
pack.entry({
2015-11-06 23:30:21 +00:00
name: 'my/file/is/longer/than/100/characters/and/should/use/the/prefix/header/foobarbaz/foobarbaz/foobarbaz/foobarbaz/foobarbaz/foobarbaz/filename.txt',
mtime: new Date(1387580181000),
type: 'file',
mode: parseInt('644', 8),
uname: 'maf',
gname: 'staff',
uid: 501,
gid: 20
2014-11-05 14:05:22 +00:00
}, 'hello long name\n')
pack.finalize()
2015-11-06 23:30:21 +00:00
pack.pipe(concat(function (data) {
2014-11-05 14:05:22 +00:00
t.equal(data.length & 511, 0)
t.deepEqual(data, fs.readFileSync(fixtures.LONG_NAME_TAR))
}))
})
2015-11-06 23:30:21 +00:00
test('unicode', function (t) {
2014-11-05 14:05:22 +00:00
t.plan(2)
var pack = tar.pack()
pack.entry({
2015-11-06 23:30:21 +00:00
name: 'høstål.txt',
mtime: new Date(1387580181000),
type: 'file',
mode: parseInt('644', 8),
uname: 'maf',
gname: 'staff',
uid: 501,
gid: 20
2014-11-05 14:05:22 +00:00
}, 'høllø\n')
pack.finalize()
2015-11-06 23:30:21 +00:00
pack.pipe(concat(function (data) {
2014-11-05 14:05:22 +00:00
t.equal(data.length & 511, 0)
t.deepEqual(data, fs.readFileSync(fixtures.UNICODE_TAR))
}))
2015-10-15 15:56:44 +00:00
})