diff --git a/crates/libtest2-mimic/tests/testsuite/mixed_bag.rs b/crates/libtest2-mimic/tests/testsuite/mixed_bag.rs index 8eb993c..940f213 100644 --- a/crates/libtest2-mimic/tests/testsuite/mixed_bag.rs +++ b/crates/libtest2-mimic/tests/testsuite/mixed_bag.rs @@ -12,41 +12,40 @@ fn main() { use libtest2_mimic::RunError; libtest2_mimic::Harness::with_env() .discover([ - Trial::test("cat", |_| Ok(())), - Trial::test("dog", |_| Err(RunError::fail("was not a good boy"))), - Trial::test("fox", |_| Ok(())), - Trial::test("bunny", |state| { + Trial::test("passed", |_| Ok(())), + Trial::test("failed", |_| Err(RunError::fail("was not a good boy"))), + Trial::test("custom_error", |_| Err(RunError::from(std::io::Error::new(std::io::ErrorKind::Other, "I failed")))), + Trial::test("later_passed", |_| Ok(())), + Trial::test("ignore_failed", |state| { state.ignore_for("fails")?; Err(RunError::fail("jumped too high")) }), - Trial::test("frog", |state| { + Trial::test("ignore_passed", |state| { state.ignore_for("slow")?; Ok(()) }), - Trial::test("owl", |state| { + Trial::test("later_ignore_failed", |state| { state.ignore_for("fails")?; Err(RunError::fail("broke neck")) }), - Trial::test("fly", |state| { + Trial::test("later_ignore_passed", |state| { state.ignore_for("fails")?; Ok(()) }), - Trial::test("bear", |state| { - state.ignore_for("fails")?; - Err(RunError::fail("no honey")) - }), - Trial::test("sheep", |state| { + Trial::test("ignore_attribute", |state| { state.ignore()?; Err(RunError::fail("got lost blindly following the flock")) }), + Trial::test("ignore_attribute_reason", |state| { + state.ignore_for("fails")?; + Err(RunError::fail("no honey")) + }), #[cfg(all())] - Trial::test("horse", |state| { - state.ignore_for("slow")?; + Trial::test("cfg_in", |state| { Ok(()) }), - Trial::test("custom_error", |_| Err(RunError::from(std::io::Error::new(std::io::ErrorKind::Other, "I failed")))), #[cfg(any())] - Trial::test("unicorn", |state| { + Trial::test("cfged_out", |state| { panic!("I don't exist"); }), ]) @@ -83,32 +82,32 @@ fn normal() { str![[r#" running 11 tests -test bear ... ignored -test bunny ... ignored -test cat ... ok -test custom_error ... FAILED -test dog ... FAILED -test fly ... ignored -test fox ... ok -test frog ... ignored -test horse ... ignored -test owl ... ignored -test sheep ... ignored +test cfg_in ... ok +test custom_error ... FAILED +test failed ... FAILED +test ignore_attribute ... ignored +test ignore_attribute_reason ... ignored +test ignore_failed ... ignored +test ignore_passed ... ignored +test later_ignore_failed ... ignored +test later_ignore_passed ... ignored +test later_passed ... ok +test passed ... ok failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy failures: custom_error - dog + failed -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], @@ -122,17 +121,48 @@ failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy failures: custom_error - dog + failed + +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s + + +"#]], + ); +} + +#[test] +fn fail_fast() { + check( + &["--fail-fast"], + 101, + str![[r#" + +running 11 tests +test cfg_in ... ok +test custom_error ... FAILED + +failures: + +---- custom_error ---- +I failed + + +failures: + custom_error -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 filtered out; finished in [..]s +"#]], + str![[r#" +... + "#]], ); } @@ -145,32 +175,32 @@ fn test_mode() { str![[r#" running 11 tests -test bear ... ignored -test bunny ... ignored -test cat ... ok -test custom_error ... FAILED -test dog ... FAILED -test fly ... ignored -test fox ... ok -test frog ... ignored -test horse ... ignored -test owl ... ignored -test sheep ... ignored +test cfg_in ... ok +test custom_error ... FAILED +test failed ... FAILED +test ignore_attribute ... ignored +test ignore_attribute_reason ... ignored +test ignore_failed ... ignored +test ignore_passed ... ignored +test later_ignore_failed ... ignored +test later_ignore_passed ... ignored +test later_passed ... ok +test passed ... ok failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy failures: custom_error - dog + failed -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], @@ -184,15 +214,15 @@ failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy failures: custom_error - dog + failed -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], @@ -207,32 +237,32 @@ fn bench_mode() { str![[r#" running 11 tests -test bear ... ignored -test bunny ... ignored -test cat ... ok -test custom_error ... FAILED -test dog ... FAILED -test fly ... ignored -test fox ... ok -test frog ... ignored -test horse ... ignored -test owl ... ignored -test sheep ... ignored +test cfg_in ... ok +test custom_error ... FAILED +test failed ... FAILED +test ignore_attribute ... ignored +test ignore_attribute_reason ... ignored +test ignore_failed ... ignored +test ignore_passed ... ignored +test later_ignore_failed ... ignored +test later_ignore_passed ... ignored +test later_passed ... ok +test passed ... ok failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy failures: custom_error - dog + failed -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], @@ -246,15 +276,15 @@ failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy failures: custom_error - dog + failed -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], @@ -267,34 +297,34 @@ fn list() { &["--list"], 0, str![[r#" -cat: test -dog: test -fox: test -bunny: test -frog: test -owl: test -fly: test -bear: test -sheep: test -horse: test +passed: test +failed: test custom_error: test +later_passed: test +ignore_failed: test +ignore_passed: test +later_ignore_failed: test +later_ignore_passed: test +ignore_attribute: test +ignore_attribute_reason: test +cfg_in: test 11 tests "#]], str![[r#" -cat: test -dog: test -fox: test -bunny: test -frog: test -owl: test -fly: test -bear: test -sheep: test -horse: test +passed: test +failed: test custom_error: test +later_passed: test +ignore_failed: test +ignore_passed: test +later_ignore_failed: test +later_ignore_passed: test +ignore_attribute: test +ignore_attribute_reason: test +cfg_in: test 11 tests @@ -309,34 +339,34 @@ fn list_ignored() { &["--list", "--ignored"], 0, str![[r#" -cat: test -dog: test -fox: test -bunny: test -frog: test -owl: test -fly: test -bear: test -sheep: test -horse: test +passed: test +failed: test custom_error: test +later_passed: test +ignore_failed: test +ignore_passed: test +later_ignore_failed: test +later_ignore_passed: test +ignore_attribute: test +ignore_attribute_reason: test +cfg_in: test 11 tests "#]], str![[r#" -cat: test -dog: test -fox: test -bunny: test -frog: test -owl: test -fly: test -bear: test -sheep: test -horse: test +passed: test +failed: test custom_error: test +later_passed: test +ignore_failed: test +ignore_passed: test +later_ignore_failed: test +later_ignore_passed: test +ignore_attribute: test +ignore_attribute_reason: test +cfg_in: test 11 tests @@ -351,18 +381,32 @@ fn list_with_filter() { &["--list", "a"], 0, str![[r#" -cat: test -bear: test +passed: test +failed: test +later_passed: test +ignore_failed: test +ignore_passed: test +later_ignore_failed: test +later_ignore_passed: test +ignore_attribute: test +ignore_attribute_reason: test -2 tests +9 tests "#]], str![[r#" -cat: test -bear: test +passed: test +failed: test +later_passed: test +ignore_failed: test +ignore_passed: test +later_ignore_failed: test +later_ignore_passed: test +ignore_attribute: test +ignore_attribute_reason: test -2 tests +9 tests "#]], @@ -372,23 +416,30 @@ bear: test #[test] fn list_with_specified_order() { check( - &["--list", "--exact", "owl", "fox", "bunny", "frog"], + &[ + "--list", + "--exact", + "later_passed", + "failed", + "passed", + "ignore_passed", + ], 0, str![[r#" -fox: test -bunny: test -frog: test -owl: test +passed: test +failed: test +later_passed: test +ignore_passed: test 4 tests "#]], str![[r#" -fox: test -bunny: test -frog: test -owl: test +passed: test +failed: test +later_passed: test +ignore_passed: test 4 tests @@ -398,53 +449,93 @@ owl: test } #[test] -fn filter_c() { +fn include_ignored_normal() { check( - &["a"], - 0, + &["--include-ignored"], + 101, str![[r#" -running 2 tests -test bear ... ignored -test cat ... ok +running 11 tests +test cfg_in ... ok +test custom_error ... FAILED +test failed ... FAILED +test ignore_attribute ... FAILED +test ignore_attribute_reason ... FAILED +test ignore_failed ... FAILED +test ignore_passed ... ok +test later_ignore_failed ... FAILED +test later_ignore_passed ... ok +test later_passed ... ok +test passed ... ok -test result: ok. 1 passed; 0 failed; 1 ignored; 9 filtered out; finished in [..]s +failures: +---- custom_error ---- +I failed -"#]], - str![[r#" +---- failed ---- +was not a good boy -running 2 tests -... +---- ignore_attribute ---- +got lost blindly following the flock -test result: ok. 1 passed; 0 failed; 1 ignored; 9 filtered out; finished in [..]s +---- ignore_attribute_reason ---- +no honey +---- ignore_failed ---- +jumped too high -"#]], - ); -} +---- later_ignore_failed ---- +broke neck -#[test] -fn filter_o_test() { - check( - &["--test", "a"], - 0, - str![[r#" -running 2 tests -test bear ... ignored -test cat ... ok +failures: + custom_error + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: ok. 1 passed; 0 failed; 1 ignored; 9 filtered out; finished in [..]s +test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s "#]], str![[r#" -running 2 tests +running 11 tests ... -test result: ok. 1 passed; 0 failed; 1 ignored; 9 filtered out; finished in [..]s +failures: + +---- custom_error ---- +I failed + +---- failed ---- +was not a good boy + +---- ignore_attribute ---- +got lost blindly following the flock + +---- ignore_attribute_reason ---- +no honey + +---- ignore_failed ---- +jumped too high + +---- later_ignore_failed ---- +broke neck + + +failures: + custom_error + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed + +test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s "#]], @@ -452,64 +543,83 @@ test result: ok. 1 passed; 0 failed; 1 ignored; 9 filtered out; finished in [..] } #[test] -fn filter_o_test_include_ignored() { +fn include_ignored_test_filter() { check( - &["--test", "--include-ignored", "o"], + &["--test", "--include-ignored", "a"], 101, str![[r#" -running 6 tests -test custom_error ... FAILED -test dog ... FAILED -test fox ... ok -test frog ... ok -test horse ... ok -test owl ... FAILED +running 9 tests +test failed ... FAILED +test ignore_attribute ... FAILED +test ignore_attribute_reason ... FAILED +test ignore_failed ... FAILED +test ignore_passed ... ok +test later_ignore_failed ... FAILED +test later_ignore_passed ... ok +test later_passed ... ok +test passed ... ok failures: ----- custom_error ---- -I failed - ----- dog ---- +---- failed ---- was not a good boy ----- owl ---- +---- ignore_attribute ---- +got lost blindly following the flock + +---- ignore_attribute_reason ---- +no honey + +---- ignore_failed ---- +jumped too high + +---- later_ignore_failed ---- broke neck failures: - custom_error - dog - owl + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: FAILED. 3 passed; 3 failed; 0 ignored; 5 filtered out; finished in [..]s +test result: FAILED. 4 passed; 5 failed; 0 ignored; 2 filtered out; finished in [..]s "#]], str![[r#" -running 6 tests +running 9 tests ... failures: ----- custom_error ---- -I failed - ----- dog ---- +---- failed ---- was not a good boy ----- owl ---- +---- ignore_attribute ---- +got lost blindly following the flock + +---- ignore_attribute_reason ---- +no honey + +---- ignore_failed ---- +jumped too high + +---- later_ignore_failed ---- broke neck failures: - custom_error - dog - owl + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: FAILED. 3 passed; 3 failed; 0 ignored; 5 filtered out; finished in [..]s +test result: FAILED. 4 passed; 5 failed; 0 ignored; 2 filtered out; finished in [..]s "#]], @@ -517,44 +627,61 @@ test result: FAILED. 3 passed; 3 failed; 0 ignored; 5 filtered out; finished in } #[test] -fn filter_o_test_ignored() { +fn ignored_normal() { check( - &["--test", "--ignored", "o"], + &["--ignored"], 101, str![[r#" -running 6 tests -test custom_error ... FAILED -test dog ... FAILED -test fox ... ok -test frog ... ok -test horse ... ok -test owl ... FAILED +running 11 tests +test cfg_in ... ok +test custom_error ... FAILED +test failed ... FAILED +test ignore_attribute ... FAILED +test ignore_attribute_reason ... FAILED +test ignore_failed ... FAILED +test ignore_passed ... ok +test later_ignore_failed ... FAILED +test later_ignore_passed ... ok +test later_passed ... ok +test passed ... ok failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy ----- owl ---- +---- ignore_attribute ---- +got lost blindly following the flock + +---- ignore_attribute_reason ---- +no honey + +---- ignore_failed ---- +jumped too high + +---- later_ignore_failed ---- broke neck failures: custom_error - dog - owl + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: FAILED. 3 passed; 3 failed; 0 ignored; 5 filtered out; finished in [..]s +test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s "#]], str![[r#" -running 6 tests +running 11 tests ... failures: @@ -562,19 +689,31 @@ failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy ----- owl ---- +---- ignore_attribute ---- +got lost blindly following the flock + +---- ignore_attribute_reason ---- +no honey + +---- ignore_failed ---- +jumped too high + +---- later_ignore_failed ---- broke neck failures: custom_error - dog - owl + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: FAILED. 3 passed; 3 failed; 0 ignored; 5 filtered out; finished in [..]s +test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s "#]], @@ -582,93 +721,83 @@ test result: FAILED. 3 passed; 3 failed; 0 ignored; 5 filtered out; finished in } #[test] -fn normal_include_ignored() { +fn ignored_test_filter() { check( - &["--include-ignored"], + &["--test", "--ignored", "a"], 101, str![[r#" -running 11 tests -test bear ... FAILED -test bunny ... FAILED -test cat ... ok -test custom_error ... FAILED -test dog ... FAILED -test fly ... ok -test fox ... ok -test frog ... ok -test horse ... ok -test owl ... FAILED -test sheep ... FAILED +running 9 tests +test failed ... FAILED +test ignore_attribute ... FAILED +test ignore_attribute_reason ... FAILED +test ignore_failed ... FAILED +test ignore_passed ... ok +test later_ignore_failed ... FAILED +test later_ignore_passed ... ok +test later_passed ... ok +test passed ... ok failures: ----- bear ---- -no honey +---- failed ---- +was not a good boy ----- bunny ---- -jumped too high +---- ignore_attribute ---- +got lost blindly following the flock ----- custom_error ---- -I failed +---- ignore_attribute_reason ---- +no honey ----- dog ---- -was not a good boy +---- ignore_failed ---- +jumped too high ----- owl ---- +---- later_ignore_failed ---- broke neck ----- sheep ---- -got lost blindly following the flock - failures: - bear - bunny - custom_error - dog - owl - sheep + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 4 passed; 5 failed; 0 ignored; 2 filtered out; finished in [..]s "#]], str![[r#" -running 11 tests +running 9 tests ... failures: ----- bear ---- -no honey +---- failed ---- +was not a good boy ----- bunny ---- -jumped too high +---- ignore_attribute ---- +got lost blindly following the flock ----- custom_error ---- -I failed +---- ignore_attribute_reason ---- +no honey ----- dog ---- -was not a good boy +---- ignore_failed ---- +jumped too high ----- owl ---- +---- later_ignore_failed ---- broke neck ----- sheep ---- -got lost blindly following the flock - failures: - bear - bunny - custom_error - dog - owl - sheep + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 4 passed; 5 failed; 0 ignored; 2 filtered out; finished in [..]s "#]], @@ -676,93 +805,43 @@ test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in } #[test] -fn normal_ignored() { +fn lots_of_flags() { check( - &["--ignored"], + &["--ignored", "--skip", "g", "--test", "o"], 101, str![[r#" -running 11 tests -test bear ... FAILED -test bunny ... FAILED -test cat ... ok +running 1 test test custom_error ... FAILED -test dog ... FAILED -test fly ... ok -test fox ... ok -test frog ... ok -test horse ... ok -test owl ... FAILED -test sheep ... FAILED failures: ----- bear ---- -no honey - ----- bunny ---- -jumped too high - ---- custom_error ---- I failed ----- dog ---- -was not a good boy - ----- owl ---- -broke neck - ----- sheep ---- -got lost blindly following the flock - failures: - bear - bunny custom_error - dog - owl - sheep -test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 0 passed; 1 failed; 0 ignored; 10 filtered out; finished in [..]s "#]], str![[r#" -running 11 tests +running 1 test ... failures: ----- bear ---- -no honey - ----- bunny ---- -jumped too high - ---- custom_error ---- I failed ----- dog ---- -was not a good boy - ----- owl ---- -broke neck - ----- sheep ---- -got lost blindly following the flock - failures: - bear - bunny custom_error - dog - owl - sheep -test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 0 passed; 1 failed; 0 ignored; 10 filtered out; finished in [..]s "#]], @@ -770,54 +849,49 @@ test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in } #[test] -fn lots_of_flags() { +fn terse_output() { check( - &["--ignored", "--skip", "g", "--test", "o"], + &["--quiet"], 101, str![[r#" -running 4 tests -test custom_error ... FAILED -test fox ... ok -test horse ... ok -test owl ... FAILED - +running 11 tests +.FFiiiiii.. failures: ---- custom_error ---- I failed ----- owl ---- -broke neck +---- failed ---- +was not a good boy failures: custom_error - owl + failed -test result: FAILED. 2 passed; 2 failed; 0 ignored; 7 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], str![[r#" -running 4 tests +running 11 tests ... - failures: ---- custom_error ---- I failed ----- owl ---- -broke neck +---- failed ---- +was not a good boy failures: custom_error - owl + failed -test result: FAILED. 2 passed; 2 failed; 0 ignored; 7 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], @@ -825,7 +899,7 @@ test result: FAILED. 2 passed; 2 failed; 0 ignored; 7 filtered out; finished in } #[test] -fn list_json() { +fn json_list() { check( &["-Zunstable-options", "--format=json", "--list", "a"], 0, @@ -838,65 +912,58 @@ fn list_json() { { "elapsed_s": "[..]", "event": "discover_case", - "name": "cat" + "name": "passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "dog", - "selected": false + "name": "failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fox", + "name": "custom_error", "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bunny", - "selected": false + "name": "later_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "frog", - "selected": false + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "owl", - "selected": false + "name": "ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fly", - "selected": false + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bear" + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "sheep", - "selected": false + "name": "ignore_attribute" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "horse", - "selected": false + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "custom_error", + "name": "cfg_in", "selected": false }, { @@ -916,65 +983,58 @@ fn list_json() { { "elapsed_s": "[..]", "event": "discover_case", - "name": "cat" + "name": "passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "dog", - "selected": false + "name": "failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fox", + "name": "custom_error", "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bunny", - "selected": false + "name": "later_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "frog", - "selected": false + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "owl", - "selected": false + "name": "ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fly", - "selected": false + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bear" + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "sheep", - "selected": false + "name": "ignore_attribute" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "horse", - "selected": false + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "custom_error", + "name": "cfg_in", "selected": false }, { @@ -989,10 +1049,10 @@ fn list_json() { } #[test] -fn test_json() { +fn json_filter() { check( &["-Zunstable-options", "--format=json", "a"], - 0, + 101, str![[r#" [ { @@ -1002,65 +1062,58 @@ fn test_json() { { "elapsed_s": "[..]", "event": "discover_case", - "name": "cat" + "name": "passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "dog", - "selected": false + "name": "failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fox", + "name": "custom_error", "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bunny", - "selected": false + "name": "later_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "frog", - "selected": false + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "owl", - "selected": false + "name": "ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fly", - "selected": false + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bear" + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "sheep", - "selected": false + "name": "ignore_attribute" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "horse", - "selected": false + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "custom_error", + "name": "cfg_in", "selected": false }, { @@ -1074,355 +1127,453 @@ fn test_json() { { "elapsed_s": "[..]", "event": "case_start", - "name": "bear" + "name": "failed" }, { "elapsed_s": "[..]", "event": "case_message", - "kind": "ignored", - "message": "fails", - "name": "bear" + "kind": "error", + "message": "was not a good boy", + "name": "failed" }, { "elapsed_s": "[..]", "event": "case_complete", - "name": "bear" + "name": "failed" }, { "elapsed_s": "[..]", "event": "case_start", - "name": "cat" + "name": "ignore_attribute" }, { "elapsed_s": "[..]", - "event": "case_complete", - "name": "cat" + "event": "case_message", + "kind": "ignored", + "name": "ignore_attribute" }, { "elapsed_s": "[..]", - "event": "run_complete" - } -] -"#]] - .is_json() - .against_jsonlines(), - str![[r#" -[ + "event": "case_complete", + "name": "ignore_attribute" + }, { "elapsed_s": "[..]", - "event": "discover_complete" + "event": "case_start", + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", - "event": "case_complete", - "name": "cat" + "event": "case_message", + "kind": "ignored", + "message": "fails", + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", - "event": "discover_start" + "event": "case_complete", + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "bear" + "event": "case_start", + "name": "ignore_failed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "cat" + "event": "case_message", + "kind": "ignored", + "message": "fails", + "name": "ignore_failed" }, { "elapsed_s": "[..]", - "event": "case_start", - "name": "bear" + "event": "case_complete", + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "case_start", - "name": "cat" + "name": "ignore_passed" }, { "elapsed_s": "[..]", - "event": "run_start" + "event": "case_message", + "kind": "ignored", + "message": "slow", + "name": "ignore_passed" }, { "elapsed_s": "[..]", - "event": "run_complete" + "event": "case_complete", + "name": "ignore_passed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "bunny", - "selected": false + "event": "case_start", + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "dog", - "selected": false + "event": "case_message", + "kind": "ignored", + "message": "fails", + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "fly", - "selected": false + "event": "case_complete", + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "fox", - "selected": false + "event": "case_start", + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "frog", - "selected": false + "event": "case_message", + "kind": "ignored", + "message": "fails", + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "owl", - "selected": false + "event": "case_complete", + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", - "event": "case_complete", - "name": "bear" + "event": "case_start", + "name": "later_passed" }, { "elapsed_s": "[..]", - "event": "case_message", - "kind": "ignored", - "message": "fails", - "name": "bear" + "event": "case_complete", + "name": "later_passed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "sheep", - "selected": false + "event": "case_start", + "name": "passed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "horse", - "selected": false + "event": "case_complete", + "name": "passed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "custom_error", - "selected": false + "event": "run_complete" } ] "#]] - .unordered() .is_json() .against_jsonlines(), - ); -} - -#[test] -fn terse_output() { - check( - &["--quiet"], - 101, - str![[r#" - -running 11 tests -ii.FFi.iiii -failures: - ----- custom_error ---- -I failed - ----- dog ---- -was not a good boy - - -failures: - custom_error - dog - -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s - - -"#]], - str![[r#" - -running 11 tests -... -failures: - ----- custom_error ---- -I failed - ----- dog ---- -was not a good boy - - -failures: - custom_error - dog - -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s - - -"#]], - ); -} - -#[test] -fn fail_fast() { - check( - &["--fail-fast"], - 101, - str![[r#" - -running 11 tests -test bear ... ignored -test bunny ... ignored -test cat ... ok -test custom_error ... FAILED - -failures: - ----- custom_error ---- -I failed - - -failures: - custom_error - -test result: FAILED. 1 passed; 1 failed; 2 ignored; 0 filtered out; finished in [..]s - - -"#]], - str![[r#" -... - -"#]], - ); -} - -#[test] -fn fail_fast_json() { - check( - &["-Zunstable-options", "--format=json", "--fail-fast"], - 101, str![[r#" [ + { + "elapsed_s": "[..]", + "event": "discover_complete" + }, { "elapsed_s": "[..]", "event": "discover_start" }, + { + "elapsed_s": "[..]", + "event": "run_start" + }, + { + "elapsed_s": "[..]", + "event": "run_complete" + }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "cat" + "name": "custom_error", + "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "dog" + "name": "cfg_in", + "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fox" + "name": "failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bunny" + "name": "ignore_attribute" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "frog" + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "owl" + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fly" + "name": "ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bear" + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "sheep" + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "horse" + "name": "later_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "custom_error" + "name": "passed" }, { "elapsed_s": "[..]", - "event": "discover_complete" + "event": "case_start", + "name": "failed" }, { "elapsed_s": "[..]", - "event": "run_start" + "event": "case_start", + "name": "ignore_attribute" + }, + { + "elapsed_s": "[..]", + "event": "case_message", + "kind": "ignored", + "name": "ignore_attribute" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "ignore_attribute" + }, + { + "elapsed_s": "[..]", + "event": "case_message", + "kind": "error", + "message": "was not a good boy", + "name": "failed" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "failed" + }, + { + "elapsed_s": "[..]", + "event": "case_start", + "name": "ignore_failed" + }, + { + "elapsed_s": "[..]", + "event": "case_start", + "name": "ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "case_message", + "kind": "ignored", + "message": "slow", + "name": "ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "case_start", + "name": "ignore_attribute_reason" + }, + { + "elapsed_s": "[..]", + "event": "case_message", + "kind": "ignored", + "message": "fails", + "name": "ignore_attribute_reason" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "ignore_attribute_reason" + }, + { + "elapsed_s": "[..]", + "event": "case_start", + "name": "passed" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "passed" }, { "elapsed_s": "[..]", "event": "case_start", - "name": "bear" + "name": "later_passed" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "later_passed" }, { "elapsed_s": "[..]", "event": "case_message", "kind": "ignored", "message": "fails", - "name": "bear" + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "case_complete", - "name": "bear" + "name": "ignore_failed" + }, + { + "elapsed_s": "[..]", + "event": "case_start", + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", "event": "case_start", - "name": "bunny" + "name": "later_ignore_failed" + }, + { + "elapsed_s": "[..]", + "event": "case_message", + "kind": "ignored", + "message": "fails", + "name": "later_ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", "event": "case_message", "kind": "ignored", "message": "fails", - "name": "bunny" + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", "event": "case_complete", - "name": "bunny" + "name": "later_ignore_failed" + } +] +"#]] + .unordered() + .is_json() + .against_jsonlines(), + ); +} + +#[test] +fn json_fail_fast() { + check( + &["-Zunstable-options", "--format=json", "--fail-fast"], + 101, + str![[r#" +[ + { + "elapsed_s": "[..]", + "event": "discover_start" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "passed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "failed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "custom_error" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "later_passed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "ignore_failed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "later_ignore_failed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "later_ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "ignore_attribute" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "ignore_attribute_reason" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "cfg_in" + }, + { + "elapsed_s": "[..]", + "event": "discover_complete" + }, + { + "elapsed_s": "[..]", + "event": "run_start" }, { "elapsed_s": "[..]", "event": "case_start", - "name": "cat" + "name": "cfg_in" }, { "elapsed_s": "[..]", "event": "case_complete", - "name": "cat" + "name": "cfg_in" }, { "elapsed_s": "[..]", diff --git a/crates/libtest2/tests/testsuite/mixed_bag.rs b/crates/libtest2/tests/testsuite/mixed_bag.rs index e089c88..631058e 100644 --- a/crates/libtest2/tests/testsuite/mixed_bag.rs +++ b/crates/libtest2/tests/testsuite/mixed_bag.rs @@ -11,68 +11,67 @@ fn test_cmd() -> snapbox::cmd::Command { fn main() {} #[libtest2::test] -fn cat(_context: &libtest2::TestContext) { +fn passed(_context: &libtest2::TestContext) { } #[libtest2::test] -fn dog(_context: &libtest2::TestContext) -> libtest2::RunResult { +fn failed(_context: &libtest2::TestContext) -> libtest2::RunResult { Err(libtest2::RunError::fail("was not a good boy")) } #[libtest2::test] -fn fox(_context: &libtest2::TestContext) { +fn custom_error(context: &libtest2::TestContext) -> std::io::Result<()> { + Err(std::io::Error::new(std::io::ErrorKind::Other, "I failed")) +} + +#[libtest2::test] +fn later_passed(_context: &libtest2::TestContext) { } #[libtest2::test] -fn bunny(context: &libtest2::TestContext) -> libtest2::RunResult { +fn ignore_failed(context: &libtest2::TestContext) -> libtest2::RunResult { context.ignore_for("fails")?; Err(libtest2::RunError::fail("jumped too high")) } #[libtest2::test] -fn frog(context: &libtest2::TestContext) -> libtest2::RunResult { +fn ignore_passed(context: &libtest2::TestContext) -> libtest2::RunResult { context.ignore_for("slow")?; Ok(()) } #[libtest2::test] -fn owl(context: &libtest2::TestContext) -> libtest2::RunResult { +fn later_ignore_failed(context: &libtest2::TestContext) -> libtest2::RunResult { context.ignore_for("fails")?; Err(libtest2::RunError::fail("broke neck")) } #[libtest2::test] -fn fly(context: &libtest2::TestContext) -> libtest2::RunResult { +fn later_ignore_passed(context: &libtest2::TestContext) -> libtest2::RunResult { context.ignore_for("fails")?; Ok(()) } -#[libtest2::test] -#[ignore = "fails"] -fn bear(context: &libtest2::TestContext) -> libtest2::RunResult { - Err(libtest2::RunError::fail("no honey")) -} - #[libtest2::test] #[ignore] -fn sheep(context: &libtest2::TestContext) -> libtest2::RunResult { +fn ignore_attribute(context: &libtest2::TestContext) -> libtest2::RunResult { Err(libtest2::RunError::fail("got lost blindly following the flock")) } #[libtest2::test] -#[cfg(all())] -#[ignore = "slow"] -fn horse(context: &libtest2::TestContext) { +#[ignore = "fails"] +fn ignore_attribute_reason(context: &libtest2::TestContext) -> libtest2::RunResult { + Err(libtest2::RunError::fail("no honey")) } #[libtest2::test] -fn custom_error(context: &libtest2::TestContext) -> std::io::Result<()> { - Err(std::io::Error::new(std::io::ErrorKind::Other, "I failed")) +#[cfg(all())] +fn cfg_in(context: &libtest2::TestContext) { } #[libtest2::test] #[cfg(any())] -fn unicorn(context: &libtest2::TestContext) { +fn cfged_out(context: &libtest2::TestContext) { panic!("I don't exist"); } "#, @@ -106,32 +105,32 @@ fn normal() { str![[r#" running 11 tests -test bear ... ignored -test bunny ... ignored -test cat ... ok -test custom_error ... FAILED -test dog ... FAILED -test fly ... ignored -test fox ... ok -test frog ... ignored -test horse ... ignored -test owl ... ignored -test sheep ... ignored +test cfg_in ... ok +test custom_error ... FAILED +test failed ... FAILED +test ignore_attribute ... ignored +test ignore_attribute_reason ... ignored +test ignore_failed ... ignored +test ignore_passed ... ignored +test later_ignore_failed ... ignored +test later_ignore_passed ... ignored +test later_passed ... ok +test passed ... ok failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy failures: custom_error - dog + failed -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], @@ -145,16 +144,47 @@ failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy failures: custom_error - dog + failed + +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s + + +"#]], + ); +} + +#[test] +fn fail_fast() { + check( + &["--fail-fast"], + 101, + str![[r#" + +running 11 tests +test cfg_in ... ok +test custom_error ... FAILED + +failures: + +---- custom_error ---- +I failed + + +failures: + custom_error + +test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 filtered out; finished in [..]s -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s +"#]], + str![[r#" +... "#]], ); @@ -168,32 +198,32 @@ fn test_mode() { str![[r#" running 11 tests -test bear ... ignored -test bunny ... ignored -test cat ... ok -test custom_error ... FAILED -test dog ... FAILED -test fly ... ignored -test fox ... ok -test frog ... ignored -test horse ... ignored -test owl ... ignored -test sheep ... ignored +test cfg_in ... ok +test custom_error ... FAILED +test failed ... FAILED +test ignore_attribute ... ignored +test ignore_attribute_reason ... ignored +test ignore_failed ... ignored +test ignore_passed ... ignored +test later_ignore_failed ... ignored +test later_ignore_passed ... ignored +test later_passed ... ok +test passed ... ok failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy failures: custom_error - dog + failed -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], @@ -207,15 +237,15 @@ failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy failures: custom_error - dog + failed -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], @@ -230,32 +260,32 @@ fn bench_mode() { str![[r#" running 11 tests -test bear ... ignored -test bunny ... ignored -test cat ... ok -test custom_error ... FAILED -test dog ... FAILED -test fly ... ignored -test fox ... ok -test frog ... ignored -test horse ... ignored -test owl ... ignored -test sheep ... ignored +test cfg_in ... ok +test custom_error ... FAILED +test failed ... FAILED +test ignore_attribute ... ignored +test ignore_attribute_reason ... ignored +test ignore_failed ... ignored +test ignore_passed ... ignored +test later_ignore_failed ... ignored +test later_ignore_passed ... ignored +test later_passed ... ok +test passed ... ok failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy failures: custom_error - dog + failed -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], @@ -269,15 +299,15 @@ failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy failures: custom_error - dog + failed -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], @@ -290,34 +320,34 @@ fn list() { &["--list"], 0, str![[r#" -bear: test -bunny: test -cat: test +cfg_in: test custom_error: test -dog: test -fly: test -fox: test -frog: test -horse: test -owl: test -sheep: test +failed: test +ignore_attribute: test +ignore_attribute_reason: test +ignore_failed: test +ignore_passed: test +later_ignore_failed: test +later_ignore_passed: test +later_passed: test +passed: test 11 tests "#]], str![[r#" -bear: test -bunny: test -cat: test +cfg_in: test custom_error: test -dog: test -fly: test -fox: test -frog: test -horse: test -owl: test -sheep: test +failed: test +ignore_attribute: test +ignore_attribute_reason: test +ignore_failed: test +ignore_passed: test +later_ignore_failed: test +later_ignore_passed: test +later_passed: test +passed: test 11 tests @@ -332,34 +362,34 @@ fn list_ignored() { &["--list", "--ignored"], 0, str![[r#" -bear: test -bunny: test -cat: test +cfg_in: test custom_error: test -dog: test -fly: test -fox: test -frog: test -horse: test -owl: test -sheep: test +failed: test +ignore_attribute: test +ignore_attribute_reason: test +ignore_failed: test +ignore_passed: test +later_ignore_failed: test +later_ignore_passed: test +later_passed: test +passed: test 11 tests "#]], str![[r#" -bear: test -bunny: test -cat: test +cfg_in: test custom_error: test -dog: test -fly: test -fox: test -frog: test -horse: test -owl: test -sheep: test +failed: test +ignore_attribute: test +ignore_attribute_reason: test +ignore_failed: test +ignore_passed: test +later_ignore_failed: test +later_ignore_passed: test +later_passed: test +passed: test 11 tests @@ -374,18 +404,32 @@ fn list_with_filter() { &["--list", "a"], 0, str![[r#" -bear: test -cat: test +failed: test +ignore_attribute: test +ignore_attribute_reason: test +ignore_failed: test +ignore_passed: test +later_ignore_failed: test +later_ignore_passed: test +later_passed: test +passed: test -2 tests +9 tests "#]], str![[r#" -bear: test -cat: test +failed: test +ignore_attribute: test +ignore_attribute_reason: test +ignore_failed: test +ignore_passed: test +later_ignore_failed: test +later_ignore_passed: test +later_passed: test +passed: test -2 tests +9 tests "#]], @@ -395,23 +439,30 @@ cat: test #[test] fn list_with_specified_order() { check( - &["--list", "--exact", "owl", "fox", "bunny", "frog"], + &[ + "--list", + "--exact", + "later_passed", + "failed", + "passed", + "ignore_passed", + ], 0, str![[r#" -bunny: test -fox: test -frog: test -owl: test +failed: test +ignore_passed: test +later_passed: test +passed: test 4 tests "#]], str![[r#" -bunny: test -fox: test -frog: test -owl: test +failed: test +ignore_passed: test +later_passed: test +passed: test 4 tests @@ -421,53 +472,93 @@ owl: test } #[test] -fn filter_c() { +fn include_ignored_normal() { check( - &["a"], - 0, + &["--include-ignored"], + 101, str![[r#" -running 2 tests -test bear ... ignored -test cat ... ok +running 11 tests +test cfg_in ... ok +test custom_error ... FAILED +test failed ... FAILED +test ignore_attribute ... FAILED +test ignore_attribute_reason ... FAILED +test ignore_failed ... FAILED +test ignore_passed ... ok +test later_ignore_failed ... FAILED +test later_ignore_passed ... ok +test later_passed ... ok +test passed ... ok -test result: ok. 1 passed; 0 failed; 1 ignored; 9 filtered out; finished in [..]s +failures: +---- custom_error ---- +I failed -"#]], - str![[r#" +---- failed ---- +was not a good boy -running 2 tests -... +---- ignore_attribute ---- +got lost blindly following the flock -test result: ok. 1 passed; 0 failed; 1 ignored; 9 filtered out; finished in [..]s +---- ignore_attribute_reason ---- +no honey +---- ignore_failed ---- +jumped too high -"#]], - ); -} +---- later_ignore_failed ---- +broke neck -#[test] -fn filter_o_test() { - check( - &["--test", "a"], - 0, - str![[r#" -running 2 tests -test bear ... ignored -test cat ... ok +failures: + custom_error + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: ok. 1 passed; 0 failed; 1 ignored; 9 filtered out; finished in [..]s +test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s "#]], str![[r#" -running 2 tests +running 11 tests ... -test result: ok. 1 passed; 0 failed; 1 ignored; 9 filtered out; finished in [..]s +failures: + +---- custom_error ---- +I failed + +---- failed ---- +was not a good boy + +---- ignore_attribute ---- +got lost blindly following the flock + +---- ignore_attribute_reason ---- +no honey + +---- ignore_failed ---- +jumped too high + +---- later_ignore_failed ---- +broke neck + + +failures: + custom_error + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed + +test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s "#]], @@ -475,64 +566,83 @@ test result: ok. 1 passed; 0 failed; 1 ignored; 9 filtered out; finished in [..] } #[test] -fn filter_o_test_include_ignored() { +fn include_ignored_test_filter() { check( - &["--test", "--include-ignored", "o"], + &["--test", "--include-ignored", "a"], 101, str![[r#" -running 6 tests -test custom_error ... FAILED -test dog ... FAILED -test fox ... ok -test frog ... ok -test horse ... ok -test owl ... FAILED +running 9 tests +test failed ... FAILED +test ignore_attribute ... FAILED +test ignore_attribute_reason ... FAILED +test ignore_failed ... FAILED +test ignore_passed ... ok +test later_ignore_failed ... FAILED +test later_ignore_passed ... ok +test later_passed ... ok +test passed ... ok failures: ----- custom_error ---- -I failed - ----- dog ---- +---- failed ---- was not a good boy ----- owl ---- +---- ignore_attribute ---- +got lost blindly following the flock + +---- ignore_attribute_reason ---- +no honey + +---- ignore_failed ---- +jumped too high + +---- later_ignore_failed ---- broke neck failures: - custom_error - dog - owl + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: FAILED. 3 passed; 3 failed; 0 ignored; 5 filtered out; finished in [..]s +test result: FAILED. 4 passed; 5 failed; 0 ignored; 2 filtered out; finished in [..]s "#]], str![[r#" -running 6 tests +running 9 tests ... failures: ----- custom_error ---- -I failed - ----- dog ---- +---- failed ---- was not a good boy ----- owl ---- +---- ignore_attribute ---- +got lost blindly following the flock + +---- ignore_attribute_reason ---- +no honey + +---- ignore_failed ---- +jumped too high + +---- later_ignore_failed ---- broke neck failures: - custom_error - dog - owl + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: FAILED. 3 passed; 3 failed; 0 ignored; 5 filtered out; finished in [..]s +test result: FAILED. 4 passed; 5 failed; 0 ignored; 2 filtered out; finished in [..]s "#]], @@ -540,44 +650,61 @@ test result: FAILED. 3 passed; 3 failed; 0 ignored; 5 filtered out; finished in } #[test] -fn filter_o_test_ignored() { +fn ignored_normal() { check( - &["--test", "--ignored", "o"], + &["--ignored"], 101, str![[r#" -running 6 tests -test custom_error ... FAILED -test dog ... FAILED -test fox ... ok -test frog ... ok -test horse ... ok -test owl ... FAILED +running 11 tests +test cfg_in ... ok +test custom_error ... FAILED +test failed ... FAILED +test ignore_attribute ... FAILED +test ignore_attribute_reason ... FAILED +test ignore_failed ... FAILED +test ignore_passed ... ok +test later_ignore_failed ... FAILED +test later_ignore_passed ... ok +test later_passed ... ok +test passed ... ok failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy ----- owl ---- +---- ignore_attribute ---- +got lost blindly following the flock + +---- ignore_attribute_reason ---- +no honey + +---- ignore_failed ---- +jumped too high + +---- later_ignore_failed ---- broke neck failures: custom_error - dog - owl + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: FAILED. 3 passed; 3 failed; 0 ignored; 5 filtered out; finished in [..]s +test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s "#]], str![[r#" -running 6 tests +running 11 tests ... failures: @@ -585,19 +712,31 @@ failures: ---- custom_error ---- I failed ----- dog ---- +---- failed ---- was not a good boy ----- owl ---- +---- ignore_attribute ---- +got lost blindly following the flock + +---- ignore_attribute_reason ---- +no honey + +---- ignore_failed ---- +jumped too high + +---- later_ignore_failed ---- broke neck failures: custom_error - dog - owl + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: FAILED. 3 passed; 3 failed; 0 ignored; 5 filtered out; finished in [..]s +test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s "#]], @@ -605,93 +744,83 @@ test result: FAILED. 3 passed; 3 failed; 0 ignored; 5 filtered out; finished in } #[test] -fn normal_include_ignored() { +fn ignored_test_filter() { check( - &["--include-ignored"], + &["--test", "--ignored", "a"], 101, str![[r#" -running 11 tests -test bear ... FAILED -test bunny ... FAILED -test cat ... ok -test custom_error ... FAILED -test dog ... FAILED -test fly ... ok -test fox ... ok -test frog ... ok -test horse ... ok -test owl ... FAILED -test sheep ... FAILED +running 9 tests +test failed ... FAILED +test ignore_attribute ... FAILED +test ignore_attribute_reason ... FAILED +test ignore_failed ... FAILED +test ignore_passed ... ok +test later_ignore_failed ... FAILED +test later_ignore_passed ... ok +test later_passed ... ok +test passed ... ok failures: ----- bear ---- -no honey +---- failed ---- +was not a good boy ----- bunny ---- -jumped too high +---- ignore_attribute ---- +got lost blindly following the flock ----- custom_error ---- -I failed +---- ignore_attribute_reason ---- +no honey ----- dog ---- -was not a good boy +---- ignore_failed ---- +jumped too high ----- owl ---- +---- later_ignore_failed ---- broke neck ----- sheep ---- -got lost blindly following the flock - failures: - bear - bunny - custom_error - dog - owl - sheep + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 4 passed; 5 failed; 0 ignored; 2 filtered out; finished in [..]s "#]], str![[r#" -running 11 tests +running 9 tests ... failures: ----- bear ---- -no honey +---- failed ---- +was not a good boy ----- bunny ---- -jumped too high +---- ignore_attribute ---- +got lost blindly following the flock ----- custom_error ---- -I failed +---- ignore_attribute_reason ---- +no honey ----- dog ---- -was not a good boy +---- ignore_failed ---- +jumped too high ----- owl ---- +---- later_ignore_failed ---- broke neck ----- sheep ---- -got lost blindly following the flock - failures: - bear - bunny - custom_error - dog - owl - sheep + failed + ignore_attribute + ignore_attribute_reason + ignore_failed + later_ignore_failed -test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 4 passed; 5 failed; 0 ignored; 2 filtered out; finished in [..]s "#]], @@ -699,93 +828,43 @@ test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in } #[test] -fn normal_ignored() { +fn lots_of_flags() { check( - &["--ignored"], + &["--ignored", "--skip", "g", "--test", "o"], 101, str![[r#" -running 11 tests -test bear ... FAILED -test bunny ... FAILED -test cat ... ok +running 1 test test custom_error ... FAILED -test dog ... FAILED -test fly ... ok -test fox ... ok -test frog ... ok -test horse ... ok -test owl ... FAILED -test sheep ... FAILED failures: ----- bear ---- -no honey - ----- bunny ---- -jumped too high - ---- custom_error ---- I failed ----- dog ---- -was not a good boy - ----- owl ---- -broke neck - ----- sheep ---- -got lost blindly following the flock - failures: - bear - bunny custom_error - dog - owl - sheep -test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 0 passed; 1 failed; 0 ignored; 10 filtered out; finished in [..]s "#]], str![[r#" -running 11 tests +running 1 test ... failures: ----- bear ---- -no honey - ----- bunny ---- -jumped too high - ---- custom_error ---- I failed ----- dog ---- -was not a good boy - ----- owl ---- -broke neck - ----- sheep ---- -got lost blindly following the flock - failures: - bear - bunny custom_error - dog - owl - sheep -test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in [..]s +test result: FAILED. 0 passed; 1 failed; 0 ignored; 10 filtered out; finished in [..]s "#]], @@ -793,54 +872,49 @@ test result: FAILED. 5 passed; 6 failed; 0 ignored; 0 filtered out; finished in } #[test] -fn lots_of_flags() { +fn terse_output() { check( - &["--ignored", "--skip", "g", "--test", "o"], + &["--quiet"], 101, str![[r#" -running 4 tests -test custom_error ... FAILED -test fox ... ok -test horse ... ok -test owl ... FAILED - +running 11 tests +.FFiiiiii.. failures: ---- custom_error ---- I failed ----- owl ---- -broke neck +---- failed ---- +was not a good boy failures: custom_error - owl + failed -test result: FAILED. 2 passed; 2 failed; 0 ignored; 7 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], str![[r#" -running 4 tests +running 11 tests ... - failures: ---- custom_error ---- I failed ----- owl ---- -broke neck +---- failed ---- +was not a good boy failures: custom_error - owl + failed -test result: FAILED. 2 passed; 2 failed; 0 ignored; 7 filtered out; finished in [..]s +test result: FAILED. 3 passed; 2 failed; 6 ignored; 0 filtered out; finished in [..]s "#]], @@ -848,7 +922,7 @@ test result: FAILED. 2 passed; 2 failed; 0 ignored; 7 filtered out; finished in } #[test] -fn list_json() { +fn json_list() { check( &["-Zunstable-options", "--format=json", "--list", "a"], 0, @@ -861,66 +935,59 @@ fn list_json() { { "elapsed_s": "[..]", "event": "discover_case", - "name": "bear" + "name": "cfg_in", + "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bunny", + "name": "custom_error", "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "cat" + "name": "failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "custom_error", - "selected": false + "name": "ignore_attribute" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "dog", - "selected": false + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fly", - "selected": false + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fox", - "selected": false + "name": "ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "frog", - "selected": false + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "horse", - "selected": false + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "owl", - "selected": false + "name": "later_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "sheep", - "selected": false + "name": "passed" }, { "elapsed_s": "[..]", @@ -939,66 +1006,59 @@ fn list_json() { { "elapsed_s": "[..]", "event": "discover_case", - "name": "bear" + "name": "cfg_in", + "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bunny", + "name": "custom_error", "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "cat" + "name": "failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "custom_error", - "selected": false + "name": "ignore_attribute" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "dog", - "selected": false + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fly", - "selected": false + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fox", - "selected": false + "name": "ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "frog", - "selected": false + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "horse", - "selected": false + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "owl", - "selected": false + "name": "later_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "sheep", - "selected": false + "name": "passed" }, { "elapsed_s": "[..]", @@ -1012,10 +1072,10 @@ fn list_json() { } #[test] -fn test_json() { +fn json_filter() { check( &["-Zunstable-options", "--format=json", "a"], - 0, + 101, str![[r#" [ { @@ -1025,66 +1085,59 @@ fn test_json() { { "elapsed_s": "[..]", "event": "discover_case", - "name": "bear" + "name": "cfg_in", + "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bunny", + "name": "custom_error", "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "cat" + "name": "failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "custom_error", - "selected": false + "name": "ignore_attribute" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "dog", - "selected": false + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fly", - "selected": false + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fox", - "selected": false + "name": "ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "frog", - "selected": false + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "horse", - "selected": false + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "owl", - "selected": false + "name": "later_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "sheep", - "selected": false + "name": "passed" }, { "elapsed_s": "[..]", @@ -1097,355 +1150,453 @@ fn test_json() { { "elapsed_s": "[..]", "event": "case_start", - "name": "bear" + "name": "failed" }, { "elapsed_s": "[..]", "event": "case_message", - "kind": "ignored", - "message": "fails", - "name": "bear" + "kind": "error", + "message": "was not a good boy", + "name": "failed" }, { "elapsed_s": "[..]", "event": "case_complete", - "name": "bear" + "name": "failed" }, { "elapsed_s": "[..]", "event": "case_start", - "name": "cat" + "name": "ignore_attribute" }, { "elapsed_s": "[..]", - "event": "case_complete", - "name": "cat" + "event": "case_message", + "kind": "ignored", + "name": "ignore_attribute" }, { "elapsed_s": "[..]", - "event": "run_complete" - } -] -"#]] - .is_json() - .against_jsonlines(), - str![[r#" -[ + "event": "case_complete", + "name": "ignore_attribute" + }, { "elapsed_s": "[..]", - "event": "discover_complete" + "event": "case_start", + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", - "event": "case_complete", - "name": "cat" + "event": "case_message", + "kind": "ignored", + "message": "fails", + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", - "event": "discover_start" + "event": "case_complete", + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "bear" + "event": "case_start", + "name": "ignore_failed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "cat" + "event": "case_message", + "kind": "ignored", + "message": "fails", + "name": "ignore_failed" }, { "elapsed_s": "[..]", - "event": "case_start", - "name": "cat" + "event": "case_complete", + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "case_start", - "name": "bear" + "name": "ignore_passed" }, { "elapsed_s": "[..]", - "event": "run_start" + "event": "case_message", + "kind": "ignored", + "message": "slow", + "name": "ignore_passed" }, { "elapsed_s": "[..]", - "event": "run_complete" + "event": "case_complete", + "name": "ignore_passed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "bunny", - "selected": false + "event": "case_start", + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "dog", - "selected": false + "event": "case_message", + "kind": "ignored", + "message": "fails", + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "fly", - "selected": false + "event": "case_complete", + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "fox", - "selected": false + "event": "case_start", + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "frog", - "selected": false + "event": "case_message", + "kind": "ignored", + "message": "fails", + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "owl", - "selected": false + "event": "case_complete", + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", - "event": "case_complete", - "name": "bear" + "event": "case_start", + "name": "later_passed" }, { "elapsed_s": "[..]", - "event": "case_message", - "kind": "ignored", - "message": "fails", - "name": "bear" + "event": "case_complete", + "name": "later_passed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "horse", - "selected": false + "event": "case_start", + "name": "passed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "sheep", - "selected": false + "event": "case_complete", + "name": "passed" }, { "elapsed_s": "[..]", - "event": "discover_case", - "name": "custom_error", - "selected": false + "event": "run_complete" } ] "#]] - .unordered() .is_json() .against_jsonlines(), - ); -} - -#[test] -fn terse_output() { - check( - &["--quiet"], - 101, - str![[r#" - -running 11 tests -ii.FFi.iiii -failures: - ----- custom_error ---- -I failed - ----- dog ---- -was not a good boy - - -failures: - custom_error - dog - -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s - - -"#]], - str![[r#" - -running 11 tests -... -failures: - ----- custom_error ---- -I failed - ----- dog ---- -was not a good boy - - -failures: - custom_error - dog - -test result: FAILED. 2 passed; 2 failed; 7 ignored; 0 filtered out; finished in [..]s - - -"#]], - ); -} - -#[test] -fn fail_fast() { - check( - &["--fail-fast"], - 101, - str![[r#" - -running 11 tests -test bear ... ignored -test bunny ... ignored -test cat ... ok -test custom_error ... FAILED - -failures: - ----- custom_error ---- -I failed - - -failures: - custom_error - -test result: FAILED. 1 passed; 1 failed; 2 ignored; 0 filtered out; finished in [..]s - - -"#]], - str![[r#" -... - -"#]], - ); -} - -#[test] -fn fail_fast_json() { - check( - &["-Zunstable-options", "--format=json", "--fail-fast"], - 101, str![[r#" [ + { + "elapsed_s": "[..]", + "event": "discover_complete" + }, { "elapsed_s": "[..]", "event": "discover_start" }, + { + "elapsed_s": "[..]", + "event": "run_start" + }, + { + "elapsed_s": "[..]", + "event": "run_complete" + }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bear" + "name": "custom_error", + "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "bunny" + "name": "cfg_in", + "selected": false }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "cat" + "name": "failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "custom_error" + "name": "ignore_attribute" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "dog" + "name": "ignore_attribute_reason" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fly" + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "fox" + "name": "ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "frog" + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "horse" + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "owl" + "name": "later_passed" }, { "elapsed_s": "[..]", "event": "discover_case", - "name": "sheep" + "name": "passed" }, { "elapsed_s": "[..]", - "event": "discover_complete" + "event": "case_start", + "name": "failed" }, { "elapsed_s": "[..]", - "event": "run_start" + "event": "case_start", + "name": "ignore_attribute" + }, + { + "elapsed_s": "[..]", + "event": "case_message", + "kind": "ignored", + "name": "ignore_attribute" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "ignore_attribute" + }, + { + "elapsed_s": "[..]", + "event": "case_message", + "kind": "error", + "message": "was not a good boy", + "name": "failed" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "failed" + }, + { + "elapsed_s": "[..]", + "event": "case_start", + "name": "ignore_failed" + }, + { + "elapsed_s": "[..]", + "event": "case_start", + "name": "ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "case_message", + "kind": "ignored", + "message": "slow", + "name": "ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "case_start", + "name": "ignore_attribute_reason" + }, + { + "elapsed_s": "[..]", + "event": "case_message", + "kind": "ignored", + "message": "fails", + "name": "ignore_attribute_reason" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "ignore_attribute_reason" + }, + { + "elapsed_s": "[..]", + "event": "case_start", + "name": "passed" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "passed" }, { "elapsed_s": "[..]", "event": "case_start", - "name": "bear" + "name": "later_passed" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "later_passed" }, { "elapsed_s": "[..]", "event": "case_message", "kind": "ignored", "message": "fails", - "name": "bear" + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "case_complete", - "name": "bear" + "name": "ignore_failed" }, { "elapsed_s": "[..]", "event": "case_start", - "name": "bunny" + "name": "later_ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "case_start", + "name": "later_ignore_failed" }, { "elapsed_s": "[..]", "event": "case_message", "kind": "ignored", "message": "fails", - "name": "bunny" + "name": "later_ignore_passed" }, { "elapsed_s": "[..]", "event": "case_complete", - "name": "bunny" + "name": "later_ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "case_message", + "kind": "ignored", + "message": "fails", + "name": "later_ignore_failed" + }, + { + "elapsed_s": "[..]", + "event": "case_complete", + "name": "later_ignore_failed" + } +] +"#]] + .unordered() + .is_json() + .against_jsonlines(), + ); +} + +#[test] +fn json_fail_fast() { + check( + &["-Zunstable-options", "--format=json", "--fail-fast"], + 101, + str![[r#" +[ + { + "elapsed_s": "[..]", + "event": "discover_start" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "cfg_in" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "custom_error" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "failed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "ignore_attribute" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "ignore_attribute_reason" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "ignore_failed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "later_ignore_failed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "later_ignore_passed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "later_passed" + }, + { + "elapsed_s": "[..]", + "event": "discover_case", + "name": "passed" + }, + { + "elapsed_s": "[..]", + "event": "discover_complete" + }, + { + "elapsed_s": "[..]", + "event": "run_start" }, { "elapsed_s": "[..]", "event": "case_start", - "name": "cat" + "name": "cfg_in" }, { "elapsed_s": "[..]", "event": "case_complete", - "name": "cat" + "name": "cfg_in" }, { "elapsed_s": "[..]",