diff --git a/.gitignore b/.gitignore index da708a6..19a0a42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules -test/build-* \ No newline at end of file +test/build-* +test/out diff --git a/package.json b/package.json index 6b7033c..5670b60 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ }, "devDependencies": { "assert-dir-equal": "^1.0.1", - "metalsmith": "^1.0.1", + "metalsmith": "^2.1.0", "mocha": "^2.1.0" } } diff --git a/test/test.js b/test/test.js index c925e63..1cd80c9 100644 --- a/test/test.js +++ b/test/test.js @@ -2,6 +2,7 @@ var assert = require('assert'); var equal = require('assert-dir-equal'); var Metalsmith = require('metalsmith'); var pandoc = require('..'); +var fs = require('fs'); describe('metalsmith-pandoc', function(){ it('should convert markdown files to html', function(done){ @@ -28,4 +29,29 @@ describe('metalsmith-pandoc', function(){ done(); }); }); + + it('should be able to process 20 thousand files', function(done){ + var many = 20000; + this.timeout(0); + + Metalsmith('test') + .destination('out') + .concurrency(1000) // avoid file table overflow (ENFILE) + .use(function (files) { + // add fake files + for (var i = 0; i < many; i += 1) { + var filename = i + '.md'; + files[filename] = { + title: 'fake ' + i, + contents: 'sample markdown' + }; + } + }) + .use(pandoc()) + .build(function(err){ + if (err) return done(err); + assert.equal(fs.readdirSync('test/out').length, many + 1); + done(); + }); + }); });