diff --git a/crates/forge/src/result.rs b/crates/forge/src/result.rs index b88f7dbbb4a48..a955b2ec1165b 100644 --- a/crates/forge/src/result.rs +++ b/crates/forge/src/result.rs @@ -192,6 +192,15 @@ impl TestOutcome { successes.to_string().green() )?; + // Show helpful hint for rerunning failed tests + let test_word = if failures == 1 { "test" } else { "tests" }; + sh_println!( + "\nTip: Run {} to retry only the {} failed {}", + "`forge test --rerun`".cyan(), + failures, + test_word + )?; + // TODO: Avoid process::exit std::process::exit(1); } diff --git a/crates/forge/tests/cli/eip712.rs b/crates/forge/tests/cli/eip712.rs index 5aa890154471d..1340c86565389 100644 --- a/crates/forge/tests/cli/eip712.rs +++ b/crates/forge/tests/cli/eip712.rs @@ -175,6 +175,8 @@ Encountered 1 failing test in test/Structs.sol:DummyTest Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]]); }); @@ -394,6 +396,8 @@ Encountered 1 failing test in src/Eip712Cheat.sol:Eip712Test Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]]); cmd.forge_fuse().args(["bind-json"]).assert_success(); @@ -438,6 +442,8 @@ Encountered 1 failing test in src/Eip712Cheat.sol:Eip712Test Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]]); cmd.forge_fuse().args(["bind-json", "utils/CustomJsonBindings.sol"]).assert_success(); diff --git a/crates/forge/tests/cli/failure_assertions.rs b/crates/forge/tests/cli/failure_assertions.rs index d827db79bc819..619c3b71da11d 100644 --- a/crates/forge/tests/cli/failure_assertions.rs +++ b/crates/forge/tests/cli/failure_assertions.rs @@ -33,6 +33,8 @@ Encountered 2 failing tests in src/DeprecationTestFail.t.sol:DeprecationTestFail Encountered a total of 2 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 2 failed tests + "#]]); }); diff --git a/crates/forge/tests/cli/inline_config.rs b/crates/forge/tests/cli/inline_config.rs index 2bd66e740baa3..eb20715ff33b2 100644 --- a/crates/forge/tests/cli/inline_config.rs +++ b/crates/forge/tests/cli/inline_config.rs @@ -161,6 +161,8 @@ Encountered 1 failing test in test/inline.sol:Inline Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]]); }); @@ -192,6 +194,8 @@ Encountered 1 failing test in test/inline.sol:Inline Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]]); }); diff --git a/crates/forge/tests/cli/test_cmd.rs b/crates/forge/tests/cli/test_cmd.rs index a263b8e0c3693..43c5a71578f8a 100644 --- a/crates/forge/tests/cli/test_cmd.rs +++ b/crates/forge/tests/cli/test_cmd.rs @@ -602,6 +602,8 @@ Encountered 1 failing test in test/Contract.t.sol:CustomTypesTest Encountered a total of 1 failing tests, 1 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]]); }); @@ -763,6 +765,8 @@ Encountered 1 failing test in test/CounterFuzz.t.sol:CounterTest Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]]); }); @@ -813,6 +817,8 @@ Encountered 1 failing test in test/CounterInvariant.t.sol:CounterTest Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]]); }); @@ -864,6 +870,8 @@ Encountered 2 failing tests in test/ReplayFailures.t.sol:ReplayFailuresTest Encountered a total of 2 failing tests, 2 tests succeeded +Tip: Run `forge test --rerun` to retry only the 2 failed tests + "#]]); // Test failure filter should be persisted. @@ -887,6 +895,8 @@ Encountered 2 failing tests in test/ReplayFailures.t.sol:ReplayFailuresTest Encountered a total of 2 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 2 failed tests + "#]]); }); @@ -2871,6 +2881,8 @@ Encountered 1 failing test in test/Foo.t.sol:ContractTest Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]]); }); @@ -3001,6 +3013,8 @@ Encountered 1 failing test in test/SuppressTracesTest.t.sol:SuppressTracesTest Encountered a total of 1 failing tests, 1 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]], ); @@ -3063,6 +3077,8 @@ Encountered 1 failing test in test/SuppressTracesTest.t.sol:SuppressTracesTest Encountered a total of 1 failing tests, 1 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]]); }); @@ -3747,6 +3763,8 @@ Encountered 1 failing test in test/Counter.t.sol:CounterTest Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]]); }); @@ -3855,6 +3873,8 @@ Encountered 3 failing tests in test/NonContractCallRevertTest.t.sol:NonContractC Encountered a total of 3 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 3 failed tests + "#]]); }); @@ -3937,6 +3957,8 @@ Encountered 1 failing test in test/NonContractDelegateCallRevertTest.t.sol:NonCo Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]]); }); @@ -4128,5 +4150,7 @@ Encountered 2 failing tests in test/Counter.t.sol:CounterTest Encountered a total of 2 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 2 failed tests + "#]]); }); diff --git a/crates/forge/tests/it/invariant.rs b/crates/forge/tests/it/invariant.rs index 79982af6ec6d0..75ad31ead21b6 100644 --- a/crates/forge/tests/it/invariant.rs +++ b/crates/forge/tests/it/invariant.rs @@ -1112,6 +1112,8 @@ Encountered 1 failing test in test/InvariantSequenceLenTest.t.sol:InvariantSeque Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]], ); @@ -1137,6 +1139,8 @@ Encountered 1 failing test in test/InvariantSequenceLenTest.t.sol:InvariantSeque Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]], ); @@ -1158,6 +1162,8 @@ Encountered 1 failing test in test/InvariantSequenceLenTest.t.sol:InvariantSeque Encountered a total of 1 failing tests, 0 tests succeeded +Tip: Run `forge test --rerun` to retry only the 1 failed test + "#]], ); }); diff --git a/crates/forge/tests/it/table.rs b/crates/forge/tests/it/table.rs index 77fd407420ab5..458d3af55bee8 100644 --- a/crates/forge/tests/it/table.rs +++ b/crates/forge/tests/it/table.rs @@ -117,6 +117,8 @@ Encountered 6 failing tests in test/CounterTable.t.sol:CounterTableTest Encountered a total of 6 failing tests, 2 tests succeeded +Tip: Run `forge test --rerun` to retry only the 6 failed tests + "#]]); });