#命令行 #测试工具 #测试文件 #命令行工具 #文件格式 #执行命令 #检查

bin+lib lit

集成测试工具,灵感来源于 LLVM 的 'lit' 测试脚本

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

MIT 许可

110KB
2.5K SLoC

lit

Crates.io Build Status license

一个集成测试工具,类似于 LLVM 的集成测试工具 (llvm-lit),但以库的形式。

Rust API 文档

用法

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