'use strict';
// Refs: https://github.com/nodejs/node/issues/947
const common = require('../common');
const assert = require('assert');
const cp = require('child_process');

if (process.argv[2] === 'child') {
  process.on('message', common.mustCall((msg) => {
    assert.strictEqual(msg, 'go');
    // The following console.log is an integral part
    // of the test. If this regress, this call will
    // cause the process to exit with 1
    console.log('logging should not cause a crash');
    process.disconnect();
  }));
} else {
  // Passing '--inspect', '--inspect-brk' to child.spawn enables
  // the debugger. This test was added to help debug the fork-based
  // test with the same name.
  const child = cp.spawn(process.execPath, [__filename, 'child'], {
    stdio: ['pipe', 'pipe', 'pipe', 'ipc']
  });

  child.on('close', common.mustCall((exitCode, signal) => {
    assert.strictEqual(exitCode, 0);
    assert.strictEqual(signal, null);
  }));

  child.stdout.destroy();
  child.send('go');
}
