Initial solana-test-validator command-line program
This commit is contained in:
committed by
mergify[bot]
parent
13db3eca9f
commit
0a9ff1dc9d
@ -39,6 +39,7 @@ use {
|
||||
|
||||
// Export types so test clients can limit their solana crate dependencies
|
||||
pub use solana_banks_client::BanksClient;
|
||||
pub mod programs;
|
||||
|
||||
#[macro_use]
|
||||
extern crate solana_bpf_loader_program;
|
||||
@ -358,24 +359,6 @@ fn read_file<P: AsRef<Path>>(path: P) -> Vec<u8> {
|
||||
file_data
|
||||
}
|
||||
|
||||
mod spl_token {
|
||||
solana_sdk::declare_id!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");
|
||||
}
|
||||
mod spl_memo {
|
||||
solana_sdk::declare_id!("Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo");
|
||||
}
|
||||
mod spl_associated_token_account {
|
||||
solana_sdk::declare_id!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");
|
||||
}
|
||||
static SPL_PROGRAMS: &[(Pubkey, &[u8])] = &[
|
||||
(spl_token::ID, include_bytes!("programs/spl_token-2.0.6.so")),
|
||||
(spl_memo::ID, include_bytes!("programs/spl_memo-1.0.0.so")),
|
||||
(
|
||||
spl_associated_token_account::ID,
|
||||
include_bytes!("programs/spl_associated-token-account-1.0.1.so"),
|
||||
),
|
||||
];
|
||||
|
||||
pub struct ProgramTest {
|
||||
accounts: Vec<(Pubkey, Account)>,
|
||||
builtins: Vec<Builtin>,
|
||||
@ -614,17 +597,8 @@ impl ProgramTest {
|
||||
}
|
||||
|
||||
// Add commonly-used SPL programs as a convenience to the user
|
||||
for (program_id, elf) in SPL_PROGRAMS.iter() {
|
||||
bank.store_account(
|
||||
program_id,
|
||||
&Account {
|
||||
lamports: Rent::default().minimum_balance(elf.len()).min(1),
|
||||
data: elf.to_vec(),
|
||||
owner: solana_program::bpf_loader::id(),
|
||||
executable: true,
|
||||
rent_epoch: 0,
|
||||
},
|
||||
)
|
||||
for (program_id, account) in programs::spl_programs(&Rent::default()).iter() {
|
||||
bank.store_account(program_id, &account);
|
||||
}
|
||||
|
||||
// User-supplied additional builtins
|
||||
|
38
program-test/src/programs.rs
Normal file
38
program-test/src/programs.rs
Normal file
@ -0,0 +1,38 @@
|
||||
use solana_sdk::{account::Account, pubkey::Pubkey, rent::Rent};
|
||||
|
||||
mod spl_token {
|
||||
solana_sdk::declare_id!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");
|
||||
}
|
||||
mod spl_memo {
|
||||
solana_sdk::declare_id!("Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo");
|
||||
}
|
||||
mod spl_associated_token_account {
|
||||
solana_sdk::declare_id!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");
|
||||
}
|
||||
|
||||
static SPL_PROGRAMS: &[(Pubkey, &[u8])] = &[
|
||||
(spl_token::ID, include_bytes!("programs/spl_token-2.0.6.so")),
|
||||
(spl_memo::ID, include_bytes!("programs/spl_memo-1.0.0.so")),
|
||||
(
|
||||
spl_associated_token_account::ID,
|
||||
include_bytes!("programs/spl_associated-token-account-1.0.1.so"),
|
||||
),
|
||||
];
|
||||
|
||||
pub fn spl_programs(rent: &Rent) -> Vec<(Pubkey, Account)> {
|
||||
SPL_PROGRAMS
|
||||
.iter()
|
||||
.map(|(program_id, elf)| {
|
||||
(
|
||||
*program_id,
|
||||
Account {
|
||||
lamports: rent.minimum_balance(elf.len()).min(1),
|
||||
data: elf.to_vec(),
|
||||
owner: solana_program::bpf_loader::id(),
|
||||
executable: true,
|
||||
rent_epoch: 0,
|
||||
},
|
||||
)
|
||||
})
|
||||
.collect()
|
||||
}
|
Reference in New Issue
Block a user