1'use strict';
2const common = require('../common');
3const assert = require('assert');
4const repl = require('repl');
5
6{
7  let evalCalledWithExpectedArgs = false;
8
9  const options = {
10    eval: common.mustCall((cmd, context) => {
11      // Assertions here will not cause the test to exit with an error code
12      // so set a boolean that is checked later instead.
13      evalCalledWithExpectedArgs = (cmd === 'function f() {}\n' &&
14                                    context.foo === 'bar');
15    })
16  };
17
18  const r = repl.start(options);
19  r.context = { foo: 'bar' };
20
21  try {
22    // Default preprocessor transforms
23    //  function f() {}  to
24    //  var f = function f() {}
25    // Test to ensure that original input is preserved.
26    // Reference: https://github.com/nodejs/node/issues/9743
27    r.write('function f() {}\n');
28  } finally {
29    r.write('.exit\n');
30  }
31
32  assert(evalCalledWithExpectedArgs);
33}
34