78 lines
2.8 KiB
Rust
78 lines
2.8 KiB
Rust
// Test covering RFC 3631 features.
|
|
|
|
#![crate_name = "foo"]
|
|
#![feature(doc_cfg)]
|
|
#![doc(auto_cfg(hide(feature = "hidden")))]
|
|
|
|
//@ has 'foo/index.html'
|
|
//@ !has - '//*[@class="stab portability"]' 'Non-moustache'
|
|
//@ has - '//*[@class="stab portability"]' 'Non-pistache'
|
|
//@ count - '//*[@class="stab portability"]' 1
|
|
|
|
//@ has 'foo/m/index.html'
|
|
//@ count - '//*[@title="Available on non-crate feature `hidden` only"]' 2
|
|
#[cfg(not(feature = "hidden"))]
|
|
pub mod m {
|
|
//@ count 'foo/m/struct.A.html' '//*[@class="stab portability"]' 0
|
|
pub struct A;
|
|
|
|
//@ has 'foo/m/inner/index.html' '//*[@class="stab portability"]' 'Available on non-crate feature hidden only.'
|
|
#[doc(auto_cfg(show(feature = "hidden")))]
|
|
pub mod inner {
|
|
//@ has 'foo/m/inner/struct.B.html' '//*[@class="stab portability"]' 'Available on non-crate feature hidden only.'
|
|
pub struct B;
|
|
|
|
//@ count 'foo/m/inner/struct.A.html' '//*[@class="stab portability"]' 0
|
|
#[doc(auto_cfg(hide(feature = "hidden")))]
|
|
pub struct A;
|
|
}
|
|
|
|
//@ has 'foo/m/struct.B.html' '//*[@class="stab portability"]' 'Available on non-crate feature hidden only.'
|
|
#[doc(auto_cfg(show(feature = "hidden")))]
|
|
pub struct B;
|
|
}
|
|
|
|
//@ count 'foo/n/index.html' '//*[@title="Available on non-crate feature `moustache` only"]' 3
|
|
//@ count - '//dl/dt' 4
|
|
#[cfg(not(feature = "moustache"))]
|
|
#[doc(auto_cfg = false)]
|
|
pub mod n {
|
|
// Should not have `moustache` listed.
|
|
//@ count 'foo/n/struct.X.html' '//*[@class="stab portability"]' 0
|
|
pub struct X;
|
|
|
|
// Should re-enable `auto_cfg` and make `moustache` listed.
|
|
//@ has 'foo/n/struct.Y.html' '//*[@class="stab portability"]' \
|
|
// 'Available on non-crate feature moustache only.'
|
|
#[doc(auto_cfg)]
|
|
pub struct Y;
|
|
|
|
// Should re-enable `auto_cfg` and make `moustache` listed for itself
|
|
// and for `Y`.
|
|
//@ has 'foo/n/inner/index.html' '//*[@class="stab portability"]' \
|
|
// 'Available on non-crate feature moustache only.'
|
|
#[doc(auto_cfg = true)]
|
|
pub mod inner {
|
|
//@ has 'foo/n/inner/struct.Y.html' '//*[@class="stab portability"]' \
|
|
// 'Available on non-crate feature moustache only.'
|
|
pub struct Y;
|
|
}
|
|
|
|
// Should re-enable `auto_cfg` and make `moustache` listed.
|
|
//@ has 'foo/n/struct.Z.html' '//*[@class="stab portability"]' \
|
|
// 'Available on non-crate feature moustache only.'
|
|
#[doc(auto_cfg(hide(feature = "hidden")))]
|
|
pub struct Z;
|
|
}
|
|
|
|
// Checking inheritance.
|
|
//@ has 'foo/o/index.html' '//*[@class="stab portability"]' \
|
|
// 'Available on non-crate feature pistache only.'
|
|
#[doc(cfg(not(feature = "pistache")))]
|
|
pub mod o {
|
|
//@ has 'foo/o/struct.A.html' '//*[@class="stab portability"]' \
|
|
// 'Available on non-crate feature pistache and non-crate feature tarte only.'
|
|
#[doc(cfg(not(feature = "tarte")))]
|
|
pub struct A;
|
|
}
|