78 lines
2.2 KiB
JavaScript
78 lines
2.2 KiB
JavaScript
'use strict';
|
|
|
|
var test = require('tap').test;
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
var temp = require('temp');
|
|
var dirdiff = require('dirdiff');
|
|
var unzip = require('../');
|
|
|
|
test("parse archive w/ file size unknown flag set (created by OS X Finder)", function (t) {
|
|
var archive = path.join(__dirname, '../testData/compressed-OSX-Finder/archive.zip');
|
|
|
|
var unzipParser = unzip.Parse();
|
|
fs.createReadStream(archive).pipe(unzipParser);
|
|
unzipParser.on('error', function(err) {
|
|
throw err;
|
|
});
|
|
|
|
unzipParser.on('close', t.end.bind(this));
|
|
});
|
|
|
|
test("extract archive w/ file size unknown flag set (created by OS X Finder)", function (t) {
|
|
var archive = path.join(__dirname, '../testData/compressed-OSX-Finder/archive.zip');
|
|
|
|
temp.mkdir('node-unzip-', function (err, dirPath) {
|
|
if (err) {
|
|
throw err;
|
|
}
|
|
var unzipExtractor = unzip.Extract({ path: dirPath });
|
|
unzipExtractor.on('error', function(err) {
|
|
throw err;
|
|
});
|
|
unzipExtractor.on('close', testExtractionResults);
|
|
|
|
fs.createReadStream(archive).pipe(unzipExtractor);
|
|
|
|
function testExtractionResults() {
|
|
dirdiff(path.join(__dirname, '../testData/compressed-OSX-Finder/inflated'), dirPath, {
|
|
fileContents: true
|
|
}, function (err, diffs) {
|
|
if (err) {
|
|
throw err;
|
|
}
|
|
t.equal(diffs.length, 0, 'extracted directory contents');
|
|
t.end();
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
test("archive w/ language encoding flag set", function (t) {
|
|
var archive = path.join(__dirname, '../testData/compressed-flags-set/archive.zip');
|
|
|
|
temp.mkdir('node-unzip-', function (err, dirPath) {
|
|
if (err) {
|
|
throw err;
|
|
}
|
|
var unzipExtractor = unzip.Extract({ path: dirPath });
|
|
unzipExtractor.on('error', function(err) {
|
|
throw err;
|
|
});
|
|
unzipExtractor.on('close', testExtractionResults);
|
|
|
|
fs.createReadStream(archive).pipe(unzipExtractor);
|
|
|
|
function testExtractionResults() {
|
|
dirdiff(path.join(__dirname, '../testData/compressed-flags-set/inflated'), dirPath, {
|
|
fileContents: true
|
|
}, function (err, diffs) {
|
|
if (err) {
|
|
throw err;
|
|
}
|
|
t.equal(diffs.length, 0, 'extracted directory contents');
|
|
t.end();
|
|
});
|
|
}
|
|
});
|
|
}); |