mirror of
https://github.com/nodejs/node.git
synced 2025-05-02 16:22:29 +00:00

Setting writable = false in IncomingMessage.end made some errors being swallowed in some very popular OSS libraries that we must support. This commit add some of those use cases to the tests, so we avoid further regressions. We should reevaluate how to set writable = false in IncomingMessage in a way that does not break the ecosystem. See: https://github.com/nodejs/node/pull/14024 Fixes: https://github.com/nodejs/node/issues/15029 PR-URL: https://github.com/nodejs/node/pull/15404 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const http = require('http');
|
|
|
|
// Verify that after calling end() on an `OutgoingMessage` (or a type that
|
|
// inherits from `OutgoingMessage`), its `writable` property is not set to false
|
|
|
|
const server = http.createServer(common.mustCall(function(req, res) {
|
|
assert.strictEqual(res.writable, true);
|
|
assert.strictEqual(res.finished, false);
|
|
res.end();
|
|
|
|
// res.writable is set to false after it has finished sending
|
|
// Ref: https://github.com/nodejs/node/issues/15029
|
|
assert.strictEqual(res.writable, true);
|
|
assert.strictEqual(res.finished, true);
|
|
|
|
server.close();
|
|
}));
|
|
|
|
server.listen(0);
|
|
|
|
server.on('listening', common.mustCall(function() {
|
|
const clientRequest = http.request({
|
|
port: server.address().port,
|
|
method: 'GET',
|
|
path: '/'
|
|
});
|
|
|
|
assert.strictEqual(clientRequest.writable, true);
|
|
clientRequest.end();
|
|
|
|
// writable is still true when close
|
|
// THIS IS LEGACY, we cannot change it
|
|
// unless we break error detection
|
|
assert.strictEqual(clientRequest.writable, true);
|
|
}));
|