| 'use strict'; |
| const common = require('../common'); |
| common.skipIfInspectorDisabled(); |
| const { strictEqual } = require('assert'); |
| const { NodeInstance } = require('../common/inspector-helper.js'); |
| |
| async function testNoServerNoCrash() { |
| console.log('Test there\'s no crash stopping server that was not started'); |
| const instance = new NodeInstance([], |
| `process._debugEnd(); |
| process.exit(42);`); |
| strictEqual((await instance.expectShutdown()).exitCode, 42); |
| } |
| |
| async function testNoSessionNoCrash() { |
| console.log('Test there\'s no crash stopping server without connecting'); |
| const instance = new NodeInstance('--inspect=0', |
| 'process._debugEnd();process.exit(42);'); |
| strictEqual((await instance.expectShutdown()).exitCode, 42); |
| } |
| |
| async function testSessionNoCrash() { |
| console.log('Test there\'s no crash stopping server after connecting'); |
| const script = `process._debugEnd(); |
| process._debugProcess(process.pid); |
| setTimeout(() => { |
| console.log("Done"); |
| process.exit(42); |
| });`; |
| |
| const instance = new NodeInstance('--inspect-brk=0', script); |
| const session = await instance.connectInspectorSession(); |
| await session.send({ method: 'NodeRuntime.enable' }); |
| await session.waitForNotification('NodeRuntime.waitingForDebugger'); |
| await session.send({ 'method': 'Runtime.runIfWaitingForDebugger' }); |
| await session.waitForServerDisconnect(); |
| strictEqual((await instance.expectShutdown()).exitCode, 42); |
| } |
| |
| async function runTest() { |
| await testNoServerNoCrash(); |
| await testNoSessionNoCrash(); |
| await testSessionNoCrash(); |
| } |
| |
| runTest().then(common.mustCall()); |