use rstest_reuse; mod cases { use rstest::rstest; use rstest_reuse::*; #[template] #[rstest] #[case(2, 2)] #[case(4/2, 2)] fn copy_cases(#[case] a: u32, #[case] b: u32) {} #[apply(copy_cases)] fn it_works(a: u32, b: u32) { assert!(a == b); } #[apply(copy_cases)] fn should_not_copy_attributes_if_already_present(#[case] a: u32, b: u32) { assert!(a == b); } #[apply(copy_cases)] #[case::more(8/4, 2)] fn add_a_case(a: u32, b: u32) { assert!(a == b); } #[apply(copy_cases)] fn add_values(a: u32, b: u32, #[values(1, 2, 3)] _add_some_tests: u32) { assert!(a == b); } #[apply(copy_cases)] fn should_copy_cases_also_from_underscored_attrs(_a: u32, _b: u32) {} } mod values { use rstest::rstest; use rstest_reuse::*; #[template] #[rstest] fn copy_values(#[values(1, 2)] cases: u32) {} #[apply(copy_values)] fn it_works(cases: u32) { assert!([1, 2].contains(&cases)); } #[apply(copy_values)] #[case::more(8/4, 2)] fn add_a_case(#[case] a: u32, #[case] b: u32, cases: u32) { assert!([1, 2].contains(&cases)); assert!(a == b); } #[apply(copy_values)] fn add_values(#[values(3, 4)] a: u32, cases: u32) { assert!([1, 2].contains(&cases)); assert!([3, 4].contains(&a)); } #[apply(copy_values)] fn should_copy_values_also_from_underscored_attrs(_cases: u32) {} }