3.0.0 - 2024-03-08
- Parameterized tests now parse and regenerate the
const
,async
,unsafe
andextern
function qualifiers for test functions.
Example
use yare::parameterized;
// NB: The underlying test macro also must support these qualifiers. For example, the default `#[test]` doesn't support async and unsafe.
#[parameterized(
purple = { &[128, 0, 128] },
orange = { &[255, 127, 0] },
)]
const extern "C" fn has_reds(streamed_color: &[u8]) {
assert!(streamed_color.first().is_some());
}
- It is now possible to specify a custom test macro with
#[test_macro(...)]
, which replaces the default#[test]
attribute for a parameterized test.
Example
use yare::parameterized;
#[parameterized(
zero_wait = { 0, 0 },
show_paused = { 500, 0 },
)]
#[test_macro(tokio::test(start_paused = true))]
async fn test(wait: u64, time_elapsed: u128) {
let start = std::time::Instant::now();
tokio::time::sleep(tokio::time::Duration::from_millis(wait)).await;
assert_eq!(time_elapsed, start.elapsed().as_millis());
}
2.0.0 - 2023-10-16
- Test signature may now have return type, given that is also accepted by the
#[test]
macro.
Example
use yare::parameterized;
#[parameterized(
ok = { Ok(0) },
err = { Err("This case will fail".to_string()) },
)]
fn example_test(value: Result<u32, String>) -> Result<(), String> {
let _ = value?;
Ok(())
}
- Breaking: Parameter and argument count now must match exactly
- MSRV is now 1.56
- Breaking: Removed deprecated
ide!
macro
1.0.2 - 2022-08-19
- Added crate root documentation for rustdoc and docs.rs
- Deprecated
ide!
macro