Walk rows lows: TS @directory pins an I/O failure; C# pins commit-remove over a directory
Some checks failed
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Libby 2026-11-11 17:41:20 +00:00
commit 01bf40e942
2 changed files with 4 additions and 1 deletions

View file

@ -2635,7 +2635,7 @@ test("SingleFileMessagePackBackingStore replaces a file exactly when it reads",
assert.ok(!keys.includes(envelopes[0]!.key), `${vector} ${operation}`);
}
} else if (isDirectory) {
await assert.rejects(run, `${vector} ${operation}`);
await assert.rejects(run, (error) => !(error instanceof StoreUnreadableError), `${vector} ${operation}: an I/O failure, not a typed refusal`);
assert.ok((await lstat(file)).isDirectory(), `${vector} ${operation} replaced the directory`);
assert.deepEqual(await readdir(file), [], `${vector} ${operation} wrote into the directory`);
} else {

View file

@ -314,6 +314,9 @@ namespace GameCult.Caching.Tests
Assert.That(() => cache.Commit(batch => batch.Upsert(typeof(IdDeck), new IdDeck { Name = "e" }, new CultRecordKey("e"))),
Throws.TypeOf<IOException>().With.Message.Contains("directory"));
Assert.That(() => cache.Commit(batch => batch.Remove(new CultRecordKey("e"))),
Throws.TypeOf<IOException>().With.Message.Contains("directory"));
Assert.That(Directory.GetFileSystemEntries(path), Is.Empty);
Assert.That(Directory.GetFileSystemEntries(later), Is.Empty);
}