






















@@ -50,6 +50,18 @@ describe("ensureOggOpus", () => {
5050runFfprobeMock.mockReset();
5151runFfmpegMock.mockReset();
5252});
53+54+function expectStagedFfmpegOutput(ffmpegOutputPath: string | undefined, finalPath: string) {
55+expect(ffmpegOutputPath).toEqual(expect.any(String));
56+if (typeof ffmpegOutputPath !== "string") {
57+throw new Error("missing ffmpeg output path");
58+}
59+expect(ffmpegOutputPath).not.toBe(finalPath);
60+const stagedBase = path.basename(ffmpegOutputPath);
61+expect(stagedBase.startsWith(".fs-safe-output-")).toBe(true);
62+expect(stagedBase.endsWith(`-${path.basename(finalPath)}.part`)).toBe(true);
63+}
64+5365it("rejects URL/protocol input paths", async () => {
5466await expect(ensureOggOpus("https://example.com/audio.ogg")).rejects.toThrow(
5567/local file path/i,
@@ -90,8 +102,7 @@ describe("ensureOggOpus", () => {
90102expect.arrayContaining(["-t", "1200", "-ar", "48000", "/tmp/input.ogg"]),
91103);
92104const ffmpegOutputPath = (runFfmpegMock.mock.calls[0]?.[0] as string[] | undefined)?.at(-1);
93-expect(ffmpegOutputPath).not.toBe(result.path);
94-expect(path.basename(ffmpegOutputPath ?? "")).toBe(path.basename(result.path));
105+expectStagedFfmpegOutput(ffmpegOutputPath, result.path);
95106await expect(fs.readFile(result.path, "utf8")).resolves.toBe("ogg");
96107});
97108@@ -113,8 +124,7 @@ describe("ensureOggOpus", () => {
113124expect.arrayContaining(["-vn", "-sn", "-dn", "/tmp/input.mp3"]),
114125);
115126const ffmpegOutputPath = (runFfmpegMock.mock.calls[0]?.[0] as string[] | undefined)?.at(-1);
116-expect(ffmpegOutputPath).not.toBe(result.path);
117-expect(path.basename(ffmpegOutputPath ?? "")).toBe(path.basename(result.path));
127+expectStagedFfmpegOutput(ffmpegOutputPath, result.path);
118128await expect(fs.readFile(result.path, "utf8")).resolves.toBe("ogg");
119129});
120130});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。