Как использовать модуль с атрибутом `test` в тестах doc? - PullRequest
2 голосов
/ 17 апреля 2019

У меня есть модуль, который я хотел бы использовать в блоке кода в моей документации.

Этот модуль используется только для тестов, поэтому у него есть атрибут #![cfg(test)], который он должен хранить.

Однако в результате этот файл, по-видимому, не включается при выполнении тестов в документации.

Взгляните на MVCE:

lib.rs

//! ```
//! use example::mock::Number;
//! ```
pub mod mock;

pub fn main() {}

mock.rs

#![cfg(test)]

pub type Number = i32;

Это не с:

---- src/lib.rs -  (line 1) stdout ----
error[E0432]: unresolved import `example::mock`
 --> src/lib.rs:2:14
  |
4 | use example::mock::Number;
  |              ^^^^ could not find `mock` in `example`

Есть ли способ заставить мой тестовый код документации использовать эти файлы, настроенные для тестов?

1 Ответ

3 голосов
/ 17 апреля 2019

Это известное ограничение doctest ( Issue # 45599 ). К сожалению, с момента выпуска номера (в конце 2017 года) нет реального прогресса.

В качестве обходного пути предлагается добавить функцию в Cargo.toml

[features]
test = []

Вместо проверки #[cfg(test)] вы можете выполнить #[cfg(feature = "test")].

...