55 lines
1.2 KiB
JavaScript
55 lines
1.2 KiB
JavaScript
|
var run = require('./run.js');
|
||
|
|
||
|
var repo = {};
|
||
|
require('../mixins/mem-db.js')(repo);
|
||
|
|
||
|
var pack = require('./sample-pack.js');
|
||
|
var hashes;
|
||
|
|
||
|
run([
|
||
|
function setup() {
|
||
|
require('../mixins/pack-ops.js')(repo);
|
||
|
},
|
||
|
function testUnpack(end) {
|
||
|
repo.unpack(singleStream(pack), {
|
||
|
onProgress: onProgress
|
||
|
}, function (err, result) {
|
||
|
if (err) return end(err);
|
||
|
hashes = result;
|
||
|
if (hashes.length !== 16) {
|
||
|
return end(new Error("Wrong number of objects unpacked"));
|
||
|
}
|
||
|
end();
|
||
|
});
|
||
|
function onProgress(progress) {
|
||
|
// console.log(progress);
|
||
|
}
|
||
|
},
|
||
|
function testPack(end) {
|
||
|
var stream;
|
||
|
var parts = [];
|
||
|
repo.pack(hashes, {}, function (err, result) {
|
||
|
if (err) return end(err);
|
||
|
stream = result;
|
||
|
stream.take(onRead);
|
||
|
});
|
||
|
function onRead(err, chunk) {
|
||
|
if (err) return end(err);
|
||
|
// console.log(chunk);
|
||
|
if (chunk) {
|
||
|
parts.push(chunk);
|
||
|
return stream.take(onRead);
|
||
|
}
|
||
|
end();
|
||
|
}
|
||
|
}
|
||
|
]);
|
||
|
|
||
|
function singleStream(item) {
|
||
|
var done = false;
|
||
|
return { take: function (callback) {
|
||
|
if (done) return callback();
|
||
|
done = true;
|
||
|
callback(null, item);
|
||
|
}};
|
||
|
}
|