'use strict';
const common = require('../common');

common.skipIfInspectorDisabled();

const fixtures = require('../common/fixtures');
const startCLI = require('../common/debugger');

const assert = require('assert');

{
  const script = fixtures.path('debugger', 'three-lines.js');
  const cli = startCLI([script]);

  cli.waitForInitialBreak()
    .then(() => cli.waitForPrompt())
    .then(() => {
      assert.match(cli.output, /debug>/, 'prints a prompt');
      assert.match(
        cli.output,
        /< Debugger listening on [^\n]*9229/,
        'forwards child output');
    })
    .then(() => cli.command('["hello", "world"].join(" ")'))
    .then(() => {
      assert.match(cli.output, /hello world/, 'prints the result');
    })
    .then(() => cli.command(''))
    .then(() => {
      assert.match(
        cli.output,
        /hello world/,
        'repeats the last command on <enter>'
      );
    })
    .then(() => cli.command('version'))
    .then(() => {
      assert.ok(
        cli.output.includes(process.versions.v8),
        'version prints the v8 version'
      );
    })
    .then(() => cli.quit())
    .then((code) => {
      assert.strictEqual(code, 0);
    });
}