summaryrefslogtreecommitdiff
path: root/test/parallel/test-worker-cleanup-handles.js
blob: ba4f6aa51a9d41c2bf829019769f2e14f40a5955 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Flags: --experimental-worker
'use strict';
const common = require('../common');
const assert = require('assert');
const { Worker, isMainThread, parentPort } = require('worker');
const { Server } = require('net');
const fs = require('fs');

if (isMainThread) {
  const w = new Worker(__filename);
  let fd = null;
  w.on('message', common.mustCall((fd_) => {
    assert.strictEqual(typeof fd_, 'number');
    fd = fd_;
  }));
  w.on('exit', common.mustCall((code) => {
    if (fd === -1) {
      // This happens when server sockets don’t have file descriptors,
      // i.e. on Windows.
      return;
    }
    common.expectsError(() => fs.fstatSync(fd),
                        { code: 'EBADF' });
  }));
} else {
  const server = new Server();
  server.listen(0);
  parentPort.postMessage(server._handle.fd);
  server.unref();
}