compiler-go/test_all.sh

50 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
cd build
success_count=0
failure_count=0
failed_files=()
successful_files=()
test_folder=../test/e
for test_file in $test_folder/*.go; do
base_name=$(basename "$test_file" .go)
echo -e "\n========== 编译 $base_name =========="
if ! ./LiteGoCompiler $test_folder/$base_name.go; then
echo "编译错误"
failure_count=$((failure_count + 1))
failed_files+=("$base_name")
continue
fi
nasm -f elf32 -o "$base_name/out.o" "$base_name/out.asm"
nasm -f elf32 -o "$test_folder/print.o" $test_folder/print.asm
if ! ld -m elf_i386 -o "$base_name/out.bin" "$base_name/out.o" "$test_folder/print.o"; then
echo "链接错误"
failure_count=$((failure_count + 1))
failed_files+=("$base_name")
continue
fi
echo -e "\n========== 运行 $base_name =========="
if ! $base_name/out.bin; then
echo "运行错误"
failure_count=$((failure_count + 1))
failed_files+=("$base_name")
continue
fi
success_count=$((success_count + 1))
successful_files+=("$base_name")
done
# 输出统计结果
echo -e "\n========== 编译结果统计 =========="
echo "成功的文件数量: $success_count"
echo "成功的文件名: ${successful_files[*]}"
echo "失败的文件数量: $failure_count"
echo "失败的文件名: ${failed_files[*]}"