7.4 C语言测试包
GCC在gcc/testsuite目录下包含下列C语言测试包:
- gcc.dg
-
其包含了C编译器特定特征的测试,使用了较为现代的‘dg’ harness。
如果可能的话,对各种编译器特征的正确性的测试应该放在这里。
魔术注释(Magic comments)决定了文件是否被预处理,编译,连接或运行。
在这些测试中,错误和警告消息文本用来跟在注释中给出的预期文本或正规表达式作比较。
这些测试使用选项‘-ansi -pedantic’来运行,除非给出了其它选项。
除了下面标注的以外,它们使用多个优化选项来运行。
- gcc.dg/compat
-
该子目录包含了使用compat.exp的二进制兼容性测试,
并且是使用语言无关的支持(参见Support for testing binary compatibility)。
- gcc.dg/cpp
-
该子目录包含了预处理器的测试。
- gcc.dg/debug
-
该子目录包含了调试格式的测试。该子目录下的测试用于编译器支持的每个调试格式。
- gcc.dg/format
-
该子目录包含了-Wformat格式检测的测试。
该目录下的测试分别使用和不使用-DWIDE来运行。
- gcc.dg/noncompile
-
该子目录包含了不被编译并且不需要任何特定编译选项的测试。
它们使用多个优化选项来运行,因为有时编译器的优化会使得代码崩溃。
- gcc.dg/special
-
FIXME: 对其进行描述。
- gcc.c-torture
- This contains particular code fragments which have historically broken easily.
These tests are run with multiple optimization options, so tests for features
which only break at some optimization levels belong here. This also contains
tests to check that certain optimizations occur. It might be worthwhile to
separate the correctness tests cleanly from the code quality tests, but
it hasn't been done yet.
- gcc.c-torture/compat
-
FIXME: 对其进行描述。
该目录应该不会被用于新的测试。
- gcc.c-torture/compile
-
该测试包包含了应该编译,但不需要连接和运行的测试用例。
这些测试用例使用多个不同优化选项组合来编译。所有的警告都被禁止,
所以如果你想测试编译器警告是否存在,则这个目录不适合。虽然可以设置特定的选项,
并且测试不是用于特定的平台,但大多数这些测试用例不应该包含平台依赖。
FIXME:论述如何使用像
NO_LABEL_VALUES
和STACK_SIZE
这样的定义。
- gcc.c-torture/execute
-
该测试包包含了应该被编译,连接和运行的测试用例;
否则跟gcc.c-torture/compile相同的注释将会使用。
- gcc.c-torture/execute/ieee
-
这包含了IEEE浮点特定的测试。
- gcc.c-torture/unsorted
-
FIXME: 对其进行描述。
该目录应该不会被用于新的测试。
- gcc.misc-tests
-
该目录包含了需要特殊处理的C测试。其中的一些测试具有单独的expect文件,
另一些则共享特殊用途的expect文件:
bprob*.c
- 使用bprob.exp来测试-fbranch-probabilities,并且是使用通用的,
语言无关的框架(参见Support for testing profile-directed optimizations)。
dg-*.c
- 使用dg-test.exp来测试测试包本身。
gcov*.c
- 使用gcov.exp来测试gcov输出,
并且是使用语言无关的支持(参见Support for testing gcov)。
i386-pf-*.c
- 使用i386-prefetch.exp来测试i386特定的对数据预提取的支持。
- gcc.test-framework
-
dg-*.c
- Test the testsuite itself using gcc.test-framework/test-framework.exp.
FIXME: 合并到testsuite/readme.gcc中,
并进一步论述测试用例的格式和魔术注释。