diff --git a/src/builder/balanced/balanced-reducer.js b/src/builder/balanced/balanced-reducer.js index 12291a43..2bd45cd0 100644 --- a/src/builder/balanced/balanced-reducer.js +++ b/src/builder/balanced/balanced-reducer.js @@ -1,6 +1,5 @@ 'use strict' -const assert = require('assert') const pull = require('pull-stream') const pushable = require('pull-pushable') const pullPair = require('pull-pair') @@ -17,9 +16,12 @@ module.exports = function balancedReduceToRoot (reduce, options) { result.end(err) return // early } - assert.equal(roots.length, 1, 'need one root') - result.push(roots[0]) - result.end() + if (roots.length === 1) { + result.push(roots[0]) + result.end() + } else if (roots.length > 1) { + result.end(new Error('expected a maximum of 0 roots and got ' + roots.length)) + } }) function reduceToParents (_chunks, callback) { diff --git a/src/builder/trickle/trickle-reducer.js b/src/builder/trickle/trickle-reducer.js index 92f9456f..ebc34753 100644 --- a/src/builder/trickle/trickle-reducer.js +++ b/src/builder/trickle/trickle-reducer.js @@ -1,6 +1,5 @@ 'use strict' -const assert = require('assert') const pull = require('pull-stream') const pushable = require('pull-pushable') const batch = require('pull-batch') @@ -21,13 +20,16 @@ module.exports = function trickleReduceToRoot (reduce, options) { trickle(0, -1), batch(Infinity), pull.asyncMap(reduce), - pull.collect((err, nodes) => { + pull.collect((err, roots) => { if (err) { result.end(err) } else { - assert.equal(nodes.length, 1, 'need one root') - result.push(nodes[0]) - result.end() + if (roots.length === 1) { + result.push(roots[0]) + result.end() + } else if (roots.length > 1) { + result.end(new Error('expected a maximum of 0 roots and got ' + roots.length)) + } } }) ) diff --git a/test/test-importer.js b/test/test-importer.js index 351208cf..8b072767 100644 --- a/test/test-importer.js +++ b/test/test-importer.js @@ -184,6 +184,17 @@ module.exports = (repo) => { ) }) + it('doesn\'t yield anything on empty source', (done) => { + pull( + pull.empty(), + importer(ipldResolver, options), + pull.collect((err, nodes) => { + expect(err).to.not.exist + expect(nodes.length).to.be.eql(0) + done() + })) + }) + it('fails on more than one root', (done) => { pull( pull.values([