fix(cli): avoid Python whisper CLI collision (#2414)

This commit is contained in:
Miguel Ángel
2026-07-16 12:03:21 -04:00
committed by GitHub
parent ed1f38124b
commit 9b17a5ad7e
2 changed files with 28 additions and 4 deletions
@@ -0,0 +1,25 @@
import { describe, expect, it, vi } from "vitest";
vi.mock("node:child_process", async (importOriginal) => {
const actual = await importOriginal<typeof import("node:child_process")>();
return {
...actual,
execFileSync: vi.fn((_command: string, args: string[]) => {
if (args[0] === "whisper") return "/fake/python-whisper\n";
throw new Error(`${args[0]} not found`);
}),
};
});
vi.mock("node:fs", async (importOriginal) => {
const actual = await importOriginal<typeof import("node:fs")>();
return { ...actual, existsSync: vi.fn(() => false) };
});
describe("findWhisper", () => {
it("does not treat the OpenAI Python whisper command as whisper.cpp", async () => {
const { findWhisper } = await import("./manager.js");
expect(findWhisper()).toBeUndefined();
});
});
+3 -4
View File
@@ -67,10 +67,9 @@ function findFromEnv(): WhisperResult | undefined {
}
function findFromSystem(): WhisperResult | undefined {
for (const name of ["whisper-cli", "whisper"]) {
const path = whichBinary(name);
if (path) return { executablePath: path, source: "system" };
}
// `whisper` is the OpenAI Python CLI; only whisper.cpp's binary accepts our flags.
const path = whichBinary("whisper-cli");
if (path) return { executablePath: path, source: "system" };
// Check brew paths directly on macOS
if (platform() === "darwin") {