test-with
A lib help you run test with condition
Environment Variable
Run test case when the environment variable is set. A solution for this issue of rust-lang.
Result of cargo test
running 2 tests
test tests::test_ignored ... ignored
test tests::test_works ... ok
test result: ok. 1 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
If the test depends on more than one environment variables,
you can write it with multiple variables, #[test_with::env(VAR1, VAR2)].
File/Folder
Run test case when the file or folder exist. This is good for testing with database config.
If you want to check the folder exist or not, please use path.
If the test depends on more than one file or path,
you can write it with multiple file/path,
#[test_with::file(/file1, /file2)] or #[test_with::path(/folder, /file)].
Http/Https Service
Run test case when the http/https service available. This is good for integration testing.
If the test depends on more than one service,
you can write it with multiple service,
#[test_with::http(service1, service2)] or #[test_with::http2(service1, service2)].
TCP socket
Run integration test case when the remote tcp socket is listening.
#[cfg(test)]
mod tests {
#[test_with::tcp(8.8.8.8:53)]
fn test_works() {
assert!(true);
}
#[test_with::tcp(193.194.195.196)]
fn test_ignored() {
panic!("should be ignored")
}
}
Remote Server Online Status
Run integration test case when the remote server online. Please note the user running test case should have capability to open socket.
#[cfg(test)]
mod tests {
// localhost is online
#[test_with::icmp(127.0.0.1)]
fn test_works() {
assert!(true);
}
// 193.194.195.196 is offline
#[test_with::icmp(193.194.195.196)]
fn test_ignored() {
panic!("should be ignored")
}
}