|
2 | 2 | // Keep in sync with upstream; revmc-specific code lives in `compiled.rs`. |
3 | 3 |
|
4 | 4 | use crate::merkle_trie::{TestValidationResult, compute_test_roots}; |
5 | | -use indicatif::{ProgressBar, ProgressDrawTarget}; |
| 5 | +use console::Term; |
| 6 | +use indicatif::{ProgressBar, ProgressDrawTarget, ProgressStyle}; |
6 | 7 | use revm_context::{Context, block::BlockEnv, cfg::CfgEnv, tx::TxEnv}; |
7 | 8 | use revm_context_interface::result::{EVMError, ExecutionResult, HaltReason, InvalidTransaction}; |
8 | 9 | use revm_database::{self as database, bal::EvmDatabaseError}; |
@@ -388,15 +389,28 @@ pub(crate) struct TestRunnerState { |
388 | 389 | pub(crate) stop: Arc<AtomicBool>, |
389 | 390 | } |
390 | 391 |
|
| 392 | +fn console_bar(n_files: usize) -> ProgressBar { |
| 393 | + let bar = ProgressBar::with_draw_target( |
| 394 | + Some(n_files as u64), |
| 395 | + ProgressDrawTarget::term_like_with_hz(Box::new(Term::buffered_stderr()), 1), |
| 396 | + ); |
| 397 | + bar.set_style( |
| 398 | + ProgressStyle::with_template( |
| 399 | + "[{elapsed_precise}] {wide_bar} {pos}/{len} ({per_sec}, eta {eta})", |
| 400 | + ) |
| 401 | + .unwrap() |
| 402 | + .progress_chars("=>-"), |
| 403 | + ); |
| 404 | + bar.enable_steady_tick(Duration::from_secs(1)); |
| 405 | + bar |
| 406 | +} |
| 407 | + |
391 | 408 | impl TestRunnerState { |
392 | 409 | pub(crate) fn new(test_files: Vec<PathBuf>) -> Self { |
393 | 410 | let n_files = test_files.len(); |
394 | 411 | Self { |
395 | 412 | n_errors: Arc::new(AtomicUsize::new(0)), |
396 | | - console_bar: Arc::new(ProgressBar::with_draw_target( |
397 | | - Some(n_files as u64), |
398 | | - ProgressDrawTarget::stdout(), |
399 | | - )), |
| 413 | + console_bar: Arc::new(console_bar(n_files)), |
400 | 414 | queue: Arc::new(Mutex::new((0usize, test_files))), |
401 | 415 | elapsed: Arc::new(Mutex::new(Duration::ZERO)), |
402 | 416 | stop: Arc::new(AtomicBool::new(false)), |
|
0 commit comments