360 lines
10 KiB
JavaScript
Executable File
360 lines
10 KiB
JavaScript
Executable File
var tap = require("tap")
|
|
, tar = require("../tar.js")
|
|
, fs = require("fs")
|
|
, path = require("path")
|
|
, file = path.resolve(__dirname, "fixtures/c.tar")
|
|
, index = 0
|
|
|
|
, expect =
|
|
[ [ 'entry',
|
|
{ path: 'c.txt',
|
|
mode: 420,
|
|
uid: 24561,
|
|
gid: 20,
|
|
size: 513,
|
|
mtime: new Date('Wed, 26 Oct 2011 01:10:58 GMT'),
|
|
cksum: 5422,
|
|
type: '0',
|
|
linkpath: '',
|
|
ustar: 'ustar\0',
|
|
ustarver: '00',
|
|
uname: 'isaacs',
|
|
gname: 'staff',
|
|
devmaj: 0,
|
|
devmin: 0,
|
|
fill: '' },
|
|
undefined ],
|
|
[ 'entry',
|
|
{ path: 'cc.txt',
|
|
mode: 420,
|
|
uid: 24561,
|
|
gid: 20,
|
|
size: 513,
|
|
mtime: new Date('Wed, 26 Oct 2011 01:11:02 GMT'),
|
|
cksum: 5525,
|
|
type: '0',
|
|
linkpath: '',
|
|
ustar: 'ustar\0',
|
|
ustarver: '00',
|
|
uname: 'isaacs',
|
|
gname: 'staff',
|
|
devmaj: 0,
|
|
devmin: 0,
|
|
fill: '' },
|
|
undefined ],
|
|
[ 'entry',
|
|
{ path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
|
|
mode: 420,
|
|
uid: 24561,
|
|
gid: 20,
|
|
size: 100,
|
|
mtime: new Date('Thu, 27 Oct 2011 03:43:23 GMT'),
|
|
cksum: 18124,
|
|
type: '0',
|
|
linkpath: '',
|
|
ustar: 'ustar\0',
|
|
ustarver: '00',
|
|
uname: 'isaacs',
|
|
gname: 'staff',
|
|
devmaj: 0,
|
|
devmin: 0,
|
|
fill: '' },
|
|
undefined ],
|
|
[ 'entry',
|
|
{ path: 'Ω.txt',
|
|
mode: 420,
|
|
uid: 24561,
|
|
gid: 20,
|
|
size: 2,
|
|
mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'),
|
|
cksum: 5695,
|
|
type: '0',
|
|
linkpath: '',
|
|
ustar: 'ustar\0',
|
|
ustarver: '00',
|
|
uname: 'isaacs',
|
|
gname: 'staff',
|
|
devmaj: 0,
|
|
devmin: 0,
|
|
fill: '' },
|
|
undefined ],
|
|
[ 'extendedHeader',
|
|
{ path: 'PaxHeader/Ω.txt',
|
|
mode: 420,
|
|
uid: 24561,
|
|
gid: 20,
|
|
size: 120,
|
|
mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'),
|
|
cksum: 6702,
|
|
type: 'x',
|
|
linkpath: '',
|
|
ustar: 'ustar\0',
|
|
ustarver: '00',
|
|
uname: 'isaacs',
|
|
gname: 'staff',
|
|
devmaj: 0,
|
|
devmin: 0,
|
|
fill: '' },
|
|
{ path: 'Ω.txt',
|
|
ctime: 1319737909,
|
|
atime: 1319739061,
|
|
dev: 234881026,
|
|
ino: 51693379,
|
|
nlink: 1 } ],
|
|
[ 'entry',
|
|
{ path: 'Ω.txt',
|
|
mode: 420,
|
|
uid: 24561,
|
|
gid: 20,
|
|
size: 2,
|
|
mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'),
|
|
cksum: 5695,
|
|
type: '0',
|
|
linkpath: '',
|
|
ustar: 'ustar\0',
|
|
ustarver: '00',
|
|
uname: 'isaacs',
|
|
gname: 'staff',
|
|
devmaj: 0,
|
|
devmin: 0,
|
|
fill: '',
|
|
ctime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'),
|
|
atime: new Date('Thu, 27 Oct 2011 18:11:01 GMT'),
|
|
dev: 234881026,
|
|
ino: 51693379,
|
|
nlink: 1 },
|
|
undefined ],
|
|
[ 'extendedHeader',
|
|
{ path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
|
|
mode: 420,
|
|
uid: 24561,
|
|
gid: 20,
|
|
size: 353,
|
|
mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
|
|
cksum: 14488,
|
|
type: 'x',
|
|
linkpath: '',
|
|
ustar: 'ustar\0',
|
|
ustarver: '00',
|
|
uname: 'isaacs',
|
|
gname: 'staff',
|
|
devmaj: 0,
|
|
devmin: 0,
|
|
fill: '' },
|
|
{ path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
|
|
ctime: 1319686868,
|
|
atime: 1319741254,
|
|
'LIBARCHIVE.creationtime': '1319686852',
|
|
dev: 234881026,
|
|
ino: 51681874,
|
|
nlink: 1 } ],
|
|
[ 'entry',
|
|
{ path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
|
|
mode: 420,
|
|
uid: 24561,
|
|
gid: 20,
|
|
size: 200,
|
|
mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
|
|
cksum: 14570,
|
|
type: '0',
|
|
linkpath: '',
|
|
ustar: 'ustar\0',
|
|
ustarver: '00',
|
|
uname: 'isaacs',
|
|
gname: 'staff',
|
|
devmaj: 0,
|
|
devmin: 0,
|
|
fill: '',
|
|
ctime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
|
|
atime: new Date('Thu, 27 Oct 2011 18:47:34 GMT'),
|
|
'LIBARCHIVE.creationtime': '1319686852',
|
|
dev: 234881026,
|
|
ino: 51681874,
|
|
nlink: 1 },
|
|
undefined ],
|
|
[ 'longPath',
|
|
{ path: '././@LongLink',
|
|
mode: 0,
|
|
uid: 0,
|
|
gid: 0,
|
|
size: 201,
|
|
mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'),
|
|
cksum: 4976,
|
|
type: 'L',
|
|
linkpath: '',
|
|
ustar: false },
|
|
'200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ],
|
|
[ 'entry',
|
|
{ path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
|
|
mode: 420,
|
|
uid: 1000,
|
|
gid: 1000,
|
|
size: 201,
|
|
mtime: new Date('Thu, 27 Oct 2011 22:21:50 GMT'),
|
|
cksum: 14086,
|
|
type: '0',
|
|
linkpath: '',
|
|
ustar: false },
|
|
undefined ],
|
|
[ 'longLinkpath',
|
|
{ path: '././@LongLink',
|
|
mode: 0,
|
|
uid: 0,
|
|
gid: 0,
|
|
size: 201,
|
|
mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'),
|
|
cksum: 4975,
|
|
type: 'K',
|
|
linkpath: '',
|
|
ustar: false },
|
|
'200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ],
|
|
[ 'longPath',
|
|
{ path: '././@LongLink',
|
|
mode: 0,
|
|
uid: 0,
|
|
gid: 0,
|
|
size: 201,
|
|
mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'),
|
|
cksum: 4976,
|
|
type: 'L',
|
|
linkpath: '',
|
|
ustar: false },
|
|
'200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL' ],
|
|
[ 'entry',
|
|
{ path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL',
|
|
mode: 511,
|
|
uid: 1000,
|
|
gid: 1000,
|
|
size: 0,
|
|
mtime: new Date('Fri, 28 Oct 2011 23:05:17 GMT'),
|
|
cksum: 21603,
|
|
type: '2',
|
|
linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
|
|
ustar: false },
|
|
undefined ],
|
|
[ 'extendedHeader',
|
|
{ path: 'PaxHeader/200-hard',
|
|
mode: 420,
|
|
uid: 24561,
|
|
gid: 20,
|
|
size: 143,
|
|
mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
|
|
cksum: 6533,
|
|
type: 'x',
|
|
linkpath: '',
|
|
ustar: 'ustar\0',
|
|
ustarver: '00',
|
|
uname: 'isaacs',
|
|
gname: 'staff',
|
|
devmaj: 0,
|
|
devmin: 0,
|
|
fill: '' },
|
|
{ ctime: 1320617144,
|
|
atime: 1320617232,
|
|
'LIBARCHIVE.creationtime': '1319686852',
|
|
dev: 234881026,
|
|
ino: 51681874,
|
|
nlink: 2 } ],
|
|
[ 'entry',
|
|
{ path: '200-hard',
|
|
mode: 420,
|
|
uid: 24561,
|
|
gid: 20,
|
|
size: 200,
|
|
mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
|
|
cksum: 5526,
|
|
type: '0',
|
|
linkpath: '',
|
|
ustar: 'ustar\0',
|
|
ustarver: '00',
|
|
uname: 'isaacs',
|
|
gname: 'staff',
|
|
devmaj: 0,
|
|
devmin: 0,
|
|
fill: '',
|
|
ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'),
|
|
atime: new Date('Sun, 06 Nov 2011 22:07:12 GMT'),
|
|
'LIBARCHIVE.creationtime': '1319686852',
|
|
dev: 234881026,
|
|
ino: 51681874,
|
|
nlink: 2 },
|
|
undefined ],
|
|
[ 'extendedHeader',
|
|
{ path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
|
|
mode: 420,
|
|
uid: 24561,
|
|
gid: 20,
|
|
size: 353,
|
|
mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
|
|
cksum: 14488,
|
|
type: 'x',
|
|
linkpath: '',
|
|
ustar: 'ustar\0',
|
|
ustarver: '00',
|
|
uname: 'isaacs',
|
|
gname: 'staff',
|
|
devmaj: 0,
|
|
devmin: 0,
|
|
fill: '' },
|
|
{ path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
|
|
ctime: 1320617144,
|
|
atime: 1320617406,
|
|
'LIBARCHIVE.creationtime': '1319686852',
|
|
dev: 234881026,
|
|
ino: 51681874,
|
|
nlink: 2 } ],
|
|
[ 'entry',
|
|
{ path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
|
|
mode: 420,
|
|
uid: 24561,
|
|
gid: 20,
|
|
size: 0,
|
|
mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'),
|
|
cksum: 15173,
|
|
type: '1',
|
|
linkpath: '200-hard',
|
|
ustar: 'ustar\0',
|
|
ustarver: '00',
|
|
uname: 'isaacs',
|
|
gname: 'staff',
|
|
devmaj: 0,
|
|
devmin: 0,
|
|
fill: '',
|
|
ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'),
|
|
atime: new Date('Sun, 06 Nov 2011 22:10:06 GMT'),
|
|
'LIBARCHIVE.creationtime': '1319686852',
|
|
dev: 234881026,
|
|
ino: 51681874,
|
|
nlink: 2 },
|
|
undefined ] ]
|
|
|
|
|
|
tap.test("parser test", function (t) {
|
|
var parser = tar.Parse()
|
|
|
|
parser.on("end", function () {
|
|
t.equal(index, expect.length, "saw all expected events")
|
|
t.end()
|
|
})
|
|
|
|
fs.createReadStream(file)
|
|
.pipe(parser)
|
|
.on("*", function (ev, entry) {
|
|
var wanted = expect[index]
|
|
if (!wanted) {
|
|
return t.fail("Unexpected event: " + ev)
|
|
}
|
|
var result = [ev, entry.props]
|
|
entry.on("end", function () {
|
|
result.push(entry.fields || entry.body)
|
|
|
|
t.equal(ev, wanted[0], index + " event type")
|
|
t.equivalent(entry.props, wanted[1], wanted[1].path + " entry properties")
|
|
if (wanted[2]) {
|
|
t.equivalent(result[2], wanted[2], "metadata values")
|
|
}
|
|
index ++
|
|
})
|
|
})
|
|
})
|