Initial Commit
This commit is contained in:
73
packages/media/audio/audio-cli/tests/integration.test.ts
Normal file
73
packages/media/audio/audio-cli/tests/integration.test.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
import { mkdtemp, rm, stat } from "node:fs/promises";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import {
|
||||
afterEach,
|
||||
beforeEach,
|
||||
describe,
|
||||
expect,
|
||||
it,
|
||||
} from "@suaveplan/testing/runner";
|
||||
import { AudioCLI } from "../src/cli/cli.js";
|
||||
import { writeWav } from "./helpers.js";
|
||||
|
||||
describe("audio-cli integration", () => {
|
||||
let dir: string;
|
||||
let cli: AudioCLI;
|
||||
beforeEach(async () => {
|
||||
dir = await mkdtemp(join(tmpdir(), "audio-cli-int-"));
|
||||
cli = new AudioCLI();
|
||||
});
|
||||
afterEach(async () => {
|
||||
await rm(dir, { recursive: true, force: true });
|
||||
});
|
||||
|
||||
it("process → analyze → convert round-trip via dispatch", {
|
||||
timeout: 30_000,
|
||||
}, async () => {
|
||||
const a = join(dir, "in.wav");
|
||||
await writeWav(a, 256);
|
||||
|
||||
// process
|
||||
expect(
|
||||
await cli.dispatch([
|
||||
"process",
|
||||
a,
|
||||
join(dir, "out.wav"),
|
||||
"--pipeline",
|
||||
"normalize",
|
||||
])
|
||||
).toBe(0);
|
||||
expect((await stat(join(dir, "out.wav"))).size).toBeGreaterThan(0);
|
||||
|
||||
// analyze with --output
|
||||
const report = join(dir, "report.json");
|
||||
expect(await cli.dispatch(["analyze", a, "--output", report])).toBe(0);
|
||||
expect((await stat(report)).size).toBeGreaterThan(0);
|
||||
|
||||
// convert
|
||||
expect(await cli.dispatch(["convert", a, join(dir, "conv.wav")])).toBe(
|
||||
0
|
||||
);
|
||||
});
|
||||
|
||||
it("batch dispatch over a comma list returns a JSON report", {
|
||||
timeout: 30_000,
|
||||
}, async () => {
|
||||
const a = join(dir, "a.wav");
|
||||
const b = join(dir, "b.wav");
|
||||
await writeWav(a, 32);
|
||||
await writeWav(b, 32);
|
||||
expect(
|
||||
await cli.dispatch([
|
||||
"batch",
|
||||
"--input",
|
||||
`${a},${b}`,
|
||||
"--output",
|
||||
dir,
|
||||
"--pipeline",
|
||||
"",
|
||||
])
|
||||
).toBe(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user