50 lines
1.4 KiB
Bash
Executable File
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[*]}" |