-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Description
Is there an existing issue for this?
- I've searched for any related issues and avoided creating a duplicate issue.
Description
If the domain
module is loaded whentest/create-websocket-stream.test.js
executes, it has some bizarre failures (see below). Other tests do not have this porblem.
I ran into this problem because I have NODE_OPTIONS="-r /home/matthijs/.node_defaults.js"
in my environment to load a script that tweaks some REPL behaviour, for which I have to require repl
which then requires domain
.
While an argument could be made that it's impolite to have an environment that causes domain
to be loaded into every node script, it's concerning for it to be causing test failures since that may imply actual bugs when ws
is used in an environment that has domain
loaded (e.g. whenever you're testing something from the REPL).
ws version
8.12.1
Node.js Version
14.21.3, 16.19.1, 18.14.2
System
No response
Expected result
No response
Actual result
No response
Attachments
Test output:
createWebSocketStream
✓ is exposed as a property of the `WebSocket` class
✓ returns a `Duplex` stream
✓ passes the options object to the `Duplex` constructor
The returned stream
✓ buffers writes if `readyState` is `CONNECTING`
✓ errors if a write occurs when `readyState` is `CLOSING`
✓ errors if a write occurs when `readyState` is `CLOSED`
✓ does not error if `_final()` is called while connecting
✓ makes `_final()` a noop if no socket is assigned
✓ reemits errors
✓ does not swallow errors that may occur while destroying
1) does not suppress the throwing behavior of 'error' events
2) is destroyed after 'end' and 'finish' are emitted (1/2)
3) is destroyed after 'end' and 'finish' are emitted (1/2)
✓ is destroyed after 'end' and 'finish' are emitted (2/2)
✓ handles backpressure (1/3)
✓ handles backpressure (2/3)
✓ handles backpressure (3/3)
✓ can be destroyed (1/2)
✓ can be destroyed (2/2)
✓ converts text messages to strings in readable object mode
✓ resumes the socket if `readyState` is `CLOSING`
18 passing (119ms)
3 failing
1) createWebSocketStream
The returned stream
does not suppress the throwing behavior of 'error' events:
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
2 !== 1
+ expected - actual
-2
+1
at Context.<anonymous> (test/create-websocket-stream.test.js:298:14)
at process.processImmediate (node:internal/timers:476:21)
2) createWebSocketStream
The returned stream
is destroyed after 'end' and 'finish' are emitted (1/2):
Uncaught RangeError: Invalid WebSocket frame: invalid opcode 5
at Receiver.getInfo (lib/receiver.js:287:14)
at Receiver.startLoop (lib/receiver.js:146:22)
at Receiver._write (lib/receiver.js:84:10)
at writeOrBuffer (node:internal/streams/writable:392:12)
at _write (node:internal/streams/writable:333:10)
at Writable.write (node:internal/streams/writable:337:10)
at Socket.socketOnData (lib/websocket.js:1274:35)
at Socket.emit (node:events:513:28)
at Socket.emit (node:domain:489:12)
at Readable.read (node:internal/streams/readable:539:10)
at Socket.read (node:net:749:39)
at flow (node:internal/streams/readable:1023:34)
at emitReadable_ (node:internal/streams/readable:604:3)
at process.processTicksAndRejections (node:internal/process/task_queues:81:21)
3) createWebSocketStream
The returned stream
is destroyed after 'end' and 'finish' are emitted (1/2):
Error: done() called multiple times in test <createWebSocketStream The returned stream is destroyed after 'end' and 'finish' are emitted (1/2)> of file /home/matthijs/dd/js/ws.tmp/test/create-websocket-stream.test.js
at Object.onceWrapper (node:events:627:28)
at WebSocketServer.emit (node:events:513:28)
at WebSocketServer.emit (node:domain:489:12)
at emitClose (lib/websocket-server.js:465:10)
at Server.<anonymous> (lib/websocket-server.js:197:9)
at Object.onceWrapper (node:events:627:28)
at Server.emit (node:events:513:28)
at Server.emit (node:domain:489:12)
at emitCloseNT (node:net:2135:8)
at process.processTicksAndRejections (node:internal/process/task_queues:81:21)