test: use node helpers for events.once and setTimeout promise (#37374)

This commit is contained in:
Jeremy Rose 2023-02-23 15:53:53 -08:00 committed by GitHub
parent 46c8b9c728
commit a3e3efe4c4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
47 changed files with 932 additions and 927 deletions

View file

@ -4,8 +4,9 @@ import { net, session, ClientRequest, BrowserWindow, ClientRequestConstructorOpt
import * as http from 'http';
import * as url from 'url';
import { Socket } from 'net';
import { emittedOnce } from './lib/events-helpers';
import { defer, delay, listen } from './lib/spec-helpers';
import { defer, listen } from './lib/spec-helpers';
import { once } from 'events';
import { setTimeout } from 'timers/promises';
// See https://github.com/nodejs/node/issues/40702.
dns.setDefaultResultOrder('ipv4first');
@ -412,9 +413,9 @@ describe('net module', () => {
const urlRequest = net.request(serverUrl);
// request close event
const closePromise = emittedOnce(urlRequest, 'close');
const closePromise = once(urlRequest, 'close');
// request finish event
const finishPromise = emittedOnce(urlRequest, 'close');
const finishPromise = once(urlRequest, 'close');
// request "response" event
const response = await getResponse(urlRequest);
response.on('error', (error: Error) => {
@ -1056,7 +1057,7 @@ describe('net module', () => {
urlRequest.on('response', () => {
expect.fail('unexpected response event');
});
const aborted = emittedOnce(urlRequest, 'abort');
const aborted = once(urlRequest, 'abort');
urlRequest.abort();
urlRequest.write('');
urlRequest.end();
@ -1086,10 +1087,10 @@ describe('net module', () => {
requestAbortEventEmitted = true;
});
await emittedOnce(urlRequest, 'close', () => {
urlRequest!.chunkedEncoding = true;
urlRequest!.write(randomString(kOneKiloByte));
});
const p = once(urlRequest, 'close');
urlRequest.chunkedEncoding = true;
urlRequest.write(randomString(kOneKiloByte));
await p;
expect(requestReceivedByServer).to.equal(true);
expect(requestAbortEventEmitted).to.equal(true);
});
@ -1119,7 +1120,7 @@ describe('net module', () => {
expect.fail('Unexpected error event');
});
urlRequest.end(randomString(kOneKiloByte));
await emittedOnce(urlRequest, 'abort');
await once(urlRequest, 'abort');
expect(requestFinishEventEmitted).to.equal(true);
expect(requestReceivedByServer).to.equal(true);
});
@ -1160,7 +1161,7 @@ describe('net module', () => {
expect.fail('Unexpected error event');
});
urlRequest.end(randomString(kOneKiloByte));
await emittedOnce(urlRequest, 'abort');
await once(urlRequest, 'abort');
expect(requestFinishEventEmitted).to.be.true('request should emit "finish" event');
expect(requestReceivedByServer).to.be.true('request should be received by the server');
expect(requestResponseEventEmitted).to.be.true('"response" event should be emitted');
@ -1192,7 +1193,7 @@ describe('net module', () => {
abortsEmitted++;
});
urlRequest.end(randomString(kOneKiloByte));
await emittedOnce(urlRequest, 'abort');
await once(urlRequest, 'abort');
expect(requestFinishEventEmitted).to.be.true('request should emit "finish" event');
expect(requestReceivedByServer).to.be.true('request should be received by server');
expect(abortsEmitted).to.equal(1, 'request should emit exactly 1 "abort" event');
@ -1214,7 +1215,7 @@ describe('net module', () => {
});
const eventHandlers = Promise.all([
bodyCheckPromise,
emittedOnce(urlRequest, 'close')
once(urlRequest, 'close')
]);
urlRequest.end();
@ -1445,7 +1446,7 @@ describe('net module', () => {
urlRequest.end();
urlRequest.on('redirect', () => { urlRequest.abort(); });
urlRequest.on('error', () => {});
await emittedOnce(urlRequest, 'abort');
await once(urlRequest, 'abort');
});
it('should not follow redirect when mode is error', async () => {
@ -1459,7 +1460,7 @@ describe('net module', () => {
redirect: 'error'
});
urlRequest.end();
await emittedOnce(urlRequest, 'error');
await once(urlRequest, 'error');
});
it('should follow redirect when handler calls callback', async () => {
@ -1559,7 +1560,7 @@ describe('net module', () => {
const nodeRequest = http.request(nodeServerUrl);
const nodeResponse = await getResponse(nodeRequest as any) as any as http.ServerResponse;
const netRequest = net.request(netServerUrl);
const responsePromise = emittedOnce(netRequest, 'response');
const responsePromise = once(netRequest, 'response');
// TODO(@MarshallOfSound) - FIXME with #22730
nodeResponse.pipe(netRequest as any);
const [netResponse] = await responsePromise;
@ -1576,7 +1577,7 @@ describe('net module', () => {
const netRequest = net.request({ url: serverUrl, method: 'POST' });
expect(netRequest.getUploadProgress()).to.have.property('active', false);
netRequest.end(Buffer.from('hello'));
const [position, total] = await emittedOnce(netRequest, 'upload-progress');
const [position, total] = await once(netRequest, 'upload-progress');
expect(netRequest.getUploadProgress()).to.deep.equal({ active: true, started: true, current: position, total });
});
@ -1586,7 +1587,7 @@ describe('net module', () => {
});
const urlRequest = net.request(serverUrl);
urlRequest.end();
const [error] = await emittedOnce(urlRequest, 'error');
const [error] = await once(urlRequest, 'error');
expect(error.message).to.equal('net::ERR_EMPTY_RESPONSE');
});
@ -1597,7 +1598,7 @@ describe('net module', () => {
});
const urlRequest = net.request(serverUrl);
urlRequest.end(randomBuffer(kOneMegaByte));
const [error] = await emittedOnce(urlRequest, 'error');
const [error] = await once(urlRequest, 'error');
expect(error.message).to.be.oneOf(['net::ERR_FAILED', 'net::ERR_CONNECTION_RESET', 'net::ERR_CONNECTION_ABORTED']);
});
@ -1609,14 +1610,14 @@ describe('net module', () => {
const urlRequest = net.request(serverUrl);
urlRequest.end();
await emittedOnce(urlRequest, 'close');
await once(urlRequest, 'close');
await new Promise((resolve, reject) => {
['finish', 'abort', 'close', 'error'].forEach(evName => {
urlRequest.on(evName as any, () => {
reject(new Error(`Unexpected ${evName} event`));
});
});
setTimeout(resolve, 50);
setTimeout(50).then(resolve);
});
});
@ -1902,7 +1903,7 @@ describe('net module', () => {
port: serverUrl.port
};
const nodeRequest = http.request(nodeOptions);
const nodeResponsePromise = emittedOnce(nodeRequest, 'response');
const nodeResponsePromise = once(nodeRequest, 'response');
// TODO(@MarshallOfSound) - FIXME with #22730
(netResponse as any).pipe(nodeRequest);
const [nodeResponse] = await nodeResponsePromise;
@ -1929,7 +1930,7 @@ describe('net module', () => {
const urlRequest = net.request(serverUrl);
urlRequest.on('response', () => {});
urlRequest.end();
await delay(2000);
await setTimeout(2000);
// TODO(nornagon): I think this ought to max out at 20, but in practice
// it seems to exceed that sometimes. This is at 25 to avoid test flakes,
// but we should investigate if there's actually something broken here and
@ -2159,7 +2160,7 @@ describe('net module', () => {
it('should reject body promise when stream fails', async () => {
const serverUrl = await respondOnce.toSingleURL((request, response) => {
response.write('first chunk');
setTimeout(() => response.destroy());
setTimeout().then(() => response.destroy());
});
const r = await net.fetch(serverUrl);
expect(r.status).to.equal(200);