mirror of
https://github.com/denoland/deno.git
synced 2024-12-03 17:08:35 -05:00
4e38fbd0a3
Fixes: https://github.com/denoland/deno/issues/24713 Fixes: https://github.com/denoland/deno/issues/25855
46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
// deno-fmt-ignore-file
|
|
// deno-lint-ignore-file
|
|
|
|
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
|
|
// Taken from Node 18.12.1
|
|
// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
|
|
|
|
'use strict';
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const cp = require('child_process');
|
|
const NUM_MESSAGES = 10;
|
|
const values = [];
|
|
|
|
for (let i = 0; i < NUM_MESSAGES; ++i) {
|
|
values[i] = i;
|
|
}
|
|
|
|
if (process.argv[2] === 'child') {
|
|
const received = values.map(() => { return false; });
|
|
|
|
process.on('uncaughtException', common.mustCall((err) => {
|
|
received[err] = true;
|
|
const done = received.every((element) => { return element === true; });
|
|
|
|
if (done)
|
|
process.disconnect();
|
|
}, NUM_MESSAGES));
|
|
|
|
process.on('message', (msg) => {
|
|
// If messages are handled synchronously, throwing should break the IPC
|
|
// message processing.
|
|
throw msg;
|
|
});
|
|
|
|
process.send('ready');
|
|
} else {
|
|
const child = cp.fork(__filename, ['child']);
|
|
|
|
child.on('message', common.mustCall((msg) => {
|
|
assert.strictEqual(msg, 'ready');
|
|
values.forEach((value) => {
|
|
child.send(value);
|
|
});
|
|
}));
|
|
}
|