Files
openclaw/src/media-understanding/runner.cli-audio.test.ts
2026-05-09 07:56:29 +01:00

77 lines
2.3 KiB
TypeScript

import fs from "node:fs/promises";
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import type { OpenClawConfig } from "../config/types.js";
import { CLI_OUTPUT_MAX_BUFFER } from "./defaults.constants.js";
import { withAudioFixture } from "./runner.test-utils.js";
const runExecMock = vi.hoisted(() => vi.fn());
vi.mock("../process/exec.js", () => ({
runExec: (...args: unknown[]) => runExecMock(...args),
}));
let runCliEntry: typeof import("./runner.entries.js").runCliEntry;
describe("media-understanding CLI audio entry", () => {
beforeAll(async () => {
({ runCliEntry } = await import("./runner.entries.js"));
});
beforeEach(() => {
runExecMock.mockReset().mockResolvedValue({ stdout: "cli transcript" });
});
afterEach(() => {
vi.clearAllMocks();
});
it("applies per-request prompt and language overrides to CLI transcription templating", async () => {
let mediaPath = "";
await withAudioFixture("openclaw-cli-audio", async ({ ctx, cache }) => {
mediaPath = await fs.realpath(ctx.MediaPath);
await runCliEntry({
capability: "audio",
entry: {
type: "cli",
command: "mock-transcriber",
args: ["--prompt", "{{Prompt}}", "--language", "{{Language}}", "--file", "{{MediaPath}}"],
prompt: "entry prompt",
language: "de",
},
cfg: {
tools: {
media: {
audio: {
prompt: "configured prompt",
language: "fr",
_requestPromptOverride: "Focus on names",
_requestLanguageOverride: "en",
},
},
},
} as OpenClawConfig,
ctx,
attachmentIndex: 0,
cache,
config: {
prompt: "configured prompt",
language: "fr",
_requestPromptOverride: "Focus on names",
_requestLanguageOverride: "en",
} as never,
});
});
expect(runExecMock).toHaveBeenCalledTimes(1);
const [command, args, options] = runExecMock.mock.calls[0] ?? [];
expect(command).toBe("mock-transcriber");
expect(args).toEqual(["--prompt", "Focus on names", "--language", "en", "--file", mediaPath]);
expect(options).toEqual({
timeoutMs: 60_000,
maxBuffer: CLI_OUTPUT_MAX_BUFFER,
});
});
});