1'use strict'; 2const common = require('../common'); 3 4common.skipIfInspectorDisabled(); 5 6const fixtures = require('../common/fixtures'); 7const startCLI = require('../common/debugger'); 8 9const assert = require('assert'); 10const path = require('path'); 11 12const scriptFullPath = fixtures.path('debugger', 'three-lines.js'); 13const script = path.relative(process.cwd(), scriptFullPath); 14 15// Run after quit. 16const runTest = async () => { 17 const cli = startCLI(['--port=0', script]); 18 try { 19 await cli.waitForInitialBreak(); 20 await cli.waitForPrompt(); 21 await cli.command('breakpoints'); 22 assert.match(cli.output, /No breakpoints yet/); 23 await cli.command('sb(2)'); 24 await cli.command('sb(3)'); 25 await cli.command('breakpoints'); 26 assert.ok(cli.output.includes(`#0 ${script}:2`)); 27 assert.ok(cli.output.includes(`#1 ${script}:3`)); 28 await cli.stepCommand('c'); // hit line 2 29 await cli.stepCommand('c'); // hit line 3 30 assert.deepStrictEqual(cli.breakInfo, { filename: script, line: 3 }); 31 await cli.command('restart'); 32 await cli.waitForInitialBreak(); 33 assert.deepStrictEqual(cli.breakInfo, { filename: script, line: 1 }); 34 await cli.stepCommand('c'); 35 assert.deepStrictEqual(cli.breakInfo, { filename: script, line: 2 }); 36 await cli.stepCommand('c'); 37 assert.deepStrictEqual(cli.breakInfo, { filename: script, line: 3 }); 38 await cli.command('breakpoints'); 39 const msg = `SCRIPT: ${script}, OUTPUT: ${cli.output}`; 40 assert.ok(cli.output.includes(`#0 ${script}:2`), msg); 41 assert.ok(cli.output.includes(`#1 ${script}:3`), msg); 42 } finally { 43 await cli.quit(); 44 } 45}; 46 47runTest(); 48