Make journal write failure test deterministic
Build and Deploy Gateway / build-and-push (push) Successful in 16s
Build and Deploy Gateway / deploy (push) Successful in 1s

This commit is contained in:
2026-08-19 18:20:25 +03:00
parent daec12e013
commit b843970ec2
+6 -3
View File
@@ -107,10 +107,13 @@ test('corrupt journal is isolated and recovery becomes a safe event', (t) => {
test('journal exposes a latched write failure until a later append succeeds', (t) => { test('journal exposes a latched write failure until a later append succeeds', (t) => {
const filePath = fixture(t); const filePath = fixture(t);
const directory = path.dirname(filePath);
const service = createActivityJournalService({ filePath }); const service = createActivityJournalService({ filePath });
service.append(event('before-error')); service.append(event('before-error'));
fs.chmodSync(directory, 0o555); const renameSync = fs.renameSync;
fs.renameSync = (source, target) => {
if (target === filePath) throw new Error('simulated journal write failure');
return renameSync(source, target);
};
try { try {
assert.throws(() => service.append(event('lost'))); assert.throws(() => service.append(event('lost')));
const failed = service.page(); const failed = service.page();
@@ -119,7 +122,7 @@ test('journal exposes a latched write failure until a later append succeeds', (t
assert.equal(failed.events.length, 1); assert.equal(failed.events.length, 1);
assert.equal(failed.events[0].dedupeKey, null); assert.equal(failed.events[0].dedupeKey, null);
} finally { } finally {
fs.chmodSync(directory, 0o755); fs.renameSync = renameSync;
} }
service.append(event('recovered')); service.append(event('recovered'));
assert.equal(service.page().storage.status, 'ready'); assert.equal(service.page().storage.status, 'ready');