如何在功能门控实现中运行doc测试?

时间:2017-03-12 00:36:17

标签: testing documentation rust

我注意到,如果你在特质实现周围有一个像#[feature(cfg = "nightly")]这样的功能门,那么即使在每晚cargo test,也可以通过调用rustc来跳过doctest。我试过cargo test --all-features,但结果是一样的。 (当然,注释掉门会导致测试运行。)我没有在Rust Reference中看到任何关于此的内容。

如何确保对功能门控实施的测试运行?

供参考,这是我正在使用的Rust版本。

rustc 1.17.0-nightly (c0b7112ba 2017-03-02)
binary: rustc
commit-hash: c0b7112ba246d96f253ba845d91f36c0b7398e42
commit-date: 2017-03-02

1 个答案:

答案 0 :(得分:0)

必须始终明确选择不属于default集的功能。您可以通过在命令行传递参数或将它们列在[dependencies]部分(如果它们是依赖项)来实现。

<强>的src / lib.rs

/// ```
/// assert!(false);
/// ```
#[cfg(feature = "nightly")]
trait Foo {}

<强> Cargo.toml

[package]
name = "wuzzy"
version = "0.1.0"
authors = ["An Devloper <an.devloper@example.com>"]

[features]
nightly = []

运行cargo test --features=nightly会导致断言触发,cargo test忽略测试。这一切都适用于稳定的Rust。

$ cargo test --features=nightly
   Doc-tests wuzzy

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

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured

$ cargo test
   Doc-tests wuzzy

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured