3 个不稳定版本
0.2.1 | 2023年6月1日 |
---|---|
0.2.0 | 2023年6月1日 |
0.1.0 | 2023年5月30日 |
#45 in #glob-pattern
每月下载量 429
在 2 个包中使用 (通过 test-each)
8KB
152 行
test-each
在编译时根据文件和目录生成测试。
用法
此包包含三个属性,所有属性都根据文件 glob 模式生成测试。每个属性都生成具有不同参数类型的测试。生成的测试名称将采用清理后的文件名版本。
文本文件
使用 &'static str
和 test_each::file
接收文件内容。这将忽略任何匹配的目录。
#[test_each::file(glob = "data/*.txt")]
fn test_file(content: &str) {
// check contents
}
如果 data
包含文件 foo.txt
和 bar.txt
,则以下代码将被生成
#[test]
fn test_file_foo() {
test_file(include_str("data/foo.txt"))
}
#[test]
fn test_file_bar() {
test_file(include_str("data/bar.txt"))
}
二进制文件
使用 &'static [u8]
和 test_each::blob
接收文件内容。这将忽略任何匹配的目录。
#[test_each::blob(glob = "data/*.bin")]
fn test_bytes(content: &[u8]) {
// check contents
}
声明第二个参数以接收文件路径。
#[test_each::blob(glob = "data/*.bin")]
fn test_bytes(content: &[u8], path: PathBuf) {
// check contents and path
}
文件和目录的路径
使用 PathBuf
和 test_each::path
接收文件路径。这将包括任何匹配的目录。
#[test_each::path(glob = "data/*")]
fn test_bytes(path: PathBuf) {
// check path
}
自定义函数名称
默认情况下,生成的测试名称将由没有扩展名的转义文件名组成。使用 name
属性可以更改函数名称的格式。
使用name(segments = <n>)
向名称中添加n
个路径段(从右到左)。
使用name(index)
在测试名称的末尾添加一个唯一的索引。这将防止名称冲突。
使用name(extension)
在测试名称的末尾包含文件扩展名。
/// The generated function name will be `test_file_bar_baz_data_txt_0`
#[test_each::file(glob = "foo/bar/baz/data.txt", name(segments = 3, index, extension))]
fn test_file(_: &str) {}
注意
对已包含文件的任何更改都将正确触发重新编译,但创建一个匹配glob的新文件可能不会导致重新编译。要修复此问题,请添加一个生成cargo-rerun-if-changed={<glob directories>}
的构建文件。
依赖关系
~300–750KB
~18K SLoC