test: cover unset docker env vars
This commit is contained in:
@@ -32,6 +32,56 @@ exit 0
|
|||||||
}
|
}
|
||||||
|
|
||||||
describe("docker-setup.sh", () => {
|
describe("docker-setup.sh", () => {
|
||||||
|
it("handles unset optional env vars under strict mode", async () => {
|
||||||
|
const assocCheck = spawnSync("bash", ["-c", "declare -A _t=()"], {
|
||||||
|
encoding: "utf8",
|
||||||
|
});
|
||||||
|
if (assocCheck.status !== 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const rootDir = await mkdtemp(join(tmpdir(), "clawdbot-docker-setup-"));
|
||||||
|
const scriptPath = join(rootDir, "docker-setup.sh");
|
||||||
|
const dockerfilePath = join(rootDir, "Dockerfile");
|
||||||
|
const composePath = join(rootDir, "docker-compose.yml");
|
||||||
|
const binDir = join(rootDir, "bin");
|
||||||
|
const logPath = join(rootDir, "docker-stub.log");
|
||||||
|
|
||||||
|
const script = await readFile(join(repoRoot, "docker-setup.sh"), "utf8");
|
||||||
|
await writeFile(scriptPath, script, { mode: 0o755 });
|
||||||
|
await writeFile(dockerfilePath, "FROM scratch\n");
|
||||||
|
await writeFile(
|
||||||
|
composePath,
|
||||||
|
"services:\n clawdbot-gateway:\n image: noop\n clawdbot-cli:\n image: noop\n",
|
||||||
|
);
|
||||||
|
await writeDockerStub(binDir, logPath);
|
||||||
|
|
||||||
|
const env = {
|
||||||
|
...process.env,
|
||||||
|
PATH: `${binDir}:${process.env.PATH ?? ""}`,
|
||||||
|
DOCKER_STUB_LOG: logPath,
|
||||||
|
CLAWDBOT_GATEWAY_TOKEN: "test-token",
|
||||||
|
CLAWDBOT_CONFIG_DIR: join(rootDir, "config"),
|
||||||
|
CLAWDBOT_WORKSPACE_DIR: join(rootDir, "clawd"),
|
||||||
|
};
|
||||||
|
delete env.CLAWDBOT_DOCKER_APT_PACKAGES;
|
||||||
|
delete env.CLAWDBOT_EXTRA_MOUNTS;
|
||||||
|
delete env.CLAWDBOT_HOME_VOLUME;
|
||||||
|
|
||||||
|
const result = spawnSync("bash", [scriptPath], {
|
||||||
|
cwd: rootDir,
|
||||||
|
env,
|
||||||
|
encoding: "utf8",
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result.status).toBe(0);
|
||||||
|
|
||||||
|
const envFile = await readFile(join(rootDir, ".env"), "utf8");
|
||||||
|
expect(envFile).toContain("CLAWDBOT_DOCKER_APT_PACKAGES=");
|
||||||
|
expect(envFile).toContain("CLAWDBOT_EXTRA_MOUNTS=");
|
||||||
|
expect(envFile).toContain("CLAWDBOT_HOME_VOLUME=");
|
||||||
|
});
|
||||||
|
|
||||||
it("plumbs CLAWDBOT_DOCKER_APT_PACKAGES into .env and docker build args", async () => {
|
it("plumbs CLAWDBOT_DOCKER_APT_PACKAGES into .env and docker build args", async () => {
|
||||||
const assocCheck = spawnSync("bash", ["-c", "declare -A _t=()"], {
|
const assocCheck = spawnSync("bash", ["-c", "declare -A _t=()"], {
|
||||||
encoding: "utf8",
|
encoding: "utf8",
|
||||||
|
|||||||
Reference in New Issue
Block a user