From c2916b4f1d49b5500e4b51143d4e6065ac200eef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20O=C3=9Fwald?= <1410947+matz3@users.noreply.github.com> Date: Fri, 18 Nov 2022 15:06:12 +0100 Subject: [PATCH] [BREAKING] JSDoc: Fail build when jsdoc command failed (#845) BREAKING CHANGE: The `jsdocGenerator` processor and the corresponding `generateJsdoc` task will now throw an error when JSDoc reports an error (exit code != 0). This will also fail the build when running `ui5 build jsdoc`. --- lib/processors/jsdoc/jsdocGenerator.js | 14 ++++++-------- test/lib/processors/jsdoc/jsdocGenerator.js | 8 +++++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/processors/jsdoc/jsdocGenerator.js b/lib/processors/jsdoc/jsdocGenerator.js index ba14461ea..84f8dd5e2 100644 --- a/lib/processors/jsdoc/jsdocGenerator.js +++ b/lib/processors/jsdoc/jsdocGenerator.js @@ -170,18 +170,16 @@ async function buildJsdoc({sourcePath, configPath}) { "--verbose", sourcePath ]; - return new Promise((resolve, reject) => { + const exitCode = await new Promise((resolve /* , reject */) => { const child = spawn("node", args, { stdio: ["ignore", "ignore", "inherit"] }); - child.on("close", function(code) { - if (code === 0 || code === 1) { - resolve(); - } else { - reject(new Error(`JSDoc child process closed with code ${code}`)); - } - }); + child.on("close", resolve); }); + + if (exitCode !== 0) { + throw new Error(`JSDoc reported an error, check the log for issues (exit code: ${exitCode})`); + } } jsdocGenerator._generateJsdocConfig = generateJsdocConfig; diff --git a/test/lib/processors/jsdoc/jsdocGenerator.js b/test/lib/processors/jsdoc/jsdocGenerator.js index 8850f0c4e..72a9dbca5 100644 --- a/test/lib/processors/jsdoc/jsdocGenerator.js +++ b/test/lib/processors/jsdoc/jsdocGenerator.js @@ -114,10 +114,12 @@ test.serial("buildJsdoc", async (t) => { // Re-execute with exit code 1 exitCode = 1; - await t.notThrowsAsync(jsdocGenerator._buildJsdoc({ + await t.throwsAsync(jsdocGenerator._buildJsdoc({ sourcePath: "/some/path", configPath: "/some/config/path/jsdoc-config.json" - })); + }), { + message: "JSDoc reported an error, check the log for issues (exit code: 1)" + }); // Re-execute with exit code 2 exitCode = 2; @@ -125,7 +127,7 @@ test.serial("buildJsdoc", async (t) => { sourcePath: "/some/path", configPath: "/some/config/path/jsdoc-config.json" })); - t.is(error.message, "JSDoc child process closed with code 2"); + t.is(error.message, "JSDoc reported an error, check the log for issues (exit code: 2)"); }); test.serial("jsdocGenerator", async (t) => {