Compare commits
5 Commits
master
...
feature/se
| Author | SHA1 | Date |
|---|---|---|
|
|
56753bc842 | 11 hours ago |
|
|
43e257368f | 16 hours ago |
|
|
4f8dec86d7 | 18 hours ago |
|
|
3b3318613a | 18 hours ago |
|
|
a8bd6d647d | 18 hours ago |
@ -0,0 +1,96 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 测试脚本
|
||||
# 用法: ./run_tests.sh [--verbose] [<单个测试文件>]
|
||||
|
||||
COMPILER="./build/bin/compiler"
|
||||
TEST_DIR="test/test_case"
|
||||
RESULT_FILE="result.txt"
|
||||
VERBOSE=0
|
||||
|
||||
# 解析参数
|
||||
if [[ "$1" == "--verbose" ]]; then
|
||||
VERBOSE=1
|
||||
shift
|
||||
fi
|
||||
|
||||
# 检查编译器是否存在
|
||||
if [ ! -f "$COMPILER" ]; then
|
||||
echo "错误: 编译器未找到于 $COMPILER"
|
||||
echo "请先完成项目构建 (cmake 和 make)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 如果指定了单个文件,检查文件是否存在
|
||||
if [ -n "$1" ] && [ ! -f "$1" ]; then
|
||||
echo "错误: 文件 $1 不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清空(或创建)结果文件
|
||||
> "$RESULT_FILE"
|
||||
|
||||
# 计数器
|
||||
total=0
|
||||
passed=0
|
||||
failed=0
|
||||
|
||||
echo "开始测试 SysY 解析..."
|
||||
echo "输出将保存到 $RESULT_FILE"
|
||||
echo "------------------------"
|
||||
|
||||
# 确定测试文件列表
|
||||
if [ -n "$1" ]; then
|
||||
# 使用提供的单个文件
|
||||
TEST_FILES=("$1")
|
||||
else
|
||||
# 收集所有 .sy 文件
|
||||
mapfile -t TEST_FILES < <(find "$TEST_DIR" -type f -name "*.sy" | sort)
|
||||
fi
|
||||
|
||||
for file in "${TEST_FILES[@]}"; do
|
||||
((total++))
|
||||
if [ $VERBOSE -eq 1 ]; then
|
||||
echo "测试文件: $file"
|
||||
else
|
||||
echo -n "测试 $file ... "
|
||||
fi
|
||||
|
||||
echo "========== $file ==========" >> "$RESULT_FILE"
|
||||
|
||||
if [ $VERBOSE -eq 1 ]; then
|
||||
"$COMPILER" --emit-parse-tree "$file" 2>&1 | tee -a "$RESULT_FILE"
|
||||
result=${PIPESTATUS[0]}
|
||||
else
|
||||
"$COMPILER" --emit-parse-tree "$file" >> "$RESULT_FILE" 2>&1
|
||||
result=$?
|
||||
fi
|
||||
|
||||
echo "" >> "$RESULT_FILE"
|
||||
|
||||
if [ $result -eq 0 ]; then
|
||||
if [ $VERBOSE -eq 0 ]; then
|
||||
echo "通过"
|
||||
fi
|
||||
((passed++))
|
||||
else
|
||||
if [ $VERBOSE -eq 0 ]; then
|
||||
echo "失败"
|
||||
else
|
||||
echo ">>> 解析失败: $file"
|
||||
fi
|
||||
((failed++))
|
||||
fi
|
||||
done
|
||||
|
||||
echo "------------------------"
|
||||
echo "总计: $total"
|
||||
echo "通过: $passed"
|
||||
echo "失败: $failed"
|
||||
echo "详细输出已保存至 $RESULT_FILE"
|
||||
|
||||
if [ $failed -gt 0 ]; then
|
||||
exit 1
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
Loading…
Reference in new issue