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

@ -31,8 +31,14 @@ describe('example inline-tag-def', function() {
}; };
}); });
it('should return a <code-example> tag', () => { it('should throw an error if there is no matching example', () => {
expect(handler({}, 'example', 'some/uri')).toEqual('<code-example>\n\n</code-example>'); expect(function() {
handler({}, 'example', 'missing/uri');
}).toThrowError();
expect(function() {
handler({}, 'example', 'test/url missing-region');
}).toThrowError();
}); });
it('should contain the whole contents from the example file if no region is specified', () => { it('should contain the whole contents from the example file if no region is specified', () => {

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) { return function getExampleRegionImpl(doc, relativePath, regionName) {
const EXAMPLES_FOLDERS = collectExamples.exampleFolders; 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 still no file then we error
if (!exampleFile) { if (!exampleFile) {
log.error(createDocMessage('Missing example file... relativePath: "' + relativePath + '".', doc)); const message = createDocMessage('Missing example file... relativePath: "' + relativePath + '".', doc) + '\n' +
log.error('Example files can be found in: ' + EXAMPLES_FOLDERS.join(', ')); 'Example files can be found in: ' + EXAMPLES_FOLDERS.join(', ');
return ''; throw new Error(message);
} }
var sourceCodeDoc = exampleFile.regions[regionName || '']; var sourceCodeDoc = exampleFile.regions[regionName || ''];
if (!sourceCodeDoc) { if (!sourceCodeDoc) {
log.error(createDocMessage('Missing example region... relativePath: "' + relativePath + '", region: "' + regionName + '".', doc)); const message = createDocMessage('Missing example region... relativePath: "' + relativePath + '", region: "' + regionName + '".', doc) + '\n' +
log.error('Regions available are:', Object.keys[exampleFile.regions]); 'Regions available are:' + Object.keys[exampleFile.regions];
return ''; throw new Error(message);
} }
return sourceCodeDoc.renderedContent; 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', () => { 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'); 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();
});
}); });