| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- use {
- solana_account_info::AccountInfo,
- solana_instruction::{error::InstructionError, Instruction},
- solana_program_error::ProgramResult,
- solana_program_test::{processor, ProgramTest},
- solana_pubkey::Pubkey,
- solana_signer::Signer,
- solana_transaction::Transaction,
- solana_transaction_error::TransactionError,
- };
- fn panic(_program_id: &Pubkey, _accounts: &[AccountInfo], _input: &[u8]) -> ProgramResult {
- panic!("I panicked");
- }
- #[tokio::test]
- async fn panic_test() {
- let program_id = Pubkey::new_unique();
- let program_test = ProgramTest::new("panic", program_id, processor!(panic));
- let context = program_test.start_with_context().await;
- let instruction = Instruction::new_with_bytes(program_id, &[], vec![]);
- let transaction = Transaction::new_signed_with_payer(
- &[instruction],
- Some(&context.payer.pubkey()),
- &[&context.payer],
- context.last_blockhash,
- );
- assert_eq!(
- context
- .banks_client
- .process_transaction(transaction)
- .await
- .unwrap_err()
- .unwrap(),
- TransactionError::InstructionError(0, InstructionError::ProgramFailedToComplete)
- );
- }
|