test: Phase 132 smoke - add timeout/logging for robust diagnostics

This commit is contained in:
nyash-codex
2025-12-15 07:07:34 +09:00
parent 9d57d2cb9c
commit 82b114a494

View File

@ -26,6 +26,8 @@ mkdir -p "$NYASH_ROOT/tmp"
PASS_COUNT=0
FAIL_COUNT=0
BUILD_TIMEOUT_SECS=${BUILD_TIMEOUT_SECS:-300}
RUN_TIMEOUT_SECS=${RUN_TIMEOUT_SECS:-10}
# ===== Case A: Simple loop return =====
echo "[INFO] Case A: phase132_return_loop_var_min.hako"
@ -33,14 +35,17 @@ echo "[INFO] Case A: phase132_return_loop_var_min.hako"
INPUT_A="$NYASH_ROOT/apps/tests/phase132_return_loop_var_min.hako"
OUTPUT_A="$NYASH_ROOT/tmp/phase132_return_loop_var_min"
if "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT_A" -o "$OUTPUT_A" > /tmp/phase132_a_build.log 2>&1; then
if timeout "$BUILD_TIMEOUT_SECS" "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT_A" -o "$OUTPUT_A" > /tmp/phase132_a_build.log 2>&1; then
if [ -x "$OUTPUT_A" ]; then
set +e
"$OUTPUT_A" > /dev/null 2>&1
EXIT_CODE=$?
timeout "$RUN_TIMEOUT_SECS" "$OUTPUT_A" > /dev/null 2>&1
EXIT_CODE=$? # 124=timeout
set -e
if [ "$EXIT_CODE" -eq 3 ]; then
if [ "$EXIT_CODE" -eq 124 ]; then
echo "[FAIL] Case A: executable timed out (>${RUN_TIMEOUT_SECS}s)"
((FAIL_COUNT++))
elif [ "$EXIT_CODE" -eq 3 ]; then
echo "[PASS] Case A: exit code 3 verified"
((PASS_COUNT++))
else
@ -52,7 +57,13 @@ if "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT_A" -o "$OUTPUT_A" > /tmp/phase132_a
((FAIL_COUNT++))
fi
else
echo "[FAIL] Case A: build_llvm.sh failed"
if [ "$?" -eq 124 ]; then
echo "[FAIL] Case A: build_llvm.sh timed out (>${BUILD_TIMEOUT_SECS}s)"
else
echo "[FAIL] Case A: build_llvm.sh failed"
fi
echo "[INFO] Case A build log (tail):"
tail -n 80 /tmp/phase132_a_build.log || true
((FAIL_COUNT++))
fi
@ -62,17 +73,24 @@ echo "[INFO] Case B: llvm_stage3_loop_only.hako"
INPUT_B="$NYASH_ROOT/apps/tests/llvm_stage3_loop_only.hako"
OUTPUT_B="$NYASH_ROOT/tmp/llvm_stage3_loop_only"
if "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT_B" -o "$OUTPUT_B" > /tmp/phase132_b_build.log 2>&1; then
# Case B can reuse the runtime built by Case A; skip rebuilding NyRT to reduce runtime.
if timeout "$BUILD_TIMEOUT_SECS" env NYASH_LLVM_SKIP_NYRT_BUILD=1 "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT_B" -o "$OUTPUT_B" > /tmp/phase132_b_build.log 2>&1; then
if [ -x "$OUTPUT_B" ]; then
set +e
OUTPUT=$("$OUTPUT_B" 2>&1)
OUTPUT=$(timeout "$RUN_TIMEOUT_SECS" "$OUTPUT_B" 2>&1)
EXIT_CODE=$? # 124=timeout
set -e
if echo "$OUTPUT" | grep -q "Result: 3"; then
if [ "$EXIT_CODE" -eq 124 ]; then
echo "[FAIL] Case B: executable timed out (>${RUN_TIMEOUT_SECS}s)"
((FAIL_COUNT++))
elif echo "$OUTPUT" | grep -q "Result: 3"; then
echo "[PASS] Case B: stdout contains 'Result: 3'"
((PASS_COUNT++))
else
echo "[FAIL] Case B: Expected stdout to contain 'Result: 3'"
echo "[INFO] Case B stdout (tail):"
echo "$OUTPUT" | tail -n 80 || true
((FAIL_COUNT++))
fi
else
@ -80,7 +98,13 @@ if "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT_B" -o "$OUTPUT_B" > /tmp/phase132_b
((FAIL_COUNT++))
fi
else
echo "[FAIL] Case B: build_llvm.sh failed"
if [ "$?" -eq 124 ]; then
echo "[FAIL] Case B: build_llvm.sh timed out (>${BUILD_TIMEOUT_SECS}s)"
else
echo "[FAIL] Case B: build_llvm.sh failed"
fi
echo "[INFO] Case B build log (tail):"
tail -n 80 /tmp/phase132_b_build.log || true
((FAIL_COUNT++))
fi