Skip to content

Commit 64f872a

Browse files
committed
test_runner: refactoring functions
Signed-off-by: Erick Wendel <[email protected]>
1 parent 77caf13 commit 64f872a

File tree

2 files changed

+162
-141
lines changed

2 files changed

+162
-141
lines changed

lib/internal/test_runner/mock/mock_timers.js

Lines changed: 159 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -241,26 +241,7 @@ class MockTimers {
241241
toFake: {
242242
__proto__: null,
243243
setTimeout: () => {
244-
this.#realSetTimeout = ObjectGetOwnPropertyDescriptor(
245-
globalThis,
246-
'setTimeout',
247-
);
248-
this.#realClearTimeout = ObjectGetOwnPropertyDescriptor(
249-
globalThis,
250-
'clearTimeout',
251-
);
252-
this.#realTimersSetTimeout = ObjectGetOwnPropertyDescriptor(
253-
nodeTimers,
254-
'setTimeout',
255-
);
256-
this.#realTimersClearTimeout = ObjectGetOwnPropertyDescriptor(
257-
nodeTimers,
258-
'clearTimeout',
259-
);
260-
this.#realPromisifiedSetTimeout = ObjectGetOwnPropertyDescriptor(
261-
nodeTimersPromises,
262-
'setTimeout',
263-
);
244+
this.#storeOriginalSetTimeout();
264245

265246
globalThis.setTimeout = this.#setTimeout;
266247
globalThis.clearTimeout = this.#clearTimeout;
@@ -274,26 +255,7 @@ class MockTimers {
274255
);
275256
},
276257
setInterval: () => {
277-
this.#realSetInterval = ObjectGetOwnPropertyDescriptor(
278-
globalThis,
279-
'setInterval',
280-
);
281-
this.#realClearInterval = ObjectGetOwnPropertyDescriptor(
282-
globalThis,
283-
'clearInterval',
284-
);
285-
this.#realTimersSetInterval = ObjectGetOwnPropertyDescriptor(
286-
nodeTimers,
287-
'setInterval',
288-
);
289-
this.#realTimersClearInterval = ObjectGetOwnPropertyDescriptor(
290-
nodeTimers,
291-
'clearInterval',
292-
);
293-
this.#realPromisifiedSetInterval = ObjectGetOwnPropertyDescriptor(
294-
nodeTimersPromises,
295-
'setInterval',
296-
);
258+
this.#storeOriginalSetInterval();
297259

298260
globalThis.setInterval = this.#setInterval;
299261
globalThis.clearInterval = this.#clearInterval;
@@ -307,26 +269,7 @@ class MockTimers {
307269
);
308270
},
309271
setImmediate: () => {
310-
this.#realSetImmediate = ObjectGetOwnPropertyDescriptor(
311-
globalThis,
312-
'setImmediate',
313-
);
314-
this.#realClearImmediate = ObjectGetOwnPropertyDescriptor(
315-
globalThis,
316-
'clearImmediate',
317-
);
318-
this.#realTimersSetImmediate = ObjectGetOwnPropertyDescriptor(
319-
nodeTimers,
320-
'setImmediate',
321-
);
322-
this.#realTimersClearImmediate = ObjectGetOwnPropertyDescriptor(
323-
nodeTimers,
324-
'clearImmediate',
325-
);
326-
this.#realPromisifiedSetImmediate = ObjectGetOwnPropertyDescriptor(
327-
nodeTimersPromises,
328-
'setImmediate',
329-
);
272+
this.#storeOriginalSetImmediate();
330273

