From fb44a9b248651483f239a8f460e6c8b58009e898 Mon Sep 17 00:00:00 2001 From: openhands Date: Fri, 27 Mar 2026 16:18:42 +0000 Subject: [PATCH] fix: agent-smoke: use [(][)] for literal parens in BRE regex Some BusyBox grep builds treat bare () as grouping operators even in BRE mode, causing get_fns to miss function definitions like ci_commit_status. Using [(][)] is unambiguous across all grep implementations. Co-Authored-By: Claude Opus 4.6 (1M context) --- .woodpecker/agent-smoke.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.woodpecker/agent-smoke.sh b/.woodpecker/agent-smoke.sh index 6fe8f49..14a4607 100644 --- a/.woodpecker/agent-smoke.sh +++ b/.woodpecker/agent-smoke.sh @@ -21,10 +21,11 @@ FAILED=0 # Uses awk instead of grep -Eo for busybox/Alpine compatibility (#296). get_fns() { local f="$1" - # BRE mode (no -E): () is literal in BRE, avoiding BusyBox ERE bugs - # where \(\) is misinterpreted. BRE one-or-more via [X][X]* instead of +. - grep '^[[:space:]]*[a-zA-Z_][a-zA-Z0-9_][a-zA-Z0-9_]*[[:space:]]*()' "$f" 2>/dev/null \ - | sed 's/^[[:space:]]*//; s/[[:space:]]*().*$//' \ + # BRE mode (no -E). Use [(][)] for literal parens — unambiguous across + # GNU grep and BusyBox grep (some BusyBox builds treat bare () as grouping + # even in BRE). BRE one-or-more via [X][X]* instead of +. + grep '^[[:space:]]*[a-zA-Z_][a-zA-Z0-9_][a-zA-Z0-9_]*[[:space:]]*[(][)]' "$f" 2>/dev/null \ + | sed 's/^[[:space:]]*//; s/[[:space:]]*[(][)].*$//' \ | sort -u || true }