]> Piment Noir Git Repositories - poolifier.git/commitdiff
fix(test): use fake timers for sleep() test to avoid flakiness
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 20 Feb 2026 20:37:18 +0000 (21:37 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 20 Feb 2026 20:37:18 +0000 (21:37 +0100)
tests/utils.test.mjs

index e3deab3c32586cf442d6d6872e9e5397118cce63..13a85d7b66824bd2f3524b7482fbd2ab7da42822 100644 (file)
@@ -1,6 +1,7 @@
 import { expect } from '@std/expect'
 import { randomInt } from 'node:crypto'
 import os from 'node:os'
+import { useFakeTimers } from 'sinon'
 
 import { KillBehaviors } from '../lib/index.cjs'
 import {
@@ -44,11 +45,21 @@ describe('Utils test suite', () => {
   })
 
   it('Verify sleep() behavior', async () => {
-    const start = performance.now()
-    const sleepMs = 1000
-    await sleep(sleepMs)
-    const elapsed = performance.now() - start
-    expect(elapsed).toBeGreaterThanOrEqual(sleepMs - 1)
+    const clock = useFakeTimers()
+    try {
+      const delay = 1000
+      let resolved = false
+      const sleepPromise = sleep(delay).then(() => {
+        resolved = true
+        return true
+      })
+      expect(resolved).toBe(false)
+      await clock.tickAsync(delay)
+      await sleepPromise
+      expect(resolved).toBe(true)
+    } finally {
+      clock.restore()
+    }
   })
 
   it('Verify exponentialDelay() behavior', () => {