331274
globalThis.setImmediate = this.#setImmediate;
332275
globalThis.clearImmediate = this.#clearImmediate;
@@ -343,85 +286,13 @@ class MockTimers {
343286
toReal: {
344287
__proto__: null,
345288
setTimeout: () => {
346-
ObjectDefineProperty(
347-
globalThis,
348-
'setTimeout',
349-
this.#realSetTimeout,
350-
);
351-
ObjectDefineProperty(
352-
globalThis,
353-
'clearTimeout',
354-
this.#realClearTimeout,
355-
);
356-
ObjectDefineProperty(
357-
nodeTimers,
358-
'setTimeout',
359-
this.#realSetTimeout,
360-
);
361-
ObjectDefineProperty(
362-
nodeTimers,
363-
'clearTimeout',
364-
this.#realTimersClearTimeout,
365-
);
366-
ObjectDefineProperty(
367-
nodeTimersPromises,
368-
'setTimeout',
369-
this.#realPromisifiedSetTimeout,
370-
);
289+
this.#restoreOriginalSetTimeout();
371290
},
372291
setInterval: () => {
373-
ObjectDefineProperty(
374-
globalThis,
375-
'setInterval',
376-
this.#realSetInterval,
377-
);
378-
ObjectDefineProperty(
379-
globalThis,
380-
'clearInterval',
381-
this.#realClearInterval,
382-
);
383-
ObjectDefineProperty(
384-
nodeTimers,
385-
'setInterval',
386-
this.#realTimersSetInterval,
387-
);
388-
ObjectDefineProperty(
389-
nodeTimers,
390-
'clearInterval',
391-
this.#realTimersClearInterval,
392-
);
393-
ObjectDefineProperty(
394-
nodeTimersPromises,
395-
'setInterval',
396-
this.#realPromisifiedSetInterval,
397-
);
292+
this.#restoreOriginalSetInterval();
398293
},
399294
setImmediate: () => {
400-
ObjectDefineProperty(
401-
globalThis,
402-
'setImmediate',
403-
this.#realSetImmediate,
404-
);
405-
ObjectDefineProperty(
406-
globalThis,
407-
'clearImmediate',
408-
this.#realClearImmediate,
409-
);
410-
ObjectDefineProperty(
411-
nodeTimers,
412-
'setImmediate',
413-
this.#realTimersSetImmediate,
414-
);
415-
ObjectDefineProperty(
416-
nodeTimers,
417-
'clearImmediate',
418-
this.#realTimersClearImmediate,
419-
);
420-
ObjectDefineProperty(
421-
nodeTimersPromises,
422-
'setImmediate',
423-
this.#realPromisifiedSetImmediate,
424-
);
295+
this.#restoreSetImmediate();
425296
},
426297
},
427298
};
@@ -431,6 +302,159 @@ class MockTimers {
431302
this.#isEnabled = activate;
432303
}
433304

