test: add spec for child-process-gone
event for utility process (#40281)
This commit is contained in:
parent
beb0cbc6d0
commit
a867503af6
2 changed files with 22 additions and 2 deletions
|
@ -29,7 +29,7 @@ Process: [Main](../glossary.md#main-process)<br />
|
||||||
* `inherit`: equivalent to \['ignore', 'inherit', 'inherit']
|
* `inherit`: equivalent to \['ignore', 'inherit', 'inherit']
|
||||||
* `serviceName` string (optional) - Name of the process that will appear in `name` property of
|
* `serviceName` string (optional) - Name of the process that will appear in `name` property of
|
||||||
[`child-process-gone` event of `app`](app.md#event-child-process-gone).
|
[`child-process-gone` event of `app`](app.md#event-child-process-gone).
|
||||||
Default is `node.mojom.NodeService`.
|
Default is `Node Utility Process`.
|
||||||
* `allowLoadingUnsignedLibraries` boolean (optional) _macOS_ - With this flag, the utility process will be
|
* `allowLoadingUnsignedLibraries` boolean (optional) _macOS_ - With this flag, the utility process will be
|
||||||
launched via the `Electron Helper (Plugin).app` helper executable on macOS, which can be
|
launched via the `Electron Helper (Plugin).app` helper executable on macOS, which can be
|
||||||
codesigned with `com.apple.security.cs.disable-library-validation` and
|
codesigned with `com.apple.security.cs.disable-library-validation` and
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { expect } from 'chai';
|
import { expect } from 'chai';
|
||||||
import * as childProcess from 'node:child_process';
|
import * as childProcess from 'node:child_process';
|
||||||
import * as path from 'node:path';
|
import * as path from 'node:path';
|
||||||
import { BrowserWindow, MessageChannelMain, utilityProcess } from 'electron/main';
|
import { BrowserWindow, MessageChannelMain, utilityProcess, app } from 'electron/main';
|
||||||
import { ifit } from './lib/spec-helpers';
|
import { ifit } from './lib/spec-helpers';
|
||||||
import { closeWindow } from './lib/window-helpers';
|
import { closeWindow } from './lib/window-helpers';
|
||||||
import { once } from 'node:events';
|
import { once } from 'node:events';
|
||||||
|
@ -93,6 +93,26 @@ describe('utilityProcess module', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('app \'child-process-gone\' event', () => {
|
||||||
|
it('with default serviceName', async () => {
|
||||||
|
utilityProcess.fork(path.join(fixturesPath, 'crash.js'));
|
||||||
|
const [, details] = await once(app, 'child-process-gone') as [any, Electron.Details];
|
||||||
|
expect(details.type).to.equal('Utility');
|
||||||
|
expect(details.serviceName).to.equal('node.mojom.NodeService');
|
||||||
|
expect(details.name).to.equal('Node Utility Process');
|
||||||
|
expect(details.reason).to.be.oneOf(['crashed', 'abnormal-exit']);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('with custom serviceName', async () => {
|
||||||
|
utilityProcess.fork(path.join(fixturesPath, 'crash.js'), [], { serviceName: 'Hello World!' });
|
||||||
|
const [, details] = await once(app, 'child-process-gone') as [any, Electron.Details];
|
||||||
|
expect(details.type).to.equal('Utility');
|
||||||
|
expect(details.serviceName).to.equal('node.mojom.NodeService');
|
||||||
|
expect(details.name).to.equal('Hello World!');
|
||||||
|
expect(details.reason).to.be.oneOf(['crashed', 'abnormal-exit']);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('kill() API', () => {
|
describe('kill() API', () => {
|
||||||
it('terminates the child process gracefully', async () => {
|
it('terminates the child process gracefully', async () => {
|
||||||
const child = utilityProcess.fork(path.join(fixturesPath, 'endless.js'), [], {
|
const child = utilityProcess.fork(path.join(fixturesPath, 'endless.js'), [], {
|
||||||
|
|
Loading…
Reference in a new issue