Fix flaky unit test on merge-triggered CI runs (#7)
CI / build-and-scan (push) Successful in 2m24s

- entrypoint.sh: bound the target connectivity check with `-w 2` (the only unbounded step in the startup path)
- tests/entrypoint.bats: widen wait_for_log's budget from 5s to 10s

Merge-triggered runs land on a colder runner (Docker cache evicted by other repos' scheduled jobs since the PR was last tested) than PR-check runs, and the first backgrounded entrypoint.sh in the suite was occasionally landing just past the old 5s window — always passed on rerun once warm.
This commit is contained in:
2026-08-26 16:36:39 +02:00
committed by Djeex
parent 348d39192b
commit 93fe213c18
2 changed files with 6 additions and 2 deletions
+1 -1
View File
@@ -145,7 +145,7 @@ fi
log "[~] Testing connection to target..." log "[~] Testing connection to target..."
# Test if we can reach the target before starting socat # Test if we can reach the target before starting socat
if ! nc -z "$TARGET_HOST" "$TARGET_PORT" 2>/dev/null; then if ! nc -z -w 2 "$TARGET_HOST" "$TARGET_PORT" 2>/dev/null; then
log "[!] Cannot connect to $TARGET_HOST:$TARGET_PORT - socat will retry automatically" log "[!] Cannot connect to $TARGET_HOST:$TARGET_PORT - socat will retry automatically"
else else
log "[✓] Connection to $TARGET_HOST:$TARGET_PORT is working" log "[✓] Connection to $TARGET_HOST:$TARGET_PORT is working"
+5 -1
View File
@@ -58,7 +58,11 @@ socat_pid() {
wait_for_log() { wait_for_log() {
pattern="$1" pattern="$1"
tries=0 tries=0
while [ "$tries" -lt 20 ]; do # 40 * 0.25s = 10s — merge-triggered runs can land on a cold runner
# (evicted Docker cache, first container start), pushing the very first
# backgrounded entrypoint.sh past a tighter budget even though nothing's
# actually wrong; a rerun on a warm runner always passes.
while [ "$tries" -lt 40 ]; do
grep -qE "$pattern" "$LOG" 2>/dev/null && return 0 grep -qE "$pattern" "$LOG" 2>/dev/null && return 0
tries=$((tries + 1)) tries=$((tries + 1))
sleep 0.25 sleep 0.25