diff --git a/lib/index.js b/lib/index.js index ce43eeb..3230189 100644 --- a/lib/index.js +++ b/lib/index.js @@ -40,6 +40,14 @@ function plugin(opts){ }); }); + /** + * Ensure that a default empty collection exists. + */ + + keys.forEach(function(key) { + metadata[key] = metadata[key] || []; + }); + /** * Sort the collections. */ @@ -139,4 +147,4 @@ function matcher(cols){ } return unique(matches); }; -} \ No newline at end of file +} diff --git a/test/fixtures/basic/build/one.md b/test/fixtures/basic/build/one.md index 43dd47e..d888cd7 100644 --- a/test/fixtures/basic/build/one.md +++ b/test/fixtures/basic/build/one.md @@ -1 +1,2 @@ + one \ No newline at end of file diff --git a/test/fixtures/basic/build/two.md b/test/fixtures/basic/build/two.md index 64c5e58..f12fcfe 100644 --- a/test/fixtures/basic/build/two.md +++ b/test/fixtures/basic/build/two.md @@ -1 +1,2 @@ + two \ No newline at end of file diff --git a/test/fixtures/empty/build/one.md b/test/fixtures/empty/build/one.md new file mode 100644 index 0000000..a71c015 --- /dev/null +++ b/test/fixtures/empty/build/one.md @@ -0,0 +1,2 @@ + +one diff --git a/test/fixtures/empty/src/one.md b/test/fixtures/empty/src/one.md new file mode 100644 index 0000000..59ee133 --- /dev/null +++ b/test/fixtures/empty/src/one.md @@ -0,0 +1,5 @@ +--- +title: No collection here +--- + +one diff --git a/test/fixtures/pattern/build/one.md b/test/fixtures/pattern/build/one.md index 43dd47e..d888cd7 100644 --- a/test/fixtures/pattern/build/one.md +++ b/test/fixtures/pattern/build/one.md @@ -1 +1,2 @@ + one \ No newline at end of file diff --git a/test/fixtures/pattern/build/two.md b/test/fixtures/pattern/build/two.md index 64c5e58..f12fcfe 100644 --- a/test/fixtures/pattern/build/two.md +++ b/test/fixtures/pattern/build/two.md @@ -1 +1,2 @@ + two \ No newline at end of file diff --git a/test/fixtures/references/build/one.md b/test/fixtures/references/build/one.md index 43dd47e..d888cd7 100644 --- a/test/fixtures/references/build/one.md +++ b/test/fixtures/references/build/one.md @@ -1 +1,2 @@ + one \ No newline at end of file diff --git a/test/fixtures/references/build/three.md b/test/fixtures/references/build/three.md index 1d19714..b57895e 100644 --- a/test/fixtures/references/build/three.md +++ b/test/fixtures/references/build/three.md @@ -1 +1,2 @@ + three \ No newline at end of file diff --git a/test/fixtures/references/build/two.md b/test/fixtures/references/build/two.md index 64c5e58..f12fcfe 100644 --- a/test/fixtures/references/build/two.md +++ b/test/fixtures/references/build/two.md @@ -1 +1,2 @@ + two \ No newline at end of file diff --git a/test/fixtures/sort/build/one.md b/test/fixtures/sort/build/one.md index 43dd47e..d888cd7 100644 --- a/test/fixtures/sort/build/one.md +++ b/test/fixtures/sort/build/one.md @@ -1 +1,2 @@ + one \ No newline at end of file diff --git a/test/fixtures/sort/build/three.md b/test/fixtures/sort/build/three.md index 1d19714..b57895e 100644 --- a/test/fixtures/sort/build/three.md +++ b/test/fixtures/sort/build/three.md @@ -1 +1,2 @@ + three \ No newline at end of file diff --git a/test/fixtures/sort/build/two.md b/test/fixtures/sort/build/two.md index 64c5e58..f12fcfe 100644 --- a/test/fixtures/sort/build/two.md +++ b/test/fixtures/sort/build/two.md @@ -1 +1,2 @@ + two \ No newline at end of file diff --git a/test/index.js b/test/index.js index 2d08eb0..0f51a77 100644 --- a/test/index.js +++ b/test/index.js @@ -128,4 +128,21 @@ describe('metalsmith-collections', function(){ done(); }); }); -}); \ No newline at end of file + + it('should not fail with empty collections', function(done) { + var metalsmith = Metalsmith('test/fixtures/empty'); + metalsmith + .use(collections({ + articles: { + sortBy: 'date', + reverse: true + } + })) + .build(function(err) { + if (err) return done(err); + var articles = metalsmith.metadata().articles; + assert.equal(articles.length, 0); + done(); + }); + }); +});