11cb0ef41Sopenharmony_ci'use strict'; 21cb0ef41Sopenharmony_ciconst common = require('../common'); 31cb0ef41Sopenharmony_ciconst assert = require('assert'); 41cb0ef41Sopenharmony_ciconst repl = require('repl'); 51cb0ef41Sopenharmony_ci 61cb0ef41Sopenharmony_ci{ 71cb0ef41Sopenharmony_ci let evalCalledWithExpectedArgs = false; 81cb0ef41Sopenharmony_ci 91cb0ef41Sopenharmony_ci const options = { 101cb0ef41Sopenharmony_ci eval: common.mustCall((cmd, context) => { 111cb0ef41Sopenharmony_ci // Assertions here will not cause the test to exit with an error code 121cb0ef41Sopenharmony_ci // so set a boolean that is checked later instead. 131cb0ef41Sopenharmony_ci evalCalledWithExpectedArgs = (cmd === 'function f() {}\n' && 141cb0ef41Sopenharmony_ci context.foo === 'bar'); 151cb0ef41Sopenharmony_ci }) 161cb0ef41Sopenharmony_ci }; 171cb0ef41Sopenharmony_ci 181cb0ef41Sopenharmony_ci const r = repl.start(options); 191cb0ef41Sopenharmony_ci r.context = { foo: 'bar' }; 201cb0ef41Sopenharmony_ci 211cb0ef41Sopenharmony_ci try { 221cb0ef41Sopenharmony_ci // Default preprocessor transforms 231cb0ef41Sopenharmony_ci // function f() {} to 241cb0ef41Sopenharmony_ci // var f = function f() {} 251cb0ef41Sopenharmony_ci // Test to ensure that original input is preserved. 261cb0ef41Sopenharmony_ci // Reference: https://github.com/nodejs/node/issues/9743 271cb0ef41Sopenharmony_ci r.write('function f() {}\n'); 281cb0ef41Sopenharmony_ci } finally { 291cb0ef41Sopenharmony_ci r.write('.exit\n'); 301cb0ef41Sopenharmony_ci } 311cb0ef41Sopenharmony_ci 321cb0ef41Sopenharmony_ci assert(evalCalledWithExpectedArgs); 331cb0ef41Sopenharmony_ci} 34