import { describe, expect, it } from "bun:test";import { chmodSync, mkdtempSync, writeFileSync } from "node:fs";import { tmpdir } from "node:os";import { join } from "node:path";import type { Config } from "../../../config/env";import { asRecipeId } from "../../../types/brand";import type { Recipe } from "../../models/types";import { buildBackendCommand } from "./backend-builder"; const baseRecipe: Recipe = { id: asRecipeId("r1"), name: "custom", model_path: "/models/test", backend: "sglang", env_vars: null, tensor_parallel_size: 1, pipeline_parallel_size: 1, max_model_len: 32768, gpu_memory_utilization: 0.9, kv_cache_dtype: "auto", max_num_seqs: 256, trust_remote_code: true, tool_call_parser: null, reasoning_parser: null, enable_auto_tool_choice: false, quantization: null, dtype: null, host: "0.0.0.0", port: 8000, served_model_name: null, python_path: null, extra_args: {}, max_thinking_tokens: null, thinking_mode: "conservative",}; const fakeExecutable = (name: string): string => { const path = join(mkdtempSync(join(tmpdir(), "backend-builder-")), name); writeFileSync(path, "#!/bin/sh\nexit 0\n"); chmodSync(path, 0o755); return path;}; describe("backend builder command overrides", () => { it("uses launch_command as the full launch argv", () => { const command = buildBackendCommand( { ...baseRecipe, extra_args: { launch_command: "python -m sglang.launch_server --model-path /models/custom --grammar-backend xgrammar", }, }, {} as Config ); expect(command).toEqual([ "python", "-m", "sglang.launch_server", "--model-path", "/models/custom", "--grammar-backend", "xgrammar", ]); }); it("normalizes multiline command continuations from the editor", () => { const command = buildBackendCommand( { ...baseRecipe, extra_args: { launch_command: "python -m sglang.launch_server \\\n+ --model-path '/models/custom model' \\\n+ --enable-metrics", }, }, {} as Config ); expect(command).toEqual([ "python", "-m", "sglang.launch_server", "--model-path", "/models/custom model", "--enable-metrics", ]); }); it("rejects shell interpreters for exllamav3 commands", () => { expect(() => buildBackendCommand( { ...baseRecipe, backend: "exllamav3", extra_args: { exllama_command: "sh -c echo-pwned" }, }, {} as Config ) ).toThrow("Invalid exllama_command"); }); it("accepts resolved ExLLaMA executables", () => { const executable = fakeExecutable("exllama-server"); const command = buildBackendCommand( { ...baseRecipe, backend: "exllamav3", extra_args: { exllama_command: `"${executable}"` }, }, {} as Config ); expect(command[0]).toBe(executable); expect(command).toContain("--model"); expect(command).toContain("/models/test"); }); it("rejects non llama-server llama.cpp overrides", () => { expect(() => buildBackendCommand( { ...baseRecipe, backend: "llamacpp", extra_args: { llama_bin: "/bin/sh" }, }, {} as Config ) ).toThrow("Invalid llama_bin"); }); it("accepts resolved llama-server overrides", () => { const executable = fakeExecutable("llama-server"); const command = buildBackendCommand( { ...baseRecipe, backend: "llamacpp", extra_args: { llama_bin: executable }, }, {} as Config ); expect(command[0]).toBe(executable); expect(command).toContain("--model"); expect(command).toContain("/models/test"); });});
import { describe, expect, it } from "bun:test";
import { chmodSync, mkdtempSync, writeFileSync } from "node:fs";
import { tmpdir } from "node:os";
import { join } from "node:path";
import type { Config } from "../../../config/env";
import { asRecipeId } from "../../../types/brand";
import type { Recipe } from "../../models/types";
import { buildBackendCommand } from "./backend-builder";
const baseRecipe: Recipe = {
id: asRecipeId("r1"),
name: "custom",
model_path: "/models/test",
backend: "sglang",
env_vars: null,
tensor_parallel_size: 1,
pipeline_parallel_size: 1,
max_model_len: 32768,
gpu_memory_utilization: 0.9,
kv_cache_dtype: "auto",
max_num_seqs: 256,
trust_remote_code: true,
tool_call_parser: null,
reasoning_parser: null,
enable_auto_tool_choice: false,
quantization: null,
dtype: null,
host: "0.0.0.0",
port: 8000,
served_model_name: null,
python_path: null,
extra_args: {},
max_thinking_tokens: null,
thinking_mode: "conservative",
};
const fakeExecutable = (name: string): string => {
const path = join(mkdtempSync(join(tmpdir(), "backend-builder-")), name);
writeFileSync(path, "#!/bin/sh\nexit 0\n");
chmodSync(path, 0o755);
return path;
};
describe("backend builder command overrides", () => {
it("uses launch_command as the full launch argv", () => {
const command = buildBackendCommand(
{
...baseRecipe,
extra_args: {
launch_command:
"python -m sglang.launch_server --model-path /models/custom --grammar-backend xgrammar",
},
},
{} as Config
);
expect(command).toEqual([
"python",
"-m",
"sglang.launch_server",
"--model-path",
"/models/custom",
"--grammar-backend",
"xgrammar",
]);
});
it("normalizes multiline command continuations from the editor", () => {
const command = buildBackendCommand(
{
...baseRecipe,
extra_args: {
launch_command:
"python -m sglang.launch_server \\\n+ --model-path '/models/custom model' \\\n+ --enable-metrics",
},
},
{} as Config
);
expect(command).toEqual([
"python",
"-m",
"sglang.launch_server",
"--model-path",
"/models/custom model",
"--enable-metrics",
]);
});
it("rejects shell interpreters for exllamav3 commands", () => {
expect(() =>
buildBackendCommand(
{
...baseRecipe,
backend: "exllamav3",
extra_args: { exllama_command: "sh -c echo-pwned" },
},
{} as Config
)
).toThrow("Invalid exllama_command");
});
it("accepts resolved ExLLaMA executables", () => {
const executable = fakeExecutable("exllama-server");
const command = buildBackendCommand(
{
...baseRecipe,
backend: "exllamav3",
extra_args: { exllama_command: `"${executable}"` },
},
{} as Config
);
expect(command[0]).toBe(executable);
expect(command).toContain("--model");
expect(command).toContain("/models/test");
});
it("rejects non llama-server llama.cpp overrides", () => {
expect(() =>
buildBackendCommand(
{
...baseRecipe,
backend: "llamacpp",
extra_args: { llama_bin: "/bin/sh" },
},
{} as Config
)
).toThrow("Invalid llama_bin");
});
it("accepts resolved llama-server overrides", () => {
const executable = fakeExecutable("llama-server");
const command = buildBackendCommand(
{
...baseRecipe,
backend: "llamacpp",
extra_args: { llama_bin: executable },
},
{} as Config
);
expect(command[0]).toBe(executable);
expect(command).toContain("--model");
expect(command).toContain("/models/test");
});
});