solana_program_test

Struct ProgramTest

Source
pub struct ProgramTest { /* private fields */ }

Implementations§

Source§

impl ProgramTest

Source

pub fn new( program_name: &'static str, program_id: Pubkey, builtin_function: Option<BuiltinFunctionWithContext>, ) -> Self

Create a ProgramTest.

This is a wrapper around default and add_program. See their documentation for more details.

Source

pub fn prefer_bpf(&mut self, prefer_bpf: bool)

Override default SBF program selection

Source

pub fn set_compute_max_units(&mut self, compute_max_units: u64)

Override the default maximum compute units

Source

pub fn set_transaction_account_lock_limit( &mut self, transaction_account_lock_limit: usize, )

Override the default transaction account lock limit

Source

pub fn add_genesis_account(&mut self, address: Pubkey, account: Account)

Add an account to the test environment’s genesis config.

Source

pub fn add_account(&mut self, address: Pubkey, account: Account)

Add an account to the test environment

Source

pub fn add_account_with_file_data( &mut self, address: Pubkey, lamports: u64, owner: Pubkey, filename: &str, )

Add an account to the test environment with the account data in the provided filename

Source

pub fn add_account_with_base64_data( &mut self, address: Pubkey, lamports: u64, owner: Pubkey, data_base64: &str, )

Add an account to the test environment with the account data in the provided as a base 64 string

Source

pub fn add_sysvar_account<S: Sysvar>(&mut self, address: Pubkey, sysvar: &S)

Source

pub fn add_upgradeable_program_to_genesis( &mut self, program_name: &'static str, program_id: &Pubkey, )

Add a BPF Upgradeable program to the test environment’s genesis config.

When testing BPF programs using the program ID of a runtime builtin program - such as Core BPF programs - the program accounts must be added to the genesis config in order to make them available to the new Bank as it’s being initialized.

The presence of these program accounts will cause Bank to skip adding the builtin version of the program, allowing the provided BPF program to be used at the designated program ID instead.

See https://github.com/anza-xyz/agave/blob/c038908600b8a1b0080229dea015d7fc9939c418/runtime/src/bank.rs#L5109-L5126.

Source

pub fn add_program( &mut self, program_name: &'static str, program_id: Pubkey, builtin_function: Option<BuiltinFunctionWithContext>, )

Add a SBF program to the test environment.

program_name will also be used to locate the SBF shared object in the current or fixtures directory.

If builtin_function is provided, the natively built-program may be used instead of the SBF shared object depending on the BPF_OUT_DIR environment variable.

Source

pub fn add_builtin_program( &mut self, program_name: &'static str, program_id: Pubkey, builtin_function: BuiltinFunctionWithContext, )

Add a builtin program to the test environment.

Note that builtin programs are responsible for their own stable_log output.

Source

pub fn deactivate_feature(&mut self, feature_id: Pubkey)

Deactivate a runtime feature.

Note that all features are activated by default.

Source

pub async fn start(self) -> (BanksClient, Keypair, Hash)

Source

pub async fn start_with_context(self) -> ProgramTestContext

Start the test client

Returns a BanksClient interface into the test environment as well as a payer Keypair with SOL for sending transactions

Trait Implementations§

Source§

impl Default for ProgramTest

Source§

fn default() -> Self

Initialize a new ProgramTest

If the BPF_OUT_DIR environment variable is defined, BPF programs will be preferred over over a native instruction processor. The ProgramTest::prefer_bpf() method may be used to override this preference at runtime. cargo test-bpf will set BPF_OUT_DIR automatically.

SBF program shared objects and account data files are searched for in

  • the value of the BPF_OUT_DIR environment variable
  • the tests/fixtures sub-directory
  • the current working directory

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize = _

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T