A test checks that the live-photo writer fsyncs the image's and the video's temp files before renaming either into place, and fsyncs the directory after both renames, as the writeAtomic test does for one file. Model: opus-5-5
This commit is contained in:
@@ -1909,6 +1909,24 @@ describe("downloadFile live photos", () => {
|
||||
]);
|
||||
});
|
||||
|
||||
it("fsyncs each part's temp file before the renames and the directory after", async () => {
|
||||
const t = setup(livePhotoZip(), livePhoto);
|
||||
|
||||
await t.run();
|
||||
|
||||
// The same durability contract as `writeAtomic`, for two files: both
|
||||
// temp files are on disk before either is renamed into place, and the
|
||||
// directory is fsynced once both renames are done.
|
||||
const [imageTmp, videoTmp] = renameHook.calls.map((c) => c.from);
|
||||
expect(durabilityHook.events).toEqual([
|
||||
`sync:w:${imageTmp}`,
|
||||
`sync:w:${videoTmp}`,
|
||||
`rename:${join(t.dir, "f.heic")}`,
|
||||
`rename:${join(t.dir, "f.mov")}`,
|
||||
`sync:r:${t.dir}`,
|
||||
]);
|
||||
});
|
||||
|
||||
it("stores neither part when the video cannot be renamed into place", async () => {
|
||||
const t = setup(livePhotoZip(), livePhoto);
|
||||
renameHook.failWith = new Error("simulated rename failure");
|
||||
|
||||
Reference in New Issue
Block a user