From b0d21002101b621e7cefebf36abb0beee7d9cbaf Mon Sep 17 00:00:00 2001 From: Nicolas Date: Thu, 24 Sep 2026 19:36:21 +0200 Subject: [PATCH] Fix flaky mtime assertion in the static party store test on Linux The "only rewrites the party that changed" test compared a file's mtimeMs against the exact millisecond passed to utimesSync. Linux reports mtimeMs as a float that can land a hair off it (...780.999 for ...781), failing CI on master. Compare against the mtime the filesystem reports right after setting it instead. Co-Authored-By: Claude Opus 5.5 --- server/test/staticPartyService.test.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/test/staticPartyService.test.ts b/server/test/staticPartyService.test.ts index 98c1ca8..c2aa116 100644 --- a/server/test/staticPartyService.test.ts +++ b/server/test/staticPartyService.test.ts @@ -195,11 +195,15 @@ describe('StaticPartyStore', () => { const otherFile = path.join(partiesDir(), `${other.id}.json`); const past = new Date(Date.now() - 60000); fs.utimesSync(otherFile, past, past); + // Compared against what the filesystem itself reports back, not + // past.getTime(): Linux returns mtimeMs as a float that can land a + // hair off the exact millisecond set (e.g. ...780.999 for ...781). + const mtimeBefore = fs.statSync(otherFile).mtimeMs; StaticPartyService.markWatched(sp, alice, 'e1'); await StaticPartyStore.writeNow(); - assert.equal(fs.statSync(otherFile).mtimeMs, past.getTime(), 'the untouched party\'s file was not rewritten'); + assert.equal(fs.statSync(otherFile).mtimeMs, mtimeBefore, 'the untouched party\'s file was not rewritten'); }); it('deleting a party removes its file, even with a save still pending', async () => {