305+
#restoreSetImmediate() {
306+
ObjectDefineProperty(
307+
globalThis,
308+
'setImmediate',
309+
this.#realSetImmediate,
310+
);
311+
ObjectDefineProperty(
312+
globalThis,
313+
'clearImmediate',
314+
this.#realClearImmediate,
315+
);
316+
ObjectDefineProperty(
317+
nodeTimers,
318+
'setImmediate',
319+
this.#realTimersSetImmediate,
320+
);
321+
ObjectDefineProperty(
322+
nodeTimers,
323+
'clearImmediate',
324+
this.#realTimersClearImmediate,
325+
);
326+
ObjectDefineProperty(
327+
nodeTimersPromises,
328+
'setImmediate',
329+
this.#realPromisifiedSetImmediate,
330+
);
331+
}
332+
333+
#restoreOriginalSetInterval() {
334+
ObjectDefineProperty(
335+
globalThis,
336+
'setInterval',
337+
this.#realSetInterval,
338+
);
339+
ObjectDefineProperty(
340+
globalThis,
341+
'clearInterval',
342+
this.#realClearInterval,
343+
);
344+
ObjectDefineProperty(
345+
nodeTimers,
346+
'setInterval',
347+
this.#realTimersSetInterval,
348+
);
349+
ObjectDefineProperty(
350+
nodeTimers,
351+
'clearInterval',
352+
this.#realTimersClearInterval,
353+
);
354+
ObjectDefineProperty(
355+
nodeTimersPromises,
356+
'setInterval',
357+
this.#realPromisifiedSetInterval,
358+
);
359+
}
360+
361+
#restoreOriginalSetTimeout() {
362+
ObjectDefineProperty(
363+
globalThis,
364+
'setTimeout',
365+
this.#realSetTimeout,
366+
);
367+
ObjectDefineProperty(
368+
globalThis,
369+
'clearTimeout',
370+
this.#realClearTimeout,
371+
);
372+
ObjectDefineProperty(
373+
nodeTimers,
374+
'setTimeout',
375+
this.#realSetTimeout,
376+
);
377+
ObjectDefineProperty(
378+
nodeTimers,
379+
'clearTimeout',
380+
this.#realTimersClearTimeout,
381+
);
382+
ObjectDefineProperty(
383+
nodeTimersPromises,
384+
'setTimeout',
385+
this.#realPromisifiedSetTimeout,
386+
);
387+
}
388+
389+
#storeOriginalSetImmediate() {
390+
this.#realSetImmediate = ObjectGetOwnPropertyDescriptor(
391+
globalThis,
392+
'setImmediate',
393+
);
394+
this.#realClearImmediate = ObjectGetOwnPropertyDescriptor(
395+
globalThis,
396+
'clearImmediate',
397+
);
398+
this.#realTimersSetImmediate = ObjectGetOwnPropertyDescriptor(
399+
nodeTimers,
400+
'setImmediate',
401+
);
402+
this.#realTimersClearImmediate = ObjectGetOwnPropertyDescriptor(
403+
nodeTimers,
404+
'clearImmediate',
405+
);
406+
this.#realPromisifiedSetImmediate = ObjectGetOwnPropertyDescriptor(
407+
nodeTimersPromises,
408+
'setImmediate',
409+
);
410+
}
411+
412+
#storeOriginalSetInterval() {
413+
this.#realSetInterval = ObjectGetOwnPropertyDescriptor(
414+
globalThis,
415+
'setInterval',
416+
);
417+
this.#realClearInterval = ObjectGetOwnPropertyDescriptor(
418+
globalThis,
419+
'clearInterval',
420+
);
421+
this.#realTimersSetInterval = ObjectGetOwnPropertyDescriptor(
422+
nodeTimers,
423+
'setInterval',
424+
);
425+
this.#realTimersClearInterval = ObjectGetOwnPropertyDescriptor(
426+
nodeTimers,
427+
'clearInterval',
428+
);
429+
this.#realPromisifiedSetInterval = ObjectGetOwnPropertyDescriptor(
430+
nodeTimersPromises,
431+
'setInterval',
432+
);
433+
}
434+
435+
#storeOriginalSetTimeout() {
436+
this.#realSetTimeout = ObjectGetOwnPropertyDescriptor(
437+
globalThis,
438+
'setTimeout',
439+
);
440+
this.#realClearTimeout = ObjectGetOwnPropertyDescriptor(
441+
globalThis,
442+
'clearTimeout',
443+
);
444+
this.#realTimersSetTimeout = ObjectGetOwnPropertyDescriptor(
445+
nodeTimers,
446+
'setTimeout',
447+
);
448+
this.#realTimersClearTimeout = ObjectGetOwnPropertyDescriptor(
449+
nodeTimers,
450+
'clearTimeout',
451+
);
452+
this.#realPromisifiedSetTimeout = ObjectGetOwnPropertyDescriptor(
453+
nodeTimersPromises,
454+
'setTimeout',
455+
);
456+
}
457+
434458
tick(time = 1) {
435459
if (!this.#isEnabled) {
436460
throw new ERR_INVALID_STATE(

test/parallel/test-runner-mock-timers.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ describe('Mock Timers Test Suite', () => {
5757
'clearInterval',
5858
'setImmediate',
5959
'clearImmediate',
60-
]
60+
];
6161

6262
const globalTimersDescriptors = timers.map((fn) => getDescriptor(global, fn));
6363
const nodeTimersDescriptors = timers.map((fn) => getDescriptor(nodeTimers, fn));
@@ -69,8 +69,8 @@ describe('Mock Timers Test Suite', () => {
6969
global: globalTimersDescriptors,
7070
nodeTimers: nodeTimersDescriptors,
7171
nodeTimersPromises: nodeTimersPromisesDescriptors,
72-
}
73-
}
72+
};
73+
};
7474
const before = getCurrentTimersDescriptors();
7575
t.mock.timers.enable();
7676
const during = getCurrentTimersDescriptors();
@@ -80,19 +80,16 @@ describe('Mock Timers Test Suite', () => {
8080
assert.deepStrictEqual(
8181
before,
8282
after,
83-
'after reseting timers, the original propertyDescriptor should be preserved',
8483
);
8584

8685
assert.notDeepStrictEqual(
8786
before,
8887
during,
89-
'after enabling timers, the original propertyDescriptor should be changed',
9088
);
9189

9290
assert.notDeepStrictEqual(
9391
during,
9492
after,
95-
'after reseting timers, the original propertyDescriptor should be changed',
9693
);
9794
});
9895

0 commit comments

Comments
 (0)