Skip to content

Commit 6c0a977

Browse files
feat: show broken invariant count in progress bar during continuous runs
Amp-Thread-ID: https://ampcode.com/threads/T-019dbf48-3fb0-7762-a01f-b5e966339e73 Co-authored-by: Amp <amp@ampcode.com>
1 parent 43f7230 commit 6c0a977

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

  • crates/evm/evm/src/executors/invariant

crates/evm/evm/src/executors/invariant/mod.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -715,9 +715,11 @@ impl<'a, FEN: FoundryEvmNetwork> InvariantExecutor<'a, FEN> {
715715
if let Some(progress) = progress {
716716
// If running with progress then increment completed runs.
717717
progress.inc(1);
718-
// Display current best value and/or corpus metrics in progress bar.
718+
// Display current best value, corpus metrics, and failure counts.
719719
let best = invariant_test.test_data.optimization_best_value;
720-
if edge_coverage_enabled || best.is_some() {
720+
let broken = invariant_test.test_data.failures.errors.len();
721+
let total_invariants = invariant_contract.invariant_fns.len();
722+
if edge_coverage_enabled || best.is_some() || broken > 0 {
721723
let mut msg = String::new();
722724
if let Some(best) = best {
723725
msg.push_str(&format!("best: {best}"));
@@ -728,6 +730,12 @@ impl<'a, FEN: FoundryEvmNetwork> InvariantExecutor<'a, FEN> {
728730
}
729731
msg.push_str(&format!("{}", &corpus_manager.metrics));
730732
}
733+
if broken > 0 {
734+
if !msg.is_empty() {
735+
msg.push_str(", ");
736+
}
737+
msg.push_str(&format!("❌ {broken}/{total_invariants} broken"));
738+
}
731739
progress.set_message(msg);
732740
}
733741
} else if edge_coverage_enabled

0 commit comments

Comments
 (0)