GCC测试用例编写以及测试工作

参考:1)https://gcc.gnu.org/wiki/HowToPrepareATestcase

           2)Test Directives (GNU Compiler Collection (GCC) Internals)

编写测试用例建议

1)针对bug问题,测试用例尽可能小。需要掌握裁剪测试用例的工具,将项目或者工程中的遇到的问题,裁剪成较小的测试用例。

2)针对新特性的测试用例应该尽可能冗长些,要尽可能涵盖有该问题有关的情况。

3)如果提交的patch是解决同一类问题,但是测试用例的可能存在不同的代码序列,尽可能将所有的测试用例放到同一个测试文件中。

4)如果是针对已知的错误(gnu官方的bug 数据库),那么提交的PR的commit需要按照通常的语法命名,并在注释中添加良好的摘要(例如,c++/2204:检查函数入参的抽象性)

5)如果是解决未提交到官方bug数据库的bug,可以在测试用例中添加简短描述。

测试用例存放位置

每种语言都有自己的目录,通常有两个目录:一个用于酷刑测试(torture),另一个用于正常测试。酷刑测试是一种测试用例,它可以用许多不同的优化级别编译和执行,旨在强调GCC优化器。正常的测试是为了测试前端功能(不受优化级别的影响),或者需要特定命令行选项的测试,因此不适合酷刑测试套件。

Active directories in the testsuite

gcc/testsuite/gcc.c-torture/

C torture tests.

gcc/testsuite/gcc.dg/

C normal tests.

gcc/testsuite/g++.dg/

C++ tests.

gcc/testsuite/gfortran.dg/

F95 tests.

gcc/testsuite/gfortran.fortran-torture/

F95 torture tests.

gcc/testsuite/gnat.dg/

Ada tests.

gcc/testsuite/objc/

Objective C torture tests.

gcc/testsuite/objc.dg/

Objective C normal tests.

lib*/testsuite/*/

tests for the target libraries.

测试自己编写的测试用例

Node:假设测试用例名称:awiden-compare-1.c , ... , awiden-compare-8.c

1、构建GCC成功后,制定gcc的path:export PATH="path to gcc install"

2、安装dejagnu:

./configure --prefix=${DEJAGNU_PATH}
make -j${PARALLEL} && make install
export PATH=${DEJAGNU_PATH}/bin:$PATH

3、cd gcc/testsuit/(这里是源码目录,并非build目录)

4、

  • 首先找到这个测试用例所在的目录,即 ./gcc.dg/tree-ssa/awiden-compare*
  • 在该目录下存在一个 *.exp 文件,即 ./gcc.dg/tree-ssa/tree-ssa.exp,如果不存在,则往上一个目录寻找 *.exp 文件
  • 在 testsuite 目录下执行 runtest --tool gcc tree-ssa.exp=awiden-compare*,如果需要执行整个 exp 的测试用例,则执行 runtest --tool gcc tree-ssa.exp
  • 测试结果保存在当前 testsuite 目录下的 *.log 和 *.sum 文件中

Note:由于awiden-compare相关测试用例放在gcc目录下,所以 --tool后面是gcc,如果是g++目录下的测试用例,使用--tool g++,类似gfortran目录下,使用--tool gfortran

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值