| 'use strict'; |
| const common = require('../common'); |
| const assert = require('assert'); |
| const repl = require('repl'); |
| |
| { |
| let evalCalledWithExpectedArgs = false; |
| |
| const options = { |
| eval: common.mustCall((cmd, context) => { |
| // Assertions here will not cause the test to exit with an error code |
| // so set a boolean that is checked later instead. |
| evalCalledWithExpectedArgs = (cmd === 'function f() {}\n' && |
| context.foo === 'bar'); |
| }) |
| }; |
| |
| const r = repl.start(options); |
| r.context = { foo: 'bar' }; |
| |
| try { |
| // Default preprocessor transforms |
| // function f() {} to |
| // var f = function f() {} |
| // Test to ensure that original input is preserved. |
| // Reference: https://github.com/nodejs/node/issues/9743 |
| r.write('function f() {}\n'); |
| } finally { |
| r.write('.exit\n'); |
| } |
| |
| assert(evalCalledWithExpectedArgs); |
| } |