Make journal write failure test deterministic
This commit is contained in:
@@ -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) => {
|
||||
const filePath = fixture(t);
|
||||
const directory = path.dirname(filePath);
|
||||
const service = createActivityJournalService({ filePath });
|
||||
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 {
|
||||
assert.throws(() => service.append(event('lost')));
|
||||
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[0].dedupeKey, null);
|
||||
} finally {
|
||||
fs.chmodSync(directory, 0o755);
|
||||
fs.renameSync = renameSync;
|
||||
}
|
||||
service.append(event('recovered'));
|
||||
assert.equal(service.page().storage.status, 'ready');
|
||||
|
||||
Reference in New Issue
Block a user