build(aio): abort doc-gen if an example is missing

Closes #16936
This commit is contained in:
Peter Bacon Darwin
2017-07-06 12:17:57 +01:00
parent 1390afef23
commit a94f5e8cbb
3 changed files with 24 additions and 9 deletions

View File

@ -1,4 +1,4 @@
module.exports = function getExampleRegion(exampleMap, createDocMessage, log, collectExamples) {
module.exports = function getExampleRegion(exampleMap, createDocMessage, collectExamples) {
return function getExampleRegionImpl(doc, relativePath, regionName) {
const EXAMPLES_FOLDERS = collectExamples.exampleFolders;
@ -14,16 +14,16 @@ module.exports = function getExampleRegion(exampleMap, createDocMessage, log, co
// If still no file then we error
if (!exampleFile) {
log.error(createDocMessage('Missing example file... relativePath: "' + relativePath + '".', doc));
log.error('Example files can be found in: ' + EXAMPLES_FOLDERS.join(', '));
return '';
const message = createDocMessage('Missing example file... relativePath: "' + relativePath + '".', doc) + '\n' +
'Example files can be found in: ' + EXAMPLES_FOLDERS.join(', ');
throw new Error(message);
}
var sourceCodeDoc = exampleFile.regions[regionName || ''];
if (!sourceCodeDoc) {
log.error(createDocMessage('Missing example region... relativePath: "' + relativePath + '", region: "' + regionName + '".', doc));
log.error('Regions available are:', Object.keys[exampleFile.regions]);
return '';
const message = createDocMessage('Missing example region... relativePath: "' + relativePath + '", region: "' + regionName + '".', doc) + '\n' +
'Regions available are:' + Object.keys[exampleFile.regions];
throw new Error(message);
}
return sourceCodeDoc.renderedContent;

View File

@ -26,4 +26,13 @@ describe('getExampleRegion', () => {
it('should contain the region contents from the example file if a region is specified', () => {
expect(getExampleRegion({}, 'test/url', 'region-1')).toEqual('region 1 contents');
});
it('should throw an error if an example doesn\'t exist', function() {
expect(function() {
getExampleRegion({}, 'missing/file', 'region-1');
}).toThrowError();
expect(function() {
getExampleRegion({}, 'test/url', 'missing-region');
}).toThrowError();
});
});