'use strict'; const { test } = require('tap'); const startCLI = require('./start-cli'); test('stepping through breakpoints', (t) => { const cli = startCLI(['examples/break.js']); function onFatal(error) { cli.quit(); throw error; } return cli.waitForInitialBreak() .then(() => cli.waitForPrompt()) .then(() => cli.command('watch("x")')) .then(() => cli.command('watch("\\"Hello\\"")')) .then(() => cli.command('watch("42")')) .then(() => cli.command('watch("NaN")')) .then(() => cli.command('watch("true")')) .then(() => cli.command('watch("[1, 2]")')) .then(() => cli.command('watch("process.env")')) .then(() => cli.command('watchers')) .then(() => { t.match(cli.output, 'x is not defined'); }) .then(() => cli.command('unwatch("42")')) .then(() => cli.stepCommand('n')) .then(() => { t.match(cli.output, '0: x = 10'); t.match(cli.output, '1: "Hello" = \'Hello\''); t.match(cli.output, '2: NaN = NaN'); t.match(cli.output, '3: true = true'); t.match(cli.output, '4: [1, 2] = [ 1, 2 ]'); t.match( cli.output, /5: process\.env =\n\s+\{[\s\S]+,\n\s+\.\.\. \}/, 'shows "..." for process.env'); }) .then(() => cli.quit()) .then(null, onFatal); });