mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-19 09:28:37 +00:00
perf(test): collapse docker setup sandbox churn
This commit is contained in:
@@ -85,47 +85,53 @@ function resolveBashForCompatCheck(): string | null {
|
|||||||
}
|
}
|
||||||
|
|
||||||
describe("docker-setup.sh", () => {
|
describe("docker-setup.sh", () => {
|
||||||
it("handles unset optional env vars under strict mode", async () => {
|
it("handles env defaults, home-volume mounts, and apt build args", async () => {
|
||||||
const sandbox = await createDockerSetupSandbox();
|
const sandbox = await createDockerSetupSandbox();
|
||||||
const env = createEnv(sandbox, {
|
|
||||||
OPENCLAW_DOCKER_APT_PACKAGES: undefined,
|
|
||||||
OPENCLAW_EXTRA_MOUNTS: undefined,
|
|
||||||
OPENCLAW_HOME_VOLUME: undefined,
|
|
||||||
});
|
|
||||||
|
|
||||||
const result = spawnSync("bash", [sandbox.scriptPath], {
|
const defaultsResult = spawnSync("bash", [sandbox.scriptPath], {
|
||||||
cwd: sandbox.rootDir,
|
cwd: sandbox.rootDir,
|
||||||
env,
|
env: createEnv(sandbox, {
|
||||||
|
OPENCLAW_DOCKER_APT_PACKAGES: undefined,
|
||||||
|
OPENCLAW_EXTRA_MOUNTS: undefined,
|
||||||
|
OPENCLAW_HOME_VOLUME: undefined,
|
||||||
|
}),
|
||||||
encoding: "utf8",
|
encoding: "utf8",
|
||||||
});
|
});
|
||||||
|
expect(defaultsResult.status).toBe(0);
|
||||||
|
const defaultsEnvFile = await readFile(join(sandbox.rootDir, ".env"), "utf8");
|
||||||
|
expect(defaultsEnvFile).toContain("OPENCLAW_DOCKER_APT_PACKAGES=");
|
||||||
|
expect(defaultsEnvFile).toContain("OPENCLAW_EXTRA_MOUNTS=");
|
||||||
|
expect(defaultsEnvFile).toContain("OPENCLAW_HOME_VOLUME=");
|
||||||
|
|
||||||
expect(result.status).toBe(0);
|
const homeVolumeResult = spawnSync("bash", [sandbox.scriptPath], {
|
||||||
|
|
||||||
const envFile = await readFile(join(sandbox.rootDir, ".env"), "utf8");
|
|
||||||
expect(envFile).toContain("OPENCLAW_DOCKER_APT_PACKAGES=");
|
|
||||||
expect(envFile).toContain("OPENCLAW_EXTRA_MOUNTS=");
|
|
||||||
expect(envFile).toContain("OPENCLAW_HOME_VOLUME=");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("supports a home volume when extra mounts are empty", async () => {
|
|
||||||
const sandbox = await createDockerSetupSandbox();
|
|
||||||
const env = createEnv(sandbox, {
|
|
||||||
OPENCLAW_EXTRA_MOUNTS: "",
|
|
||||||
OPENCLAW_HOME_VOLUME: "openclaw-home",
|
|
||||||
});
|
|
||||||
|
|
||||||
const result = spawnSync("bash", [sandbox.scriptPath], {
|
|
||||||
cwd: sandbox.rootDir,
|
cwd: sandbox.rootDir,
|
||||||
env,
|
env: createEnv(sandbox, {
|
||||||
|
OPENCLAW_EXTRA_MOUNTS: "",
|
||||||
|
OPENCLAW_HOME_VOLUME: "openclaw-home",
|
||||||
|
}),
|
||||||
encoding: "utf8",
|
encoding: "utf8",
|
||||||
});
|
});
|
||||||
|
expect(homeVolumeResult.status).toBe(0);
|
||||||
expect(result.status).toBe(0);
|
|
||||||
|
|
||||||
const extraCompose = await readFile(join(sandbox.rootDir, "docker-compose.extra.yml"), "utf8");
|
const extraCompose = await readFile(join(sandbox.rootDir, "docker-compose.extra.yml"), "utf8");
|
||||||
expect(extraCompose).toContain("openclaw-home:/home/node");
|
expect(extraCompose).toContain("openclaw-home:/home/node");
|
||||||
expect(extraCompose).toContain("volumes:");
|
expect(extraCompose).toContain("volumes:");
|
||||||
expect(extraCompose).toContain("openclaw-home:");
|
expect(extraCompose).toContain("openclaw-home:");
|
||||||
|
|
||||||
|
await writeFile(sandbox.logPath, "");
|
||||||
|
const aptResult = spawnSync("bash", [sandbox.scriptPath], {
|
||||||
|
cwd: sandbox.rootDir,
|
||||||
|
env: createEnv(sandbox, {
|
||||||
|
OPENCLAW_DOCKER_APT_PACKAGES: "ffmpeg build-essential",
|
||||||
|
OPENCLAW_EXTRA_MOUNTS: "",
|
||||||
|
OPENCLAW_HOME_VOLUME: "",
|
||||||
|
}),
|
||||||
|
encoding: "utf8",
|
||||||
|
});
|
||||||
|
expect(aptResult.status).toBe(0);
|
||||||
|
const aptEnvFile = await readFile(join(sandbox.rootDir, ".env"), "utf8");
|
||||||
|
expect(aptEnvFile).toContain("OPENCLAW_DOCKER_APT_PACKAGES=ffmpeg build-essential");
|
||||||
|
const log = await readFile(sandbox.logPath, "utf8");
|
||||||
|
expect(log).toContain("--build-arg OPENCLAW_DOCKER_APT_PACKAGES=ffmpeg build-essential");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("avoids associative arrays so the script remains Bash 3.2-compatible", async () => {
|
it("avoids associative arrays so the script remains Bash 3.2-compatible", async () => {
|
||||||
@@ -161,29 +167,6 @@ describe("docker-setup.sh", () => {
|
|||||||
expect(result.stderr).not.toContain("declare: -A: invalid option");
|
expect(result.stderr).not.toContain("declare: -A: invalid option");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("plumbs OPENCLAW_DOCKER_APT_PACKAGES into .env and docker build args", async () => {
|
|
||||||
const sandbox = await createDockerSetupSandbox();
|
|
||||||
const env = createEnv(sandbox, {
|
|
||||||
OPENCLAW_DOCKER_APT_PACKAGES: "ffmpeg build-essential",
|
|
||||||
OPENCLAW_EXTRA_MOUNTS: "",
|
|
||||||
OPENCLAW_HOME_VOLUME: "",
|
|
||||||
});
|
|
||||||
|
|
||||||
const result = spawnSync("bash", [sandbox.scriptPath], {
|
|
||||||
cwd: sandbox.rootDir,
|
|
||||||
env,
|
|
||||||
encoding: "utf8",
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(result.status).toBe(0);
|
|
||||||
|
|
||||||
const envFile = await readFile(join(sandbox.rootDir, ".env"), "utf8");
|
|
||||||
expect(envFile).toContain("OPENCLAW_DOCKER_APT_PACKAGES=ffmpeg build-essential");
|
|
||||||
|
|
||||||
const log = await readFile(sandbox.logPath, "utf8");
|
|
||||||
expect(log).toContain("--build-arg OPENCLAW_DOCKER_APT_PACKAGES=ffmpeg build-essential");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("keeps docker-compose gateway command in sync", async () => {
|
it("keeps docker-compose gateway command in sync", async () => {
|
||||||
const compose = await readFile(join(repoRoot, "docker-compose.yml"), "utf8");
|
const compose = await readFile(join(repoRoot, "docker-compose.yml"), "utf8");
|
||||||
expect(compose).not.toContain("gateway-daemon");
|
expect(compose).not.toContain("gateway-daemon");
|
||||||
|
|||||||
Reference in New Issue
Block a user