more tests
This commit is contained in:
parent
526b5f0125
commit
585cf8c55f
5 changed files with 302 additions and 2 deletions
227
test/extract.js
227
test/extract.js
|
@ -38,4 +38,231 @@ test('one-file', function(t) {
|
||||||
});
|
});
|
||||||
|
|
||||||
extract.end(fs.readFileSync(fixtures.ONE_FILE_TAR));
|
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));
|
||||||
});
|
});
|
4
test/fixtures/index.js
vendored
4
test/fixtures/index.js
vendored
|
@ -1,3 +1,5 @@
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
|
|
||||||
exports.ONE_FILE_TAR = path.join(__dirname, 'one-file.tar');
|
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
BIN
test/fixtures/multi-file.tar
vendored
Normal file
Binary file not shown.
BIN
test/fixtures/types.tar
vendored
Normal file
BIN
test/fixtures/types.tar
vendored
Normal file
Binary file not shown.
73
test/pack.js
73
test/pack.js
|
@ -5,7 +5,7 @@ var concat = require('concat-stream');
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
|
|
||||||
test('one-file', function(t) {
|
test('one-file', function(t) {
|
||||||
t.plan(1);
|
t.plan(2);
|
||||||
|
|
||||||
var pack = tar.pack();
|
var pack = tar.pack();
|
||||||
|
|
||||||
|
@ -22,6 +22,77 @@ test('one-file', function(t) {
|
||||||
pack.finalize();
|
pack.finalize();
|
||||||
|
|
||||||
pack.pipe(concat(function(data) {
|
pack.pipe(concat(function(data) {
|
||||||
|
t.same(data.length & 511, 0);
|
||||||
t.deepEqual(data, fs.readFileSync(fixtures.ONE_FILE_TAR));
|
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));
|
||||||
|
}));
|
||||||
|
|
||||||
});
|
});
|
Loading…
Reference in a new issue