21 个版本 (5 个稳定版)
1.0.4 | 2021 年 12 月 1 日 |
---|---|
1.0.3 | 2021 年 1 月 29 日 |
1.0.2 | 2020 年 5 月 17 日 |
0.4.0 | 2020 年 4 月 23 日 |
0.1.0 | 2016 年 12 月 30 日 |
#180 in 测试
每月 43 次下载
用于 4 crates
110KB
2.5K SLoC
lit
一个集成测试工具,类似于 LLVM 的集成测试工具 (llvm-lit
),但以库的形式。
用法
将 lit
指向包含测试文件的目录,它将执行测试文件中的命令并运行包含在测试中的检查。
任何支持注释的基于纯文本的文件格式都可以用作测试文件,前提是已将注释字符添加到 lit 的源代码中。
所有测试都是基于对每个测试文件上执行的各个命令行工具的输出的文本比较来进行的。每个测试文件内的 CHECK
指令验证命令行工具包含预期的文本。
测试 bash 脚本
这是一个示例测试文件,它是一个 bash 脚本。添加了断言以确保 bash 脚本将正确的文本输出到 stdout/stderr。
# RUN: sh -ea @file
# CHECK: hello world
echo hello world
# CHECK: number 1
# CHECK: number 2
# CHECK: number 3
# CHECK: number 4
for i in $(seq 1 4); do echo number $i; done
测试 C/C++ 程序
这是一个示例 C/C++ 测试文件。添加了断言以确保 C 编译器以特定的方式名称修饰 main 方法。
// RUN: gcc @file -S
//
// Note: '-S' compiles this C program to plain-text assembly.
// This next line verifies that there is an assembly label
// with a name mangled underscore prefix.
// CHECK: _main:
int main() {
return 0;
}
RUN
指令
此指令运行可执行文件,通常将测试文件作为源文件。
RUN: <command-line>
每个 RUN
指令在不同的条件下运行相同的测试文件。
CHECK
指令
此指令用于断言 RUN
命令的输出包含特定字符串。
CHECK: <substring to look for>
如果找不到子串,则测试立即失败。
变量
可以通过 @<变量名>
在指令中使用变量。变量在测试时用变量的值替换。
测试可用的默认变量
这些变量可以在指令中使用。
名称(* = 通配符) |
描述 | 替代值 |
---|---|---|
@文件 |
正在执行的测试文件的路径。 | |
@*临时文件* |
包含文本 临时文件 的任何变量 |
临时文件路径。对相同的临时文件变量的后续使用将给出相同的路径。可以通过提供不同的名称(如 @first_tempfile 和 @second_tempfile )在单个测试中使用多个临时文件。 |
依赖项
~8-19MB
~258K SLoC