deno.land / std@0.166.0 / node / _tools / test / parallel / test-stream-write-destroy.js

test-stream-write-destroy.js
نووسراو ببینە
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// deno-fmt-ignore-file// deno-lint-ignore-file
// Copyright Joyent and Node contributors. All rights reserved. MIT license.// Taken from Node 18.12.0// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually
'use strict';require('../common');const assert = require('assert');const { Writable } = require('stream');
// Test interaction between calling .destroy() on a writable and pending// writes.
for (const withPendingData of [ false, true ]) { for (const useEnd of [ false, true ]) { const callbacks = [];
const w = new Writable({ write(data, enc, cb) { callbacks.push(cb); }, // Effectively disable the HWM to observe 'drain' events more easily. highWaterMark: 1 });
let chunksWritten = 0; let drains = 0; w.on('drain', () => drains++);
function onWrite(err) { if (err) { assert.strictEqual(w.destroyed, true); assert.strictEqual(err.code, 'ERR_STREAM_DESTROYED'); } else { chunksWritten++; } }
w.write('abc', onWrite); assert.strictEqual(chunksWritten, 0); assert.strictEqual(drains, 0); callbacks.shift()(); assert.strictEqual(chunksWritten, 1); assert.strictEqual(drains, 1);
if (withPendingData) { // Test 2 cases: There either is or is not data still in the write queue. // (The second write will never actually get executed either way.) w.write('def', onWrite); } if (useEnd) { // Again, test 2 cases: Either we indicate that we want to end the // writable or not. w.end('ghi', onWrite); } else { w.write('ghi', onWrite); }
assert.strictEqual(chunksWritten, 1); w.destroy(); assert.strictEqual(chunksWritten, 1); callbacks.shift()(); assert.strictEqual(chunksWritten, useEnd && !withPendingData ? 1 : 2); assert.strictEqual(callbacks.length, 0); assert.strictEqual(drains, 1); }}
std

Version Info

Tagged at
a year ago