2023-12-13 05:14:16 -05:00
|
|
|
// deno-fmt-ignore-file
|
|
|
|
// deno-lint-ignore-file
|
|
|
|
|
|
|
|
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
|
|
|
|
// Taken from Node 18.12.1
|
2024-04-02 18:24:55 -04:00
|
|
|
// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
|
2023-12-13 05:14:16 -05:00
|
|
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
// Ignore on Windows.
|
|
|
|
if (process.platform === 'win32') {
|
|
|
|
process.exit(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
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);
|
|
|
|
});
|
|
|
|
}));
|
|
|
|
}
|