From a94f5e8cbb3e7f94fc9550a38d29b21c273050b5 Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Thu, 6 Jul 2017 12:17:57 +0100 Subject: [PATCH] build(aio): abort doc-gen if an example is missing Closes #16936 --- .../inline-tag-defs/example.spec.js | 10 ++++++++-- .../examples-package/services/getExampleRegion.js | 14 +++++++------- .../services/getExampleRegion.spec.js | 9 +++++++++ 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/aio/tools/transforms/examples-package/inline-tag-defs/example.spec.js b/aio/tools/transforms/examples-package/inline-tag-defs/example.spec.js index 5c32c38682..ec506b2c6c 100644 --- a/aio/tools/transforms/examples-package/inline-tag-defs/example.spec.js +++ b/aio/tools/transforms/examples-package/inline-tag-defs/example.spec.js @@ -31,8 +31,14 @@ describe('example inline-tag-def', function() { }; }); - it('should return a tag', () => { - expect(handler({}, 'example', 'some/uri')).toEqual('\n\n'); + it('should throw an error if there is no matching 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', () => { diff --git a/aio/tools/transforms/examples-package/services/getExampleRegion.js b/aio/tools/transforms/examples-package/services/getExampleRegion.js index bd26d084d8..47565942e0 100644 --- a/aio/tools/transforms/examples-package/services/getExampleRegion.js +++ b/aio/tools/transforms/examples-package/services/getExampleRegion.js @@ -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; diff --git a/aio/tools/transforms/examples-package/services/getExampleRegion.spec.js b/aio/tools/transforms/examples-package/services/getExampleRegion.spec.js index cb189e70f9..b07ba44d7a 100644 --- a/aio/tools/transforms/examples-package/services/getExampleRegion.spec.js +++ b/aio/tools/transforms/examples-package/services/getExampleRegion.spec.js @@ -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(); + }); });