build(aio): capture and log errors and warnings when post-processing HTML
This commit is contained in:
parent
9945ce2259
commit
64335d3521
|
@ -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');
|
const plugin = require('./autolink-headings');
|
||||||
|
|
||||||
describe('autolink-headings postprocessor', () => {
|
describe('autolink-headings postprocessor', () => {
|
||||||
let processor;
|
let processor;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
processor = processorFactory();
|
const dgeni = new Dgeni([testPackage('angular-base-package')]);
|
||||||
|
const injector = dgeni.configureInjector();
|
||||||
|
processor = injector.get('postProcessHtml');
|
||||||
processor.docTypes = ['a'];
|
processor.docTypes = ['a'];
|
||||||
processor.plugins = [plugin];
|
processor.plugins = [plugin];
|
||||||
});
|
});
|
||||||
|
|
|
@ -17,7 +17,7 @@ const rehype = require('rehype');
|
||||||
* @property plugins {Function[]} the rehype plugins that will modify the HAST.
|
* @property plugins {Function[]} the rehype plugins that will modify the HAST.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
module.exports = function postProcessHtml() {
|
module.exports = function postProcessHtml(log, createDocMessage) {
|
||||||
return {
|
return {
|
||||||
$runAfter: ['docs-rendered'],
|
$runAfter: ['docs-rendered'],
|
||||||
$runBefore: ['writing-files'],
|
$runBefore: ['writing-files'],
|
||||||
|
@ -30,8 +30,18 @@ module.exports = function postProcessHtml() {
|
||||||
|
|
||||||
docs
|
docs
|
||||||
.filter(doc => this.docTypes.indexOf(doc.docType) !== -1)
|
.filter(doc => this.docTypes.indexOf(doc.docType) !== -1)
|
||||||
.forEach(doc =>
|
.forEach(doc => {
|
||||||
doc.renderedContent = engine.processSync(doc.renderedContent).contents);
|
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;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -59,4 +59,24 @@ describe('postProcessHtml', function() {
|
||||||
processor.$process(docs);
|
processor.$process(docs);
|
||||||
expect(elements).toEqual(['A1', 'B1']);
|
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();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue