Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,12 @@ Output from `cargo test` for this example:
```sh
$ cargo test

running 4 tests
test tests::multiplication_tests::when_both_operands_are_negative ... ok
test tests::multiplication_tests::when_both_operands_are_positive ... ok
test tests::multiplication_tests::when_operands_are_swapped ... ok
running 3 tests
test tests::multiplication_tests::test_case_1_when_both_operands_are_negative ... ok
test tests::multiplication_tests::test_case_2_when_both_operands_are_positive ... ok
test tests::multiplication_tests::test_case_3_when_operands_are_swapped ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
```

### Test Matrix
Expand Down
8 changes: 4 additions & 4 deletions crates/test-case-core/src/test_case.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,13 @@ impl TestCase {
self.name.clone()
}

pub fn render(&self, mut item: ItemFn, origin_span: Span2) -> TokenStream2 {
pub fn render(&self, mut item: ItemFn, origin_span: Span2, test_number: usize) -> TokenStream2 {
let item_name = item.sig.ident.clone();
let arg_values = self.args.iter();
let test_case_name = {
let mut test_case_name = self.test_case_name();
test_case_name.set_span(origin_span);
test_case_name
let name = self.test_case_name();
let sep = if name.to_string().starts_with('_') { "" } else { "_" };
Ident::new(&format!("test_case_{test_number}{sep}{name}"), origin_span)
};

let mut attrs = self
Expand Down
4 changes: 2 additions & 2 deletions crates/test-case-macros/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,8 @@ fn expand_additional_test_case_macros(item: &mut ItemFn) -> syn::Result<Vec<(Tes
fn render_test_cases(test_cases: &[(TestCase, Span2)], mut item: ItemFn) -> TokenStream {
let mut rendered_test_cases = vec![];

for (test_case, span) in test_cases {
rendered_test_cases.push(test_case.render(item.clone(), *span));
for (i, (test_case, span)) in test_cases.iter().enumerate() {
rendered_test_cases.push(test_case.render(item.clone(), *span, i + 1));
}

let mod_name = item.sig.ident.clone();
Expand Down
10 changes: 5 additions & 5 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@
//! ```sh
//! $ cargo test
//!
//! running 4 tests
//! test tests::multiplication_tests::when_both_operands_are_negative ... ok
//! test tests::multiplication_tests::when_both_operands_are_positive ... ok
//! test tests::multiplication_tests::when_operands_are_swapped ... ok
//! running 3 tests
//! test tests::multiplication_tests::test_case_1_when_both_operands_are_negative ... ok
//! test tests::multiplication_tests::test_case_2_when_both_operands_are_positive ... ok
//! test tests::multiplication_tests::test_case_3_when_operands_are_swapped ... ok
//!
//! test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
//! test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
//! ```
//!
//! ## Test Matrix
Expand Down
18 changes: 18 additions & 0 deletions tests/acceptance_cases/cases_are_enumerated/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
###
# Ensure that `#[allow(...)]` is propagated to the test function.
###

[package]
name = "allow_stays_on_fn"
version = "0.1.0"
edition = "2021"

[lib]
name = "allow_stays_on_fn"
path = "src/lib.rs"
doctest = false

[dependencies]
test-case = { path = "../../../" }

[workspace]
7 changes: 7 additions & 0 deletions tests/acceptance_cases/cases_are_enumerated/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
use test_case::test_case;

#[test_case(42)]
#[test_case("42")]
fn cases_are_enumerated(value: impl std::fmt::Display) {
assert_eq!("42", &value.to_string())
}
7 changes: 6 additions & 1 deletion tests/acceptance_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ macro_rules! run_acceptance_test {

let output = sanitize_lines(output);

insta::assert_display_snapshot!(output);
insta::assert_snapshot!(output);
})
};
($case_name:expr) => {
Expand Down Expand Up @@ -149,3 +149,8 @@ fn allow_stays_on_fn() {
fn matrices_compilation_errors() {
run_acceptance_test!("matrices_compilation_errors")
}

#[test]
fn cases_are_enumerated() {
run_acceptance_test!("cases_are_enumerated")
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
source: tests/acceptance_tests.rs
expression: output
---
test allow_stays_on_fn::_42_expects ... ok
test allow_stays_on_fn::test_case_1_42_expects ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
source: tests/acceptance_tests.rs
expression: output
---
test cases_are_enumerated::test_case_1_42_expects ... ok
test cases_are_enumerated::test_case_2_42_expects ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ source: tests/acceptance_tests.rs
expression: output
---
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test works_seamlessly_with_async_std::_100i32_expects_100usize ... ok
test works_seamlessly_with_tokio::_100i32_expects_100usize ... ok
test works_seamlessly_with_async_std::test_case_1_100i32_expects_100usize ... ok
test works_seamlessly_with_tokio::test_case_1_100i32_expects_100usize ... ok
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ source: tests/acceptance_tests.rs
expression: output
---
error: test failed, to rerun pass `--lib`
test internal_tested_function1::_2_expects_4 ... ok
test internal_tested_function1::_3_expects_6 ... FAILED
test internal_tested_function2::_1_expects_0 ... ok
test internal_tested_function3::_1_expects_matching_3_ ... ok
test internal_tested_function3::_2_expects_inconclusive6 ... ignored
test internal_tested_function4::_2_expects_panicking_some_can_t_ - should panic ... ok
test internal_tested_function1::test_case_1_2_expects_4 ... ok
test internal_tested_function1::test_case_2_3_expects_6 ... FAILED
test internal_tested_function2::test_case_1_1_expects_0 ... ok
test internal_tested_function3::test_case_1_1_expects_matching_3_ ... ok
test internal_tested_function3::test_case_2_2_expects_inconclusive6 ... ignored
test internal_tested_function4::test_case_1_2_expects_panicking_some_can_t_ - should panic ... ok
test result: FAILED. 4 passed; 1 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
thread 'internal_tested_function1::_3_expects_6' panicked at src/lib.rs:8:1:
thread 'internal_tested_function1::test_case_2_3_expects_6' panicked at src/lib.rs:8:1:
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
source: tests/acceptance_tests.rs
expression: output
---
test descriptions::_expects_inconclusive_ ... ignored, reason but no comment
test descriptions::ignore_keyword ... ignored, reason and comment
test descriptions::test_is_not_run ... ignored, reason and comment
test ignore_void::_1_expects_inconclusiveempty ... ignored
test ignore_void::_2_expects_inconclusiveempty ... ignored
test inconclusives::_expects_inconclusive_ ... ignored
test inconclusives::ignore_keyword ... ignored
test inconclusives::inconclusive_test ... ignored
test inconclusives::test_is_not_ran ... ignored
test descriptions::test_case_1_expects_inconclusive_ ... ignored, reason but no comment
test descriptions::test_case_2_test_is_not_run ... ignored, reason and comment
test descriptions::test_case_3_ignore_keyword ... ignored, reason and comment
test ignore_void::test_case_1_1_expects_inconclusiveempty ... ignored
test ignore_void::test_case_2_2_expects_inconclusiveempty ... ignored
test inconclusives::test_case_1_expects_inconclusive_ ... ignored
test inconclusives::test_case_2_test_is_not_ran ... ignored
test inconclusives::test_case_3_inconclusive_test ... ignored
test inconclusives::test_case_4_ignore_keyword ... ignored
test result: ok. 0 passed; 0 failed; 9 ignored; 0 measured; 0 filtered out; finished in 0.00s
12 changes: 6 additions & 6 deletions tests/snapshots/rust-stable/acceptance__cases_can_panic.snap
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ source: tests/acceptance_tests.rs
expression: output
---
error: test failed, to rerun pass `--lib`
test panicking::_expects_panicking_some_it_has_to_panic_ - should panic ... ok
test panicking::_expects_panicking_some_this_should_fail_ - should panic ... FAILED
test panics_without_value::_expects_panicking_none - should panic ... ok
test pattern_matching_result_fails::simpleenum_var1_expects_matching_simpleenum_var2_ - should panic ... ok
test panicking::test_case_1_expects_panicking_some_it_has_to_panic_ - should panic ... ok
test panicking::test_case_2_expects_panicking_some_this_should_fail_ - should panic ... FAILED
test panics_without_value::test_case_1_expects_panicking_none - should panic ... ok
test pattern_matching_result_fails::test_case_1_simpleenum_var1_expects_matching_simpleenum_var2_ - should panic ... ok
test result: FAILED. 4 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result_which_panics::_2_2_expects_2_3 - should panic ... ok
thread 'panicking::_expects_panicking_some_this_should_fail_' panicked at src/lib.rs:20:5:
test result_which_panics::test_case_1_2_2_expects_2_3 - should panic ... ok
thread 'panicking::test_case_2_expects_panicking_some_this_should_fail_' panicked at src/lib.rs:20:5:
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ source: tests/acceptance_tests.rs
expression: output
---
error: test failed, to rerun pass `--lib`
test ignore_supported::_12_expects_inconclusivematching_ok_ ... ignored
test is_even::_12_expects ... ok
test is_even::_13_expects ... FAILED
test is_odd_boxed::_12_expects ... FAILED
test is_odd_boxed::_13_expects ... ok
test panics_supported::_12_expects_panicking_none - should panic ... ok
test panics_supported::_13_expects_panicking_some_with_text_ - should panic ... ok
test ignore_supported::test_case_1_12_expects_inconclusivematching_ok_ ... ignored
test is_even::test_case_1_12_expects ... ok
test is_even::test_case_2_13_expects ... FAILED
test is_odd_boxed::test_case_1_12_expects ... FAILED
test is_odd_boxed::test_case_2_13_expects ... ok
test panics_supported::test_case_1_12_expects_panicking_none - should panic ... ok
test panics_supported::test_case_2_13_expects_panicking_some_with_text_ - should panic ... ok
test result: FAILED. 4 passed; 2 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
18 changes: 9 additions & 9 deletions tests/snapshots/rust-stable/acceptance__cases_can_use_regex.snap
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ expression: output
---
error: incomplete escape sequence, reached end of pattern prematurely
error: test failed, to rerun pass `--lib`
test regex_test::_abcabc201_expects_complex_regex_r_d_ ... ok
test regex_test::_abcabc201_expects_complex_regex_r_d_4_ ... FAILED
test regex_test::_abcabc_expects_complex_regex_r_abc_ ... ok
test regex_test::_kumkwat_expects_complex_regex_r_ ... FAILED
test regex_test::_kumkwat_expects_complex_regex_r_abc_ ... FAILED
test regex_test::_kumkwat_expects_complex_regex_r_kumkwat_ ... ok
test regex_test::test_case_1_abcabc_expects_complex_regex_r_abc_ ... ok
test regex_test::test_case_2_abcabc201_expects_complex_regex_r_d_ ... ok
test regex_test::test_case_3_abcabc201_expects_complex_regex_r_d_4_ ... FAILED
test regex_test::test_case_4_kumkwat_expects_complex_regex_r_abc_ ... FAILED
test regex_test::test_case_5_kumkwat_expects_complex_regex_r_ ... FAILED
test regex_test::test_case_6_kumkwat_expects_complex_regex_r_kumkwat_ ... ok
test result: FAILED. 3 passed; 3 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
thread 'regex_test::_abcabc201_expects_complex_regex_r_d_4_' panicked at src/lib.rs:5:1:
thread 'regex_test::_kumkwat_expects_complex_regex_r_' panicked at src/lib.rs:5:1:
thread 'regex_test::_kumkwat_expects_complex_regex_r_abc_' panicked at src/lib.rs:5:1:
thread 'regex_test::test_case_3_abcabc201_expects_complex_regex_r_d_4_' panicked at src/lib.rs:5:1:
thread 'regex_test::test_case_4_kumkwat_expects_complex_regex_r_abc_' panicked at src/lib.rs:5:1:
thread 'regex_test::test_case_5_kumkwat_expects_complex_regex_r_' panicked at src/lib.rs:5:1:
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,36 @@ source: tests/acceptance_tests.rs
expression: output
---
test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test test_cases::abs_tests::returns_0_for_0 ... ok
test test_cases::abs_tests::returns_given_number_for_positive_input ... ok
test test_cases::abs_tests::returns_opposite_number_for_non_positive_input ... ok
test test_cases::arg_expressions::_2_4_6_to_string_expects ... ok
test test_cases::bar::_expects_string_default_ ... ok
test test_cases::basic_test::_1_expects ... ok
test test_cases::const_in_arg::this_is_desc_not_an_argument ... ok
test test_cases::fancy_addition::some_2_3_some_4_expects_2_3_4 ... ok
test test_cases::fancy_addition::some_2_some_3_expects_5 ... ok
test test_cases::fancy_addition::treats_none_as_0 ... ok
test test_cases::impl_trait::_foo_expects ... ok
test test_cases::keyword_test::true_expects ... ok
test test_cases::leading_underscore_in_test_name::_dummy_expects ... ok
test test_cases::lowercase_test_name::_dummy_code_expects ... ok
test test_cases::multiple_test_cases::_2_expects ... ok
test test_cases::multiple_test_cases::_4_expects ... ok
test test_cases::multiplication_tests::when_both_operands_are_negative ... ok
test test_cases::multiplication_tests::when_both_operands_are_possitive ... ok
test test_cases::multiplication_tests::when_operands_are_swapped ... ok
test test_cases::name::_2nd_test ... ok
test test_cases::name::_4_5_expects ... ok
test test_cases::name::test_1_8_9 ... ok
test test_cases::name::test_3_6_9 ... ok
test test_cases::nested::nested_test_case::_1_1_expects ... ok
test test_cases::nested::using_fn_from_super::_20_22_expects ... ok
test test_cases::nested::using_fn_from_super::_42_expects ... ok
test test_cases::result::_2_expects_4 ... ok
test test_cases::result::_4_expects_8 ... ok
test test_cases::result_and_name::_4_5_expects_9 ... ok
test test_cases::result_and_name::test_no_1 ... ok
test test_cases::result_expresion_with_name::test_result_expression ... ok
test test_cases::result_expression::_2_2_expects_2_2 ... ok
test test_cases::result_with_mod_sep::_42_expects_std_string_string_new_ ... ok
test test_cases::abs_tests::test_case_1_returns_given_number_for_positive_input ... ok
test test_cases::abs_tests::test_case_2_returns_opposite_number_for_non_positive_input ... ok
test test_cases::abs_tests::test_case_3_returns_0_for_0 ... ok
test test_cases::arg_expressions::test_case_1_2_4_6_to_string_expects ... ok
test test_cases::bar::test_case_1_expects_string_default_ ... ok
test test_cases::basic_test::test_case_1_1_expects ... ok
test test_cases::const_in_arg::test_case_1_this_is_desc_not_an_argument ... ok
test test_cases::fancy_addition::test_case_1_treats_none_as_0 ... ok
test test_cases::fancy_addition::test_case_2_some_2_some_3_expects_5 ... ok
test test_cases::fancy_addition::test_case_3_some_2_3_some_4_expects_2_3_4 ... ok
test test_cases::impl_trait::test_case_1_foo_expects ... ok
test test_cases::keyword_test::test_case_1_true_expects ... ok
test test_cases::leading_underscore_in_test_name::test_case_1_dummy_expects ... ok
test test_cases::lowercase_test_name::test_case_1_dummy_code_expects ... ok
test test_cases::multiple_test_cases::test_case_1_2_expects ... ok
test test_cases::multiple_test_cases::test_case_2_4_expects ... ok
test test_cases::multiplication_tests::test_case_1_when_both_operands_are_possitive ... ok
test test_cases::multiplication_tests::test_case_2_when_operands_are_swapped ... ok
test test_cases::multiplication_tests::test_case_3_when_both_operands_are_negative ... ok
test test_cases::name::test_case_1_test_1_8_9 ... ok
test test_cases::name::test_case_2_2nd_test ... ok
test test_cases::name::test_case_3_test_3_6_9 ... ok
test test_cases::name::test_case_4_4_5_expects ... ok
test test_cases::nested::nested_test_case::test_case_1_1_1_expects ... ok
test test_cases::nested::using_fn_from_super::test_case_1_20_22_expects ... ok
test test_cases::nested::using_fn_from_super::test_case_2_42_expects ... ok
test test_cases::result::test_case_1_2_expects_4 ... ok
test test_cases::result::test_case_2_4_expects_8 ... ok
test test_cases::result_and_name::test_case_1_test_no_1 ... ok
test test_cases::result_and_name::test_case_2_4_5_expects_9 ... ok
test test_cases::result_expresion_with_name::test_case_1_test_result_expression ... ok
test test_cases::result_expression::test_case_1_2_2_expects_2_2 ... ok
test test_cases::result_with_mod_sep::test_case_1_42_expects_std_string_string_new_ ... ok
Loading