diff options
author | Samy Pesse <samypesse@gmail.com> | 2015-05-27 21:05:36 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2015-05-27 21:05:36 +0200 |
commit | 36e2236e6bad2071ae604eccb46331bb7da3b79c (patch) | |
tree | a8aafce09b34979dbb3bc38ad6fb3df30725baa6 | |
parent | 72df665520353d404efbf9fe46d3afd73631884e (diff) | |
download | gitbook-36e2236e6bad2071ae604eccb46331bb7da3b79c.zip gitbook-36e2236e6bad2071ae604eccb46331bb7da3b79c.tar.gz gitbook-36e2236e6bad2071ae604eccb46331bb7da3b79c.tar.bz2 |
Fix #765: in init handle correctly empty entries
Add tests for it, fix #769
-rw-r--r-- | lib/book.js | 18 | ||||
-rw-r--r-- | test/books/init/.gitignore | 3 | ||||
-rw-r--r-- | test/books/init/SUMMARY.md | 6 | ||||
-rw-r--r-- | test/init.js | 23 |
4 files changed, 41 insertions, 9 deletions
diff --git a/lib/book.js b/lib/book.js index ac0fc82..2e0ab58 100644 --- a/lib/book.js +++ b/lib/book.js @@ -789,20 +789,19 @@ Book.prototype.normError = function(err, opts, defs) { }; // Init and return a book -Book.init = function(root) { - var book = new Book(root); +Book.init = function(root, opts) { + var book = new Book(root, opts); var extensionToUse = ".md"; var chaptersPaths = function(chapters) { return _.reduce(chapters || [], function(accu, chapter) { - if (!chapter.path) return accu; + var o = { + title: chapter.title + }; + if (chapter.path) o.path = chapter.path; + return accu.concat( - _.filter([ - { - title: chapter.title, - path: chapter.path - } - ].concat(chaptersPaths(chapter.articles))) + [o].concat(chaptersPaths(chapter.articles)) ); }, []); }; @@ -839,6 +838,7 @@ Book.init = function(root) { .then(function(chapters) { // Create files that don't exist return Q.all(_.map(chapters, function(chapter) { + if (!chapter.path) return Q(); var absolutePath = path.resolve(book.root, chapter.path); return fs.exists(absolutePath) diff --git a/test/books/init/.gitignore b/test/books/init/.gitignore new file mode 100644 index 0000000..8a88b2a --- /dev/null +++ b/test/books/init/.gitignore @@ -0,0 +1,3 @@ +* +!SUMMARY.md +!.gitignore diff --git a/test/books/init/SUMMARY.md b/test/books/init/SUMMARY.md new file mode 100644 index 0000000..1e63aed --- /dev/null +++ b/test/books/init/SUMMARY.md @@ -0,0 +1,6 @@ +# Summary + +* [Hello](hello.md) +* [Hello 2](hello2.md) +* Hello 3 + * [Hello 4](hello3/hello4.md) diff --git a/test/init.js b/test/init.js new file mode 100644 index 0000000..3ba701f --- /dev/null +++ b/test/init.js @@ -0,0 +1,23 @@ +var fs = require('fs'); +var path = require('path'); +var should = require('should'); + +var Book = require('../').Book; +var LOG_LEVELS = require('../').LOG_LEVELS; + +describe('Init Books', function () { + var initRoot; + + before(function() { + initRoot = path.resolve(__dirname, "books/init"); + return Book.init(initRoot, { + logLevel: LOG_LEVELS.DISABLED, + }); + }); + + it('should create all chapters', function() { + should(fs.existsSync(path.resolve(initRoot, "hello.md"))).be.ok; + should(fs.existsSync(path.resolve(initRoot, "hello2.md"))).be.ok; + should(fs.existsSync(path.resolve(initRoot, "hello3/hello4.md"))).be.ok; + }); +}); |