lib: test_runner#mock:timers respeced timeout_max behaviour

PR-URL: https://github.com/nodejs/node/pull/55375
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
This commit is contained in:
BadKey 2024-10-15 15:43:24 +02:00 committed by GitHub
parent 6abd5457e1
commit 5e76c40b27
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 22 additions and 0 deletions

View File

@ -38,6 +38,8 @@ const {
},
} = require('internal/errors');
const { TIMEOUT_MAX } = require('internal/timers');
const PriorityQueue = require('internal/priority_queue');
const nodeTimers = require('timers');
const nodeTimersPromises = require('timers/promises');
@ -288,6 +290,10 @@ class MockTimers {
}
#createTimer(isInterval, callback, delay, ...args) {
if (delay > TIMEOUT_MAX) {
delay = 1;
}
const timerId = this.#currentTimer++;
const opts = {
__proto__: null,

View File

@ -251,6 +251,22 @@ describe('Mock Timers Test Suite', () => {
done();
}), timeout);
});
it('should change timeout to 1ms when it is >= 2 ** 31', (t) => {
t.mock.timers.enable({ apis: ['setTimeout'] });
const fn = t.mock.fn();
global.setTimeout(fn, 2 ** 31);
t.mock.timers.tick(1);
assert.strictEqual(fn.mock.callCount(), 1);
});
it('should change the delay to one if timeout < 0', (t) => {
t.mock.timers.enable({ apis: ['setTimeout'] });
const fn = t.mock.fn();
global.setTimeout(fn, -1);
t.mock.timers.tick(1);
assert.strictEqual(fn.mock.callCount(), 1);
});
});
describe('clearTimeout Suite', () => {