more tests

This commit is contained in:
Mathias Buus 2013-12-21 02:04:02 +01:00
parent 526b5f0125
commit 585cf8c55f
5 changed files with 302 additions and 2 deletions

View file

@ -39,3 +39,230 @@ test('one-file', function(t) {
extract.end(fs.readFileSync(fixtures.ONE_FILE_TAR));
});
test('chunked-one-file', function(t) {
t.plan(3);
var extract = tar.extract();
var noEntries = false;
extract.on('entry', function(header, stream, callback) {
t.deepEqual(header, {
name: 'test.txt',
mode: 0644,
uid: 501,
gid: 20,
size: 12,
mtime: new Date(1387580181000),
type: 'file',
linkname: null,
uname: 'maf',
gname: 'staff',
devmajor: 0,
devminor: 0
});
stream.pipe(concat(function(data) {
noEntries = true;
t.same(data.toString(), 'hello world\n');
callback();
}));
});
extract.on('finish', function() {
t.ok(noEntries);
});
var b = fs.readFileSync(fixtures.ONE_FILE_TAR);
for (var i = 0; i < b.length; i += 321) {
extract.write(b.slice(i, i+321));
}
extract.end();
});
test('multi-file', function(t) {
t.plan(5);
var extract = tar.extract();
var noEntries = false;
var onfile1 = function(header, stream, callback) {
t.deepEqual(header, {
name: 'file-1.txt',
mode: 0644,
uid: 501,
gid: 20,
size: 12,
mtime: new Date(1387580181000),
type: 'file',
linkname: null,
uname: 'maf',
gname: 'staff',
devmajor: 0,
devminor: 0
});
extract.on('entry', onfile2);
stream.pipe(concat(function(data) {
t.same(data.toString(), 'i am file-1\n');
callback();
}));
};
var onfile2 = function(header, stream, callback) {
t.deepEqual(header, {
name: 'file-2.txt',
mode: 0644,
uid: 501,
gid: 20,
size: 12,
mtime: new Date(1387580181000),
type: 'file',
linkname: null,
uname: 'maf',
gname: 'staff',
devmajor: 0,
devminor: 0
});
stream.pipe(concat(function(data) {
noEntries = true;
t.same(data.toString(), 'i am file-2\n');
callback();
}));
};
extract.once('entry', onfile1);
extract.on('finish', function() {
t.ok(noEntries);
});
extract.end(fs.readFileSync(fixtures.MULTI_FILE_TAR));
});
test('chunked-multi-file', function(t) {
t.plan(5);
var extract = tar.extract();
var noEntries = false;
var onfile1 = function(header, stream, callback) {
t.deepEqual(header, {
name: 'file-1.txt',
mode: 0644,
uid: 501,
gid: 20,
size: 12,
mtime: new Date(1387580181000),
type: 'file',
linkname: null,
uname: 'maf',
gname: 'staff',
devmajor: 0,
devminor: 0
});
extract.on('entry', onfile2);
stream.pipe(concat(function(data) {
t.same(data.toString(), 'i am file-1\n');
callback();
}));
};
var onfile2 = function(header, stream, callback) {
t.deepEqual(header, {
name: 'file-2.txt',
mode: 0644,
uid: 501,
gid: 20,
size: 12,
mtime: new Date(1387580181000),
type: 'file',
linkname: null,
uname: 'maf',
gname: 'staff',
devmajor: 0,
devminor: 0
});
stream.pipe(concat(function(data) {
noEntries = true;
t.same(data.toString(), 'i am file-2\n');
callback();
}));
};
extract.once('entry', onfile1);
extract.on('finish', function() {
t.ok(noEntries);
});
var b = fs.readFileSync(fixtures.MULTI_FILE_TAR);
for (var i = 0; i < b.length; i += 321) {
extract.write(b.slice(i, i+321));
}
extract.end();
});
test('types', function(t) {
t.plan(3);
var extract = tar.extract();
var noEntries = false;
var ondir = function(header, stream, callback) {
t.deepEqual(header, {
name: 'directory',
mode: 0755,
uid: 501,
gid: 20,
size: 0,
mtime: new Date(1387580181000),
type: 'directory',
linkname: null,
uname: 'maf',
gname: 'staff',
devmajor: 0,
devminor: 0
});
stream.on('data', function() {
t.ok(false);
});
extract.once('entry', onlink);
callback();
};
var onlink = function(header, stream, callback) {
t.deepEqual(header, {
name: 'directory-link',
mode: 0755,
uid: 501,
gid: 20,
size: 0,
mtime: new Date(1387580181000),
type: 'symlink',
linkname: 'directory',
uname: 'maf',
gname: 'staff',
devmajor: 0,
devminor: 0
});
stream.on('data', function() {
t.ok(false);
});
noEntries = true;
callback();
};
extract.once('entry', ondir);
extract.on('finish', function() {
t.ok(noEntries);
});
extract.end(fs.readFileSync(fixtures.TYPES_TAR));
});

View file

@ -1,3 +1,5 @@
var path = require('path');
exports.ONE_FILE_TAR = path.join(__dirname, 'one-file.tar');
exports.MULTI_FILE_TAR = path.join(__dirname, 'multi-file.tar');
exports.TYPES_TAR = path.join(__dirname, 'types.tar');

BIN
test/fixtures/multi-file.tar vendored Normal file

Binary file not shown.

BIN
test/fixtures/types.tar vendored Normal file

Binary file not shown.

View file

@ -5,7 +5,7 @@ var concat = require('concat-stream');
var fs = require('fs');
test('one-file', function(t) {
t.plan(1);
t.plan(2);
var pack = tar.pack();
@ -22,6 +22,77 @@ test('one-file', function(t) {
pack.finalize();
pack.pipe(concat(function(data) {
t.same(data.length & 511, 0);
t.deepEqual(data, fs.readFileSync(fixtures.ONE_FILE_TAR));
}));
});
test('multi-file', function(t) {
t.plan(2);
var pack = tar.pack();
pack.entry({
name:'file-1.txt',
mtime:new Date(1387580181000),
mode:0644,
uname:'maf',
gname:'staff',
uid:501,
gid:20
}, 'i am file-1\n');
pack.entry({
name:'file-2.txt',
mtime:new Date(1387580181000),
mode:0644,
size:12,
uname:'maf',
gname:'staff',
uid:501,
gid:20
}).end('i am file-2\n');
pack.finalize();
pack.pipe(concat(function(data) {
t.same(data.length & 511, 0);
t.deepEqual(data, fs.readFileSync(fixtures.MULTI_FILE_TAR));
}));
});
test('types', function(t) {
t.plan(2);
var pack = tar.pack();
pack.entry({
name:'directory',
mtime:new Date(1387580181000),
type:'directory',
mode:0755,
uname:'maf',
gname:'staff',
uid:501,
gid:20
});
pack.entry({
name:'directory-link',
mtime:new Date(1387580181000),
type:'symlink',
linkname: 'directory',
mode:0755,
uname:'maf',
gname:'staff',
uid:501,
gid:20
});
pack.finalize();
pack.pipe(concat(function(data) {
t.equal(data.length & 511, 0);
t.deepEqual(data, fs.readFileSync(fixtures.TYPES_TAR));
}));
});