Add BPF Sanity program-test based test (#19159)

This commit is contained in:
Jack May 2021-08-11 12:07:15 -07:00 committed by GitHub
parent 446816de52
commit 9dfeee2993
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 51 additions and 5 deletions

View File

@ -2717,6 +2717,8 @@ name = "solana-bpf-rust-sanity"
version = "1.8.0"
dependencies = [
"solana-program 1.8.0",
"solana-program-test",
"solana-sdk",
]
[[package]]

View File

@ -9,11 +9,18 @@ homepage = "https://solana.com/"
documentation = "https://docs.rs/solana-bpf-rust-sanity"
edition = "2018"
[features]
test-bpf = []
[dependencies]
solana-program = { path = "../../../../sdk/program", version = "=1.8.0" }
[dev-dependencies]
solana-program-test = { path = "../../../../program-test", version = "=1.8.0" }
solana-sdk = { path = "../../../../sdk", version = "=1.8.0" }
[lib]
crate-type = ["cdylib"]
crate-type = ["cdylib", "lib"]
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]

View File

@ -22,7 +22,7 @@ fn return_sstruct() -> SStruct {
entrypoint!(process_instruction);
#[allow(clippy::unnecessary_wraps)]
fn process_instruction(
pub fn process_instruction(
program_id: &Pubkey,
accounts: &[AccountInfo],
instruction_data: &[u8],

View File

@ -0,0 +1,35 @@
#![cfg(feature = "test-bpf")]
use solana_bpf_rust_sanity::process_instruction;
use solana_program_test::*;
use solana_sdk::{
instruction::{AccountMeta, Instruction},
pubkey::Pubkey,
signature::{Keypair, Signer},
transaction::Transaction,
};
#[tokio::test]
async fn test_sysvars() {
let program_id = Pubkey::new_unique();
let program_test = ProgramTest::new(
"solana_bpf_rust_sanity",
program_id,
processor!(process_instruction),
);
let (mut banks_client, payer_keypair, recent_blockhash) = program_test.start().await;
let mut transaction = Transaction::new_with_payer(
&[Instruction::new_with_bincode(
program_id,
&(),
vec![
AccountMeta::new(payer_keypair.pubkey(), true),
AccountMeta::new(Keypair::new().pubkey(), false),
],
)],
Some(&payer_keypair.pubkey()),
);
transaction.sign(&[&payer_keypair], recent_blockhash);
banks_client.process_transaction(transaction).await.unwrap();
}

View File

@ -1,11 +1,13 @@
use solana_bpf_rust_sysvar::process_instruction;
use solana_program_test::*;
use solana_sdk::sysvar::recent_blockhashes;
use solana_sdk::{
instruction::{AccountMeta, Instruction},
pubkey::Pubkey,
signature::Signer,
sysvar::{clock, epoch_schedule, instructions, rent, slot_hashes, slot_history, stake_history},
sysvar::{
clock, epoch_schedule, instructions, recent_blockhashes, rent, slot_hashes, slot_history,
stake_history,
},
transaction::Transaction,
};

View File

@ -1335,7 +1335,7 @@ fn assert_instruction_count() {
("solana_bpf_rust_noop", 478),
("solana_bpf_rust_param_passing", 46),
("solana_bpf_rust_rand", 481),
("solana_bpf_rust_sanity", 907),
("solana_bpf_rust_sanity", 922),
("solana_bpf_rust_secp256k1_recover", 301),
("solana_bpf_rust_sha", 32337),
]);