summaryrefslogtreecommitdiff
path: root/test/parallel/test-worker-cleanup-handles.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/parallel/test-worker-cleanup-handles.js')
-rw-r--r--test/parallel/test-worker-cleanup-handles.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/parallel/test-worker-cleanup-handles.js b/test/parallel/test-worker-cleanup-handles.js
new file mode 100644
index 0000000000..ba4f6aa51a
--- /dev/null
+++ b/test/parallel/test-worker-cleanup-handles.js
@@ -0,0 +1,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();
+}