test: fix "crash cases" tests not failing properly (#37304)

* test: fix "crash cases" tests not failing properly

* fixup! test: fix "crash cases" tests not failing properly
This commit is contained in:
Alexey Kuzmin 2023-02-17 10:14:00 +01:00 коммит произвёл GitHub
Родитель ea848bc1c5
Коммит 73b7aac6a4
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 15 добавлений и 12 удалений

Просмотреть файл

@ -8,7 +8,7 @@ const fixturePath = path.resolve(__dirname, 'fixtures', 'crash-cases');
let children: cp.ChildProcessWithoutNullStreams[] = [];
const runFixtureAndEnsureCleanExit = (args: string[]) => {
const runFixtureAndEnsureCleanExit = async (args: string[]) => {
let out = '';
const child = cp.spawn(process.execPath, args);
children.push(child);
@ -18,17 +18,20 @@ const runFixtureAndEnsureCleanExit = (args: string[]) => {
child.stderr.on('data', (chunk: Buffer) => {
out += chunk.toString();
});
return new Promise<void>((resolve) => {
type CodeAndSignal = {code: number | null, signal: NodeJS.Signals | null};
const { code, signal } = await new Promise<CodeAndSignal>((resolve) => {
child.on('exit', (code, signal) => {
if (code !== 0 || signal !== null) {
console.error(out);
}
expect(signal).to.equal(null, 'exit signal should be null');
expect(code).to.equal(0, 'should have exited with code 0');
children = children.filter(c => c !== child);
resolve();
resolve({ code, signal });
});
});
if (code !== 0 || signal !== null) {
console.error(out);
}
children = children.filter(c => c !== child);
expect(signal).to.equal(null, 'exit signal should be null');
expect(code).to.equal(0, 'should have exited with code 0');
};
const shouldRunCase = (crashCase: string) => {

Просмотреть файл

@ -62,10 +62,10 @@ describe('modules support', () => {
ifit(features.isRunAsNodeEnabled())('can be required in node binary', async function () {
const child = childProcess.fork(path.join(fixtures, 'module', 'uv-dlopen.js'));
await new Promise<void>(resolve => child.once('exit', (exitCode) => {
expect(exitCode).to.equal(0);
resolve();
const exitCode = await new Promise<number | null>(resolve => child.once('exit', (exitCode) => {
resolve(exitCode);
}));
expect(exitCode).to.equal(0);
});
});