diff --git a/test/extract.js b/test/extract.js new file mode 100644 index 0000000..f144fb1 --- /dev/null +++ b/test/extract.js @@ -0,0 +1,41 @@ +var test = require('tap').test; +var tar = require('../index'); +var fixtures = require('./fixtures'); +var concat = require('concat-stream'); +var fs = require('fs'); + +test('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); + }); + + extract.end(fs.readFileSync(fixtures.ONE_FILE_TAR)); +}); \ No newline at end of file diff --git a/test/fixtures/index.js b/test/fixtures/index.js new file mode 100644 index 0000000..5a59c7e --- /dev/null +++ b/test/fixtures/index.js @@ -0,0 +1,3 @@ +var path = require('path'); + +exports.ONE_FILE_TAR = path.join(__dirname, 'one-file.tar'); \ No newline at end of file diff --git a/test/fixtures/one-file.tar b/test/fixtures/one-file.tar new file mode 100644 index 0000000..12dbd21 Binary files /dev/null and b/test/fixtures/one-file.tar differ diff --git a/test/pack.js b/test/pack.js new file mode 100644 index 0000000..f2ec58d --- /dev/null +++ b/test/pack.js @@ -0,0 +1,27 @@ +var test = require('tap').test; +var tar = require('../index'); +var fixtures = require('./fixtures'); +var concat = require('concat-stream'); +var fs = require('fs'); + +test('one-file', function(t) { + t.plan(1); + + var pack = tar.pack(); + + pack.entry({ + name:'test.txt', + mtime:new Date(1387580181000), + mode:0644, + uname:'maf', + gname:'staff', + uid:501, + gid:20 + }, 'hello world\n'); + + pack.finalize(); + + pack.pipe(concat(function(data) { + t.deepEqual(data, fs.readFileSync(fixtures.ONE_FILE_TAR)); + })); +}); \ No newline at end of file