'use strict'; const common = require('../common'); common.skipIfInspectorDisabled(); const fixtures = require('../common/fixtures'); const startCLI = require('../common/debugger'); const assert = require('assert'); const { spawn } = require('child_process'); function launchTarget(...args) { const childProc = spawn(process.execPath, args); return Promise.resolve(childProc); } { const script = fixtures.path('debugger', 'alive.js'); let cli = null; let target = null; function cleanup(error) { if (cli) { cli.quit(); cli = null; } if (target) { target.kill(); target = null; } assert.ifError(error); } return launchTarget(script) .then((childProc) => { target = childProc; cli = startCLI(['-p', `${target.pid}`]); return cli.waitForPrompt(); }) .then(() => cli.command('sb("alive.js", 3)')) .then(() => cli.waitFor(/break/)) .then(() => cli.waitForPrompt()) .then(() => { assert.match( cli.output, /> 3 {3}\+\+x;/, 'marks the 3rd line'); }) .then(() => cleanup()) .then(null, cleanup); }