confirm --verbose now displays failed transactions

This commit is contained in:
Michael Vines
2020-04-16 20:02:02 -07:00
parent 55ed52a71d
commit 7207a91aa5

View File

@ -1176,16 +1176,17 @@ fn process_confirm(
true, true,
) { ) {
Ok(status) => { Ok(status) => {
if let Some(result) = status { if let Some(transaction_status) = status {
match result {
Ok(_) => {
if config.verbose { if config.verbose {
match rpc_client.get_confirmed_transaction( match rpc_client.get_confirmed_transaction(
signature, signature,
solana_transaction_status::TransactionEncoding::Binary, solana_transaction_status::TransactionEncoding::Binary,
) { ) {
Ok(confirmed_transaction) => { Ok(confirmed_transaction) => {
println!("\nTransaction:"); println!(
"\nTransaction executed in slot {}:",
confirmed_transaction.slot
);
crate::display::println_transaction( crate::display::println_transaction(
&confirmed_transaction &confirmed_transaction
.transaction .transaction
@ -1195,19 +1196,17 @@ fn process_confirm(
&confirmed_transaction.transaction.meta, &confirmed_transaction.transaction.meta,
" ", " ",
); );
}
Err(err) => {
println!("Unable to get confirmed transaction details: {}", err)
}
}
println!(); println!();
Ok(format!("Confirmed in slot {}", confirmed_transaction.slot))
} }
Err(err) => Ok(format!(
"Confirmed. Unable to get confirmed transaction details: {}", match transaction_status {
err Ok(_) => Ok("Confirmed".to_string()),
)), Err(err) => Ok(format!("Transaction failed: {}", err)),
}
} else {
Ok("Confirmed".to_string())
}
}
Err(err) => Ok(format!("Transaction failed with error: {}", err)),
} }
} else { } else {
Ok("Not found".to_string()) Ok("Not found".to_string())
@ -3456,10 +3455,7 @@ mod tests {
config.command = CliCommand::Confirm(any_signature); config.command = CliCommand::Confirm(any_signature);
assert_eq!( assert_eq!(
process_command(&config).unwrap(), process_command(&config).unwrap(),
format!( format!("Transaction failed: {}", TransactionError::AccountInUse)
"Transaction failed with error: {}",
TransactionError::AccountInUse
)
); );
// Failure cases // Failure cases