'use strict';
const common = require('../common');
common.skipIfInspectorDisabled();
const path = require('../common/fixtures').path;
const spawn = require('child_process').spawn;
const assert = require('assert');
const fixture = path('debugger-repeat-last.js');

const args = [
  'inspect',
  '--port=0',
  fixture,
];

const proc = spawn(process.execPath, args, { stdio: 'pipe' });
proc.stdout.setEncoding('utf8');

let stdout = '';

let sentCommand = false;
let sentExit = false;

proc.stdout.on('data', (data) => {
  stdout += data;

  // Send 'n' as the first step.
  if (!sentCommand && stdout.includes('> 1 ')) {
    setImmediate(() => { proc.stdin.write('n\n'); });
    return sentCommand = true;
  }
  // Send empty (repeat last command) until we reach line 5.
  if (sentCommand && !stdout.includes('> 5')) {
    setImmediate(() => { proc.stdin.write('\n'); });
    return true;
  }
  if (!sentExit && stdout.includes('> 5')) {
    setTimeout(() => { proc.stdin.write('\n\n\n.exit\n\n\n'); }, 1);
    return sentExit = true;
  }
});

process.on('exit', (exitCode) => {
  assert.strictEqual(exitCode, 0);
  console.log(stdout);
});
