瀏覽代碼

tests: redirect stdin from /dev/null when spawning claude CLI

run_claude ran `timeout "$timeout" "${cmd[@]}"` with the suite's stdin
inherited by the spawned CLI. When the suite is run from a terminal (or
any open stdin), claude -p can block reading stdin and each test stalls
for its full timeout instead of completing.

Verified deterministically with a stub `claude` that reads stdin (cat):
with an open stdin pipe the old helper blocks until timeout kills it
(exit 124); with the redirect it exits immediately with output.

Part of #2130; defect documented in PR #2071 by @ericyen97903-lab.
Jesse Vincent 4 周之前
父節點
當前提交
72ee5bbc5e
共有 1 個文件被更改,包括 3 次插入2 次删除
  1. 3 2
      tests/claude-code/test-helpers.sh

+ 3 - 2
tests/claude-code/test-helpers.sh

@@ -15,8 +15,9 @@ run_claude() {
         cmd+=(--allowed-tools="$allowed_tools")
         cmd+=(--allowed-tools="$allowed_tools")
     fi
     fi
 
 
-    # Run Claude in headless mode with timeout
-    if timeout "$timeout" "${cmd[@]}" > "$output_file" 2>&1; then
+    # Run Claude in headless mode with timeout. Redirect stdin from
+    # /dev/null so the CLI can't block waiting for input and hang the suite.
+    if timeout "$timeout" "${cmd[@]}" > "$output_file" 2>&1 < /dev/null; then
         cat "$output_file"
         cat "$output_file"
         rm -f "$output_file"
         rm -f "$output_file"
         return 0
         return 0