| 'use strict'; |
| |
| const common = require('../common'); |
| |
| const assert = require('assert'); |
| const { Worker, isMainThread } = require('worker_threads'); |
| |
| if (isMainThread) { |
| const w = new Worker(__filename, { |
| stdin: true, |
| stdout: true, |
| stderr: true |
| }); |
| |
| const { stdin, stdout, stderr } = w; |
| |
| w.on('exit', common.mustCall((code) => { |
| assert.strictEqual(code, 0); |
| |
| // `postMessage` should not throw after termination |
| // (this mimics the browser behavior). |
| w.postMessage('foobar'); |
| w.ref(); |
| w.unref(); |
| |
| // Sanity check. |
| assert.strictEqual(w.threadId, -1); |
| assert.strictEqual(w.stdin, stdin); |
| assert.strictEqual(w.stdout, stdout); |
| assert.strictEqual(w.stderr, stderr); |
| })); |
| } else { |
| process.exit(0); |
| } |