| 'use strict'; |
| |
| const common = require('../common'); |
| const fixtures = require('../common/fixtures'); |
| const assert = require('assert'); |
| const net = require('net'); |
| |
| if (!common.isMainThread) |
| common.skip('process.chdir is not available in Workers'); |
| |
| process.chdir(fixtures.fixturesDir); |
| const repl = require('repl'); |
| |
| const server = net.createServer((conn) => { |
| repl.start('', conn).on('exit', () => { |
| conn.destroy(); |
| server.close(); |
| }); |
| }); |
| |
| const host = common.localhostIPv4; |
| const port = 0; |
| const options = { host, port }; |
| |
| let answer = ''; |
| server.listen(options, function() { |
| options.port = this.address().port; |
| const conn = net.connect(options); |
| conn.setEncoding('utf8'); |
| conn.on('data', (data) => answer += data); |
| conn.write('require("baz")\nrequire("./baz")\n.exit\n'); |
| }); |
| |
| process.on('exit', function() { |
| assert.strictEqual(/Cannot find module/.test(answer), false); |
| assert.strictEqual(/Error/.test(answer), false); |
| assert.strictEqual(answer, '\'eye catcher\'\n\'perhaps I work\'\n'); |
| }); |