| 'use strict'; |
| |
| const common = require('../common'); |
| |
| // This test ensures that the callback of `OutgoingMessage.prototype.write()` is |
| // called also when writing empty chunks or when the message has no body. |
| |
| const assert = require('assert'); |
| const http = require('http'); |
| const stream = require('stream'); |
| |
| for (const method of ['GET, HEAD']) { |
| const expected = ['a', 'b', '', Buffer.alloc(0), 'c']; |
| const results = []; |
| |
| const writable = new stream.Writable({ |
| write(chunk, encoding, callback) { |
| callback(); |
| } |
| }); |
| |
| const res = new http.ServerResponse({ |
| method: method, |
| httpVersionMajor: 1, |
| httpVersionMinor: 1 |
| }); |
| |
| res.assignSocket(writable); |
| |
| for (const chunk of expected) { |
| res.write(chunk, () => { |
| results.push(chunk); |
| }); |
| } |
| |
| res.end(common.mustCall(() => { |
| assert.deepStrictEqual(results, expected); |
| })); |
| } |