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

common.skipIfInspectorDisabled();

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

// Debugger agent direct access.
{
  const cli = startCLI([fixtures.path('debugger/three-lines.js')]);
  const scriptPattern = /^\* (\d+): \S+debugger(?:\/|\\)three-lines\.js/m;

  function onFatal(error) {
    cli.quit();
    throw error;
  }

  return cli.waitForInitialBreak()
    .then(() => cli.waitForPrompt())
    .then(() => cli.command('scripts'))
    .then(() => {
      const [, scriptId] = cli.output.match(scriptPattern);
      return cli.command(
        `Debugger.getScriptSource({ scriptId: '${scriptId}' })`
      );
    })
    .then(() => {
      assert.match(
        cli.output,
        /scriptSource:[ \n]*'(?:\(function \(|let x = 1)/);
      assert.match(
        cli.output,
        /let x = 1;/);
    })
    .then(() => cli.quit())
    .then(null, onFatal);
}