54 lines
1.4 KiB
Rust
54 lines
1.4 KiB
Rust
use {
|
|
assert_cmd::prelude::*,
|
|
solana_ledger::{create_new_tmp_ledger, genesis_utils::create_genesis_config},
|
|
std::process::{Command, Output},
|
|
};
|
|
|
|
fn run_ledger_tool(args: &[&str]) -> Output {
|
|
Command::cargo_bin(env!("CARGO_PKG_NAME"))
|
|
.unwrap()
|
|
.args(args)
|
|
.output()
|
|
.unwrap()
|
|
}
|
|
|
|
fn count_newlines(chars: &[u8]) -> usize {
|
|
bytecount::count(chars, b'\n')
|
|
}
|
|
|
|
#[test]
|
|
fn bad_arguments() {
|
|
// At least a ledger path is required
|
|
assert!(!run_ledger_tool(&[]).status.success());
|
|
|
|
// Invalid ledger path should fail
|
|
assert!(!run_ledger_tool(&["-l", "invalid_ledger", "verify"])
|
|
.status
|
|
.success());
|
|
}
|
|
|
|
#[test]
|
|
fn nominal() {
|
|
let genesis_config = create_genesis_config(100).genesis_config;
|
|
let ticks_per_slot = genesis_config.ticks_per_slot;
|
|
let meta_lines = 2;
|
|
let summary_lines = 1;
|
|
|
|
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_config);
|
|
let ticks = ticks_per_slot as usize;
|
|
|
|
let ledger_path = ledger_path.to_str().unwrap();
|
|
|
|
// Basic validation
|
|
let output = run_ledger_tool(&["-l", ledger_path, "verify"]);
|
|
assert!(output.status.success());
|
|
|
|
// Print everything
|
|
let output = run_ledger_tool(&["-l", ledger_path, "print", "-vvv"]);
|
|
assert!(output.status.success());
|
|
assert_eq!(
|
|
count_newlines(&output.stdout),
|
|
ticks + meta_lines + summary_lines
|
|
);
|
|
}
|