test: Phase 132 smoke - add timeout/logging for robust diagnostics
This commit is contained in:
@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user