如何在文档测试中构建代码但不运行它?

时间:2017-07-14 19:35:30

标签: rust rust-cargo

我的文档中的代码只有在用户的计算机上有某些软件时才能运行。为了模拟这一点,我将panic!添加到示例代码中:

//!```rust
//!fn main() {
//!    panic!("Not run me");
//!}
//!```

#[cfg(test)]
mod tests {
    #[test]
    fn it_works() {}
}

我想检查注释中的代码是否可以编译,但我不希望它在cargo test期间运行。现在,我得到:

running 1 test
test src/lib.rs -  (line 1) ... FAILED

failures:

---- src/lib.rs -  (line 1) stdout ----
        thread 'rustc' panicked at 'test executable failed:

thread 'main' panicked at 'Not run me', <anon>:2
note: Run with `RUST_BACKTRACE=1` for a backtrace.

read about doctest = false,但这不仅禁用了评论中代码的运行,还禁用了语句检查注释中的代码。

我如何才能在评论中禁用代码运行,但仍然可以在cargo test期间在评论中编译代码?

1 个答案:

答案 0 :(得分:4)

您可以使用多个注释来更改Rust代码的处理方式。请参阅the test documentation

在您的情况下,听起来no_run是您想要的

//!```rust,no_run
//!fn main() {
//!    panic!("Not run me");
//!}
//!```

或者您可以使用should_panic,因此Rust将运行代码,但期望恐慌。如果它的代码实际上没有编译,您可以使用ignore