0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-21 21:19:50 +01:00
nodejs/test/parallel/test-inspector-async-call-stack-abort.js
Joyee Cheung 7ece9f3c28 test: move more inspector sequential tests to parallel
This moves sequential inspector tests that can be run in
parallel (using random ports) to parallel.

Before:

```
❯ tools/test.py "test/sequential/test-inspector-*"
[00:07|% 100|+  28|-   0]: Done

All tests passed.
❯ tools/test.py "test/parallel/test-inspector-*"
[00:01|% 100|+  26|-   0]: Done

All tests passed.
```

After:

```
❯ tools/test.py "test/sequential/test-inspector-*"
[00:00|% 100|+   1|-   0]: Done

All tests passed.
❯ tools/test.py "test/parallel/test-inspector-*"
[00:01|% 100|+  53|-   0]: Done

All tests passed.
```

PR-URL: https://github.com/nodejs/node/pull/47412
Refs: https://github.com/nodejs/node/issues/47146
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
2023-04-07 17:47:47 +00:00

37 lines
1.3 KiB
JavaScript

// Check that abrupt termination when async call stack recording is enabled
// does not segfault the process.
'use strict';
const common = require('../common');
common.skipIfInspectorDisabled();
common.skipIf32Bits();
const { strictEqual } = require('assert');
const eyecatcher = 'nou, houdoe he?';
if (process.argv[2] === 'child') {
const { Session } = require('inspector');
const { promisify } = require('util');
const { internalBinding } = require('internal/test/binding');
const { registerAsyncHook } = internalBinding('inspector');
(async () => {
let enabled = 0;
registerAsyncHook(() => ++enabled, () => {});
const session = new Session();
session.connect();
session.post = promisify(session.post);
await session.post('Debugger.enable');
strictEqual(enabled, 0);
await session.post('Debugger.setAsyncCallStackDepth', { maxDepth: 42 });
strictEqual(enabled, 1);
throw new Error(eyecatcher);
})().finally(common.mustCall());
} else {
const { spawnSync } = require('child_process');
const options = { encoding: 'utf8' };
const proc = spawnSync(
process.execPath, ['--expose-internals', __filename, 'child'], options);
strictEqual(proc.status, 1);
strictEqual(proc.signal, null);
strictEqual(proc.stderr.includes(eyecatcher), true);
}