I have the following code defining a path where generated files can be placed:
fn gen_test_dir() -> tempdir::TempDir {
tempdir::TempDir::new_in(Path::new("/tmp"), "filesyncer-tests").unwrap()
}
This function is defined in tests/lib.rs
, used in the tests in that file and I would also like to use it in the unit tests located in src/lib.rs
.
Is this possible to achieve without compiling the utility functions into the non-test binary and without duplicating code?
You can import from your #[cfg(test)]
modules from other #[cfg(test)]
modules, so, for example, in main.rs
or in some other module, you can do something like:
#[cfg(test)]
pub mod test_util {
pub fn return_two() -> usize { 2 }
}
and then from anywhere else in your project:
#[cfg(test)]
mod test {
use crate::test_util::return_two;
#[test]
fn test_return_two() {
assert_eq!(return_two(), 2);
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With