




















@@ -241,6 +241,26 @@ function optionValue(commandArgs, name) {
241241return "";
242242}
243243244+function hasOption(commandArgs, name) {
245+commandArgs = crabboxOptionArgs(commandArgs);
246+const shortName = name.replace(/^--/u, "-");
247+for (const arg of commandArgs) {
248+if (
249+arg === name ||
250+arg === shortName ||
251+arg.startsWith(`${name}=`) ||
252+arg.startsWith(`${shortName}=`)
253+) {
254+return true;
255+}
256+}
257+return false;
258+}
259+260+function isLocalContainerProvider(providerName) {
261+return ["local-container", "docker", "container", "local-docker"].includes(providerName);
262+}
263+244264function runCommandArgs(commandArgs) {
245265const { start } = runCommandBounds(commandArgs);
246266return start >= 0 ? commandArgs.slice(start) : [];
@@ -410,9 +430,33 @@ if (args[0] === "run" && provider === "aws" && runtimeEntrypoint) {
410430);
411431}
412432433+const childEnv = { ...process.env };
434+if (
435+isLocalContainerProvider(provider) &&
436+!childEnv.CRABBOX_LOCAL_CONTAINER_DOCKER_SOCKET &&
437+!hasOption(args, "--local-container-docker-socket")
438+) {
439+childEnv.CRABBOX_LOCAL_CONTAINER_DOCKER_SOCKET = "1";
440+console.error(
441+"[crabbox] provider=docker enabling host Docker socket pass-through for OpenClaw Docker tests",
442+);
443+}
444+if (
445+isLocalContainerProvider(provider) &&
446+process.platform !== "win32" &&
447+!childEnv.CRABBOX_LOCAL_CONTAINER_WORK_ROOT &&
448+!hasOption(args, "--local-container-work-root")
449+) {
450+childEnv.CRABBOX_LOCAL_CONTAINER_WORK_ROOT = "/tmp/openclaw-crabbox-docker-work";
451+console.error(
452+"[crabbox] provider=docker using short host-visible work root for OpenClaw Docker tests",
453+);
454+}
455+413456const child = spawn(binary, args, {
414457cwd: repoRoot,
415458stdio: "inherit",
459+env: childEnv,
416460});
417461418462child.on("exit", (code, signal) => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。