2019-03-02 20:56:49 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								use solana_runtime::bank::Bank;
							 | 
						
					
						
							
								
									
										
										
										
											2019-03-21 08:14:14 -06:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								use solana_runtime::bank_client::BankClient;
							 | 
						
					
						
							
								
									
										
										
										
											2019-10-25 16:22:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								use solana_runtime::loader_utils::create_invoke_instruction;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								use solana_sdk::client::SyncClient;
							 | 
						
					
						
							
								
									
										
										
										
											2019-11-08 23:56:57 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								use solana_sdk::genesis_config::create_genesis_config;
							 | 
						
					
						
							
								
									
										
										
										
											2019-03-23 21:12:27 -06:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								use solana_sdk::instruction::InstructionError;
							 | 
						
					
						
							
								
									
										
										
										
											2020-02-20 14:28:55 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								use solana_sdk::signature::Signer;
							 | 
						
					
						
							
								
									
										
										
										
											2019-03-23 21:12:27 -06:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								use solana_sdk::transaction::TransactionError;
							 | 
						
					
						
							
								
									
										
										
										
											2019-03-02 20:56:49 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								#[test]
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								fn test_program_native_failure() {
							 | 
						
					
						
							
								
									
										
										
										
											2019-11-08 23:56:57 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    let (genesis_config, alice_keypair) = create_genesis_config(50);
							 | 
						
					
						
							
								
									
										
										
										
											2020-10-19 12:12:08 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    let program_id = solana_sdk::pubkey::new_rand();
							 | 
						
					
						
							
								
									
										
										
										
											2019-11-08 23:56:57 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    let bank = Bank::new(&genesis_config);
							 | 
						
					
						
							
								
									
										
										
										
											2020-11-05 08:37:07 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    bank.add_native_program("solana_failure_program", &program_id, false);
							 | 
						
					
						
							
								
									
										
										
										
											2019-03-02 20:56:49 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    // Call user program
							 | 
						
					
						
							
								
									
										
										
										
											2019-10-25 16:22:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    let instruction = create_invoke_instruction(alice_keypair.pubkey(), program_id, &1u8);
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    let bank_client = BankClient::new(bank);
							 | 
						
					
						
							
								
									
										
										
										
											2019-03-02 20:56:49 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    assert_eq!(
							 | 
						
					
						
							
								
									
										
										
										
											2019-10-25 16:22:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        bank_client
							 | 
						
					
						
							
								
									
										
										
										
											2020-06-24 21:35:38 -06:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								            .send_and_confirm_instruction(&alice_keypair, instruction)
							 | 
						
					
						
							
								
									
										
										
										
											2019-10-25 16:22:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								            .unwrap_err()
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								            .unwrap(),
							 | 
						
					
						
							
								
									
										
										
										
											2020-04-01 09:01:11 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        TransactionError::InstructionError(0, InstructionError::Custom(0))
							 | 
						
					
						
							
								
									
										
										
										
											2019-03-02 20:56:49 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    );
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								}
							 |