#check #source #batch #runner #correctness #run #within

batch_run

当前项目中任意 Rust 文件的批量运行器

9 个版本 (3 个稳定版)

1.2.0 2020 年 4 月 30 日
1.1.0 2020 年 4 月 30 日
1.0.0 2019 年 10 月 23 日
1.0.0-alpha.12019 年 9 月 25 日

#742 in 测试

每月 39 次下载
用于 2 crates

MIT/Apache

50KB
1K SLoC

批量运行

Latest Version Rust Documentation

batch_run 是一组 Rust 源文件的运行器,基于 dtolnay 的 trybuild。当您有一堆不是足够复杂以至于可以打包到专用 crates 中的 Rust 源文件时,它可能很有用,这些文件(根据其意义)不仅仅是集成测试用例。它还可以检查输出正确性,无论是在编译时(对于 compile_fail 用例)还是运行时(对于 run_pass 用例)。

[dependencies]
batch_run = "1.0"

编译器支持:需要 rustc 1.31+


编译失败用例

一个最小的 batch_run 设置看起来像这样

fn main() {
    let b = batch_run::Batch::new();
    b.compile_fail("batches/ui/*.rs");
    match b.run() {
        Ok(()) => {},
        Err(err) => println!("{:?}", err)
    };
}

此程序将分别编译与 glob 模式匹配的每个源文件,期望它们无法编译,并断言编译器的错误信息与相邻命名的 *.stderr 文件中的预期输出(与测试文件具有相同的名称,但扩展名不同)匹配。如果不匹配,程序将打印错误信息,比较预期与实际的编译器输出。

在项目的 Cargo.toml 中列出的 [dependencies][dev-dependencies] 下的依赖项可以在批处理内部访问,就像在普通的 cargo run 一样。

一个编译失败但未能编译失败的用例也是一个失败。


运行通过用例

在运行通过用例中,我们不仅检查代码能否编译,而且还实际运行它,并将 stdout/stderr 输出与相应的 *.stdout/*.stderr 文件匹配。

您可以在一个批处理中混合 compile_fail 和 run_pass 用例

fn main() {
    let t = batch_run::Batch::new();
    t.run_pass("batches/01-parse-header.rs");
    t.run_pass("batches/02-parse-body.rs");
    t.compile_fail("batches/03-expand-four-errors.rs");
    t.run_pass("batches/04-paste-ident.rs");
    t.run_pass("batches/05-repeat-section.rs");
}

详细信息

这是整个 API。


工作流程

(待办事项)

许可证

根据您的选择,许可为 Apache 许可证第 2 版MIT 许可证
除非您明确声明,否则根据Apache-2.0许可证定义的您提交给本仓库的任何有意贡献,应双许可如上,不附加任何额外条款或条件。

依赖项

约2-10MB
约102K SLoC