diff --git a/aio/tools/transforms/angular-base-package/post-processors/autolink-headings.spec.js b/aio/tools/transforms/angular-base-package/post-processors/autolink-headings.spec.js index aa40561d8e..618da3a568 100644 --- a/aio/tools/transforms/angular-base-package/post-processors/autolink-headings.spec.js +++ b/aio/tools/transforms/angular-base-package/post-processors/autolink-headings.spec.js @@ -1,11 +1,14 @@ -const processorFactory = require('../../post-process-package/processors/post-process-html'); +var testPackage = require('../../helpers/test-package'); +var Dgeni = require('dgeni'); const plugin = require('./autolink-headings'); describe('autolink-headings postprocessor', () => { let processor; beforeEach(() => { - processor = processorFactory(); + const dgeni = new Dgeni([testPackage('angular-base-package')]); + const injector = dgeni.configureInjector(); + processor = injector.get('postProcessHtml'); processor.docTypes = ['a']; processor.plugins = [plugin]; }); diff --git a/aio/tools/transforms/post-process-package/processors/post-process-html.js b/aio/tools/transforms/post-process-package/processors/post-process-html.js index ddd2387205..426cf521f7 100644 --- a/aio/tools/transforms/post-process-package/processors/post-process-html.js +++ b/aio/tools/transforms/post-process-package/processors/post-process-html.js @@ -17,7 +17,7 @@ const rehype = require('rehype'); * @property plugins {Function[]} the rehype plugins that will modify the HAST. * */ -module.exports = function postProcessHtml() { +module.exports = function postProcessHtml(log, createDocMessage) { return { $runAfter: ['docs-rendered'], $runBefore: ['writing-files'], @@ -30,8 +30,18 @@ module.exports = function postProcessHtml() { docs .filter(doc => this.docTypes.indexOf(doc.docType) !== -1) - .forEach(doc => - doc.renderedContent = engine.processSync(doc.renderedContent).contents); + .forEach(doc => { + const vFile = engine.processSync(doc.renderedContent); + vFile.messages.forEach(m => { + const message = createDocMessage(m.message, doc); + if (m.fatal) { + throw new Error(message); + } else { + log.warn(message); + } + }); + doc.renderedContent = vFile.contents; + }); } }; }; diff --git a/aio/tools/transforms/post-process-package/processors/post-process-html.spec.js b/aio/tools/transforms/post-process-package/processors/post-process-html.spec.js index 4ec2854198..33c8173855 100644 --- a/aio/tools/transforms/post-process-package/processors/post-process-html.spec.js +++ b/aio/tools/transforms/post-process-package/processors/post-process-html.spec.js @@ -59,4 +59,24 @@ describe('postProcessHtml', function() { processor.$process(docs); expect(elements).toEqual(['A1', 'B1']); }); + + it('should report non-fatal errors', () => { + const log = injector.get('log'); + const addWarning = (ast, file) => { + file.message('There was a problem'); + }; + processor.plugins = [() => addWarning]; + processor.$process([{ docType: 'a', renderedContent: '' }]); + expect(log.warn).toHaveBeenCalled(); + }); + + it('should throw on fatal errors', () => { + const log = injector.get('log'); + const addError = (ast, file) => { + file.fail('There was an error'); + }; + processor.plugins = [() => addError]; + expect(() => processor.$process([{ docType: 'a', renderedContent: '' }])).toThrow(); + expect(log.error).not.toHaveBeenCalled(); + }); });