You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/bin/bash
# 批量测试脚本
# 遍历 test/test_case 目录下所有的 .sy 文件,并验证解析是否成功
if [ ! -f "./build/bin/compiler" ]; then
echo "Compiler executable not found at ./build/bin/compiler. Please build the project first."
exit 1
fi
FAIL_COUNT=0
PASS_COUNT=0
FAILED_FILES=()
echo "开始批量测试解析..."
echo "========================================="
# 查找所有 .sy 文件并进行测试
while IFS= read -r file; do
# 运行解析器,将正常输出重定向到 /dev/null保留错误输出用于判断
./build/bin/compiler --emit-parse-tree "$file" > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "❌ 解析失败: $file"
FAIL_COUNT=$((FAIL_COUNT+1))
FAILED_FILES+=("$file")
else
echo "✅ 解析成功: $file"
PASS_COUNT=$((PASS_COUNT+1))
fi
done < <(find test/test_case -type f -name "*.sy" | sort)
echo "========================================="
echo "测试完成!"
echo "成功: $PASS_COUNT"
echo "失败: $FAIL_COUNT"
if [ $FAIL_COUNT -ne 0 ]; then
echo "失败的文件列表:"
for f in "${FAILED_FILES[@]}"; do
echo " - $f"
done
exit 1
else
echo "🎉 所有测试用例均解析成功!"
exit 0
fi