您如何 运行 在功能门控实现中进行文档测试?
How do you run doc tests in feature gated implementations?
我注意到,如果您在特征实现周围有一个像 #[feature(cfg = "nightly")]
这样的功能门,即使在夜间 rustc
调用 cargo test
也会跳过 doctest。我尝试了 cargo test --all-features
,但结果是一样的。 (当然,在测试中注释掉 gate 结果是 运行。)我在 Rust 参考中也没有看到任何关于这个的内容。
您如何确保对功能门控实施进行测试运行?
作为参考,这是我的 Rust 版本。
rustc 1.17.0-nightly (c0b7112ba 2017-03-02)
binary: rustc
commit-hash: c0b7112ba246d96f253ba845d91f36c0b7398e42
commit-date: 2017-03-02
不属于 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
我注意到,如果您在特征实现周围有一个像 #[feature(cfg = "nightly")]
这样的功能门,即使在夜间 rustc
调用 cargo test
也会跳过 doctest。我尝试了 cargo test --all-features
,但结果是一样的。 (当然,在测试中注释掉 gate 结果是 运行。)我在 Rust 参考中也没有看到任何关于这个的内容。
您如何确保对功能门控实施进行测试运行?
作为参考,这是我的 Rust 版本。
rustc 1.17.0-nightly (c0b7112ba 2017-03-02)
binary: rustc
commit-hash: c0b7112ba246d96f253ba845d91f36c0b7398e42
commit-date: 2017-03-02
不属于 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