Skip to content

gilsaia/lab6_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lab6测试库

目录下的test.out文件为测试过程调用程序 请不要删除

同学们需要将自己完成的编译器程序拷贝到根目录下 默认命名为main.out 后面会介绍如何更改使用不同名字

文件结构

test文件夹下是不同级别的测试文件以及类型检查的测试文件

类型检查

对于类型检查的文件 需要对每份代码输出类型检查的结果 包含必要的报错信息以及可能的修正信息等等 使用方式控制命令部分有写到 默认的检测方式为./main.out <file.c >file.res

目前我们只提供了简单的几个类型检查样例 同学们如果有实现高级功能或更多的检查功能可以自行添加

测试文件

通常一个完整的测试样例包含

  • file.c 测试代码
  • file.in 测试输入
  • file.output 测试输出
  • file.s 同学们的程序输出的汇编代码
  • file_std.s 通过官方编译器得到的参考汇编代码
  • file.out 根据同学们翻译出的汇编代码经过编译器翻译得到的程序
  • file_std.out 通过官方编译器编译得到的标准程序
  • file_std.output 标准输出 作为对照使用

仓库只包含了必要的代码文件和输入文件 其他文件会在程序运行过程中产生

控制命令

  • make 命令会使用默认设置进行整个测试流程(不包括类型检查)
    • 默认设置为x86平台
    • 默认测试编译器路径为./main.out
    • 默认测试命令为./main.out <file.c >file.s
    • 默认测试所有等级下所有样例
    • 默认翻译汇编代码命令为gcc file.s -m32 -o file.out
    • 默认测试程序的命令为qemu-i386 file.out <file.in >file.output
    • 默认将过程中错误提示写到err.log
  • make arm 命令会将平台变更为arm平台
    • 翻译汇编代码命令变更为arm-linux-gnueabi-gcc -static file.s -o file.out
    • 测试程序命令变更为qemu-arm file.out <file.in >file.output
  • make l1/2/3/4命令单独测试不同等级样例
  • make arm-l1/2/3/4 命令在arm平台下单独测试不同等级不同样例
  • make noerrlog 命令将所有报错直接在终端输出
  • make type 命令进行类型检查工作 对所有类型检查代码分别运行./main.out <file.c >file.res
  • make diffcheck 命令对所有样例(不包括类型检查)通过gcc编译器生成对应的32位汇编代码命名为file_std.s供参考使用
  • make std 命令检查所有样例(不包括类型检查)对无输入文件的样例创建对应输入文件
  • make different 命令对所有样例(不包括类型检查)对未拷贝的代码拷贝出一份对应.sy文件 具体作用我们后文会提到
  • make clean 命令删除编译产生的程序
  • make clean-complete 命令删除绝大部分自己产生的文件 慎用

测试过程

  • 打印当前设置
  • 生成标准输出
  • 测试编译器产生汇编代码
  • 翻译汇编代码产生输出
  • 对比标准输出与测试输出

一些额外的说明

查看Makefile可以知道 实际上上文提到的不同设置只是在调用test.out时增加了不同的参数 因此在这里说明一些额外的设置

我的程序不想命名为main.out/我的类型检查和编译器作业是两个程序

通过compiler参数可以更改测试编译器的路径 例如测试编译器命名为haveatry.tet 在Makefile中或直接调用时添加--compiler ./haveatry.tet即可更改测试编译器调用方式

我的IO没有支持标准格式欸/有些样例我规定的写法不允许可以更改吗

首先通过make different命令将所有样例拷贝为.sy文件 在.sy文件中进行修改 而后通过添加different参数可以令测试程序将测试命令变为./main.out <file.sy >file.s 在Makefile或直接调用时添加--different参数即可

我想自己添加一些样例

当然可以 直接在任何一个级别下添加你自己的c代码以及标准输入即可

一些自己想实现的测试方法或有其他问题

欢迎直接向助教提问或者提issue~

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published