From 4557ad7ad12852ffddbe4a25350173197812bdf4 Mon Sep 17 00:00:00 2001 From: Ben Brandt Date: Tue, 19 May 2026 13:29:00 +0200 Subject: [PATCH] eval_cli: Initialize themes in eval headless mode (#57139) Also fix patch generation Release Notes: - N/A --- Cargo.lock | 2 ++ crates/eval_cli/Cargo.toml | 2 ++ crates/eval_cli/src/headless.rs | 1 + crates/eval_cli/zed_eval/agent.py | 13 +++++++++---- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 51a1d750fa4..f976aefdf3d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5964,6 +5964,8 @@ dependencies = [ "settings", "shellexpand", "terminal_view", + "theme", + "theme_settings", "util", "watch", ] diff --git a/crates/eval_cli/Cargo.toml b/crates/eval_cli/Cargo.toml index cac5dc6aa28..ed1f24d75d2 100644 --- a/crates/eval_cli/Cargo.toml +++ b/crates/eval_cli/Cargo.toml @@ -47,5 +47,7 @@ serde_json.workspace = true settings.workspace = true shellexpand.workspace = true terminal_view.workspace = true +theme.workspace = true +theme_settings.workspace = true util.workspace = true watch.workspace = true diff --git a/crates/eval_cli/src/headless.rs b/crates/eval_cli/src/headless.rs index a5b86f8eec8..9423f86a312 100644 --- a/crates/eval_cli/src/headless.rs +++ b/crates/eval_cli/src/headless.rs @@ -40,6 +40,7 @@ pub fn init(cx: &mut App) -> Arc { let settings_store = SettingsStore::new(cx, &settings::default_settings()); cx.set_global(settings_store); + theme_settings::init(theme::LoadThemes::JustBase, cx); let user_agent = format!( "Zed Agent CLI/{} ({}; {})", diff --git a/crates/eval_cli/zed_eval/agent.py b/crates/eval_cli/zed_eval/agent.py index 4543dd9497d..4720a7dbc13 100644 --- a/crates/eval_cli/zed_eval/agent.py +++ b/crates/eval_cli/zed_eval/agent.py @@ -443,16 +443,21 @@ class ZedAgent(BaseInstalledAgent): env=env, ) - # Only generate a patch if the workdir is a git repo - # (SWE-bench style). Terminal-bench containers aren't git repos. + # Only generate a patch if the workdir is a git repo with a valid HEAD + # (SWE-bench style). Terminal-bench containers aren't git repos, and + # some harnesses mount an initialized repo before creating the first commit. await self.exec_as_agent( environment, command=( - 'if [ -d ".git" ]; then ' + "if git rev-parse --git-dir >/dev/null 2>&1; then " "git add -A && " - "git diff --cached HEAD > /logs/agent/patch.diff && " + "if git rev-parse --verify HEAD >/dev/null 2>&1; then " + "git diff --cached HEAD -- > /logs/agent/patch.diff && " 'echo "Patch size: $(wc -c < /logs/agent/patch.diff) bytes"; ' "else " + 'echo "Git repo has no valid HEAD, skipping patch generation"; ' + "fi; " + "else " 'echo "No git repo found, skipping patch generation"; ' "fi" ),