fix: don't double-log unhandled rejections (#37464)

This commit is contained in:
Shelley Vohr 2023-03-06 11:04:43 +01:00 committed by GitHub
parent 17ccb3c6ec
commit 829fb4f586
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 56 additions and 2 deletions

View file

@ -226,6 +226,42 @@ describe('node feature', () => {
}));
expect(result).to.equal('hello');
});
it('does not log the warning more than once when the rejection is unhandled', async () => {
const appPath = path.join(mainFixturesPath, 'api', 'unhandled-rejection.js');
const appProcess = childProcess.spawn(process.execPath, [appPath]);
let output = '';
const out = (data: string) => {
output += data;
if (/UnhandledPromiseRejectionWarning/.test(data)) {
appProcess.kill();
}
};
appProcess.stdout!.on('data', out);
appProcess.stderr!.on('data', out);
await once(appProcess, 'exit');
expect(/UnhandledPromiseRejectionWarning/.test(output)).to.equal(true);
const matches = output.match(/Error: oops/gm);
expect(matches).to.have.lengthOf(1);
});
it('does not log the warning more than once when the rejection is handled', async () => {
const appPath = path.join(mainFixturesPath, 'api', 'unhandled-rejection-handled.js');
const appProcess = childProcess.spawn(process.execPath, [appPath]);
let output = '';
const out = (data: string) => { output += data; };
appProcess.stdout!.on('data', out);
appProcess.stderr!.on('data', out);
const [code] = await once(appProcess, 'exit');
expect(code).to.equal(0);
expect(/UnhandledPromiseRejectionWarning/.test(output)).to.equal(false);
const matches = output.match(/Error: oops/gm);
expect(matches).to.have.lengthOf(1);
});
});
});