2016-07-10 17 views
1

조건부 컴파일을 사용하여 유형 서명을 변경했기 때문에 동일한 "doctest"를 "feature"모드로 실행할 수 없으므로 doctest를 옵트 아웃 (opt-out)해야합니다.doctest가있는 Rust 프로젝트를 사용하여 조건부 컴파일을 수행하는 방법은 무엇입니까?

정상적인 테스트에서 #[cfg_attr(feature = "rss_loose", ignore)] 병합을 시도했으며 ///rust,ignore을 사용하여 ///rust,cfg_attr(feature = "rss_loose", ignore)으로 만들었지 만 작동하지 않는 것으로 보입니다.

+0

가 doctest가 내부에'# [cfg_attr]'일을합니까? 그런 다음 ['#'] (https://doc.rust-lang.org/book/documentation.html#documentation-as-tests)로 숨길 수 있습니다. – mcarton

+0

@Shepmaster를 편집 해 주셔서 감사합니다! –

+0

그리고 당신의 방법은 완벽하게 작동하는 것 같습니다. 감사합니다 :) –

답변

5

그냥 문서 및 테스트의 두 가지 세트를 작성하고이 모든 작업으로는-입니다됩니다

/// ``` 
/// assert_eq!(42, dt::foo()); 
/// ``` 
#[cfg(not(feature = "alternate"))] 
pub fn foo() -> u8 { 42 } 

/// ``` 
/// assert_eq!(true, dt::foo()); 
/// ``` 
#[cfg(feature = "alternate")] 
pub fn foo() -> bool { true } 
$ cargo test 
    Compiling dt v0.1.0 (file:///private/tmp/dt) 
    Running target/debug/dt-c3e297f8592542b5 

running 0 tests 

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

    Doc-tests dt 

running 1 test 
test foo_0 ... ok 

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured 
$ cargo test --features=alternate 
    Compiling dt v0.1.0 (file:///private/tmp/dt) 
    Running target/debug/dt-c3e297f8592542b5 

running 0 tests 

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

    Doc-tests dt 

running 1 test 
test foo_0 ... ok 

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

이 문제는 내가 모듈 문서에 대해 이렇게하려고했기 때문에, 문서를 작성하는 데는 두 가지 다른 기능이 없었습니다. 그러나 당신의 방법은 훨씬 더 좋습니다. –