8000 Handle rebuild failures without exiting · ember-cli/ember-cli@4a36187 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4a36187

Browse files
bendemboskiKelly Selden
authored andcommitted
Handle rebuild failures without exiting
When a rebuild fails, mark it as a builder failure so the watcher doesn't re-throw it, causing it to be an unhandled error that results in the process exiting. Fixes #9584
1 parent 1376857 commit 4a36187

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

lib/models/builder.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,10 @@ class Builder extends CoreObject {
221221
} catch (error) {
222222
await this.processAddonBuildSteps('buildError', error);
223223

224+
// Mark this as a builder error so the watcher knows it has been handled
225+
// and won't re-throw it
226+
error.isBuilderError = true;
227+
224228
throw error;
225229
} finally {
226230
clearInterval(uiProgressIntervalID);

tests/unit/models/builder-test.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,20 @@ describe('models/builder.js', function () {
478478
await expect(builder.build()).to.be.rejected;
479479
expect(hooksCalled).to.deep.equal(['preBuild', 'build', 'postBuild', 'outputReady', 'buildError']);
480480
});
481+
482+
it('sets `isBuilderError` on handled addon errors', async function () {
483+
addon.postBuild = function () {
484+
return Promise.reject(new Error('preBuild Error'));
485+
};
486+
487+
let error;
488+
try {
489+
await builder.build();
490+
} catch (e) {
491+
error = e;
492+
}
493+
expect(error).to.haveOwnProperty('isBuilderError', true);
494+
});
481495
});
482496

483497
describe('fallback from broccoli 2 to broccoli-builder', function () {

0 commit comments

Comments
 (0)
0