pub struct ProgramTest { /* private fields */ }
Implementations§
Source§impl ProgramTest
impl ProgramTest
Sourcepub fn new(
program_name: &'static str,
program_id: Pubkey,
builtin_function: Option<fn(*mut EbpfVm<'_, InvokeContext<'static>>, u64, u64, u64, u64, u64)>,
) -> ProgramTest
pub fn new( program_name: &'static str, program_id: Pubkey, builtin_function: Option<fn(*mut EbpfVm<'_, InvokeContext<'static>>, u64, u64, u64, u64, u64)>, ) -> ProgramTest
Create a ProgramTest
.
This is a wrapper around default
and add_program
. See their documentation for more
details.
Sourcepub fn prefer_bpf(&mut self, prefer_bpf: bool)
pub fn prefer_bpf(&mut self, prefer_bpf: bool)
Override default SBF program selection
Sourcepub fn set_compute_max_units(&mut self, compute_max_units: u64)
pub fn set_compute_max_units(&mut self, compute_max_units: u64)
Override the default maximum compute units
Sourcepub fn set_transaction_account_lock_limit(
&mut self,
transaction_account_lock_limit: usize,
)
pub fn set_transaction_account_lock_limit( &mut self, transaction_account_lock_limit: usize, )
Override the default transaction account lock limit
Sourcepub fn add_genesis_account(&mut self, address: Pubkey, account: Account)
pub fn add_genesis_account(&mut self, address: Pubkey, account: Account)
Add an account to the test environment’s genesis config.
Sourcepub fn add_account(&mut self, address: Pubkey, account: Account)
pub fn add_account(&mut self, address: Pubkey, account: Account)
Add an account to the test environment
Sourcepub fn add_account_with_file_data(
&mut self,
address: Pubkey,
lamports: u64,
owner: Pubkey,
filename: &str,
)
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
Sourcepub fn add_account_with_base64_data(
&mut self,
address: Pubkey,
lamports: u64,
owner: Pubkey,
data_base64: &str,
)
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
pub fn add_sysvar_account<S>(&mut self, address: Pubkey, sysvar: &S)where
S: Sysvar,
Sourcepub fn add_upgradeable_program_to_genesis(
&mut self,
program_name: &'static str,
program_id: &Pubkey,
)
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.
Sourcepub fn add_program(
&mut self,
program_name: &'static str,
program_id: Pubkey,
builtin_function: Option<fn(*mut EbpfVm<'_, InvokeContext<'static>>, u64, u64, u64, u64, u64)>,
)
pub fn add_program( &mut self, program_name: &'static str, program_id: Pubkey, builtin_function: Option<fn(*mut EbpfVm<'_, InvokeContext<'static>>, u64, u64, u64, u64, u64)>, )
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.
Sourcepub fn add_builtin_program(
&mut self,
program_name: &'static str,
program_id: Pubkey,
builtin_function: fn(*mut EbpfVm<'_, InvokeContext<'static>>, u64, u64, u64, u64, u64),
)
pub fn add_builtin_program( &mut self, program_name: &'static str, program_id: Pubkey, builtin_function: fn(*mut EbpfVm<'_, InvokeContext<'static>>, u64, u64, u64, u64, u64), )
Add a builtin program to the test environment.
Note that builtin programs are responsible for their own stable_log
output.
Sourcepub fn deactivate_feature(&mut self, feature_id: Pubkey)
pub fn deactivate_feature(&mut self, feature_id: Pubkey)
Deactivate a runtime feature.
Note that all features are activated by default.
pub async fn start(self) -> (BanksClient, Keypair, Hash)
Sourcepub async fn start_with_context(self) -> ProgramTestContext
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
impl Default for ProgramTest
Source§fn default() -> ProgramTest
fn default() -> ProgramTest
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
Source§impl ProgramTestExtension for ProgramTest
impl ProgramTestExtension for ProgramTest
Source§fn generate_accounts(&mut self, number_of_accounts: u8) -> Vec<Keypair>
fn generate_accounts(&mut self, number_of_accounts: u8) -> Vec<Keypair>
1_000
SOL
to the test environmentSource§fn add_account_with_data(
&mut self,
pubkey: Pubkey,
owner: Pubkey,
data: &[u8],
executable: bool,
)
fn add_account_with_data( &mut self, pubkey: Pubkey, owner: Pubkey, data: &[u8], executable: bool, )
Source§fn add_account_with_lamports(
&mut self,
pubkey: Pubkey,
owner: Pubkey,
lamports: u64,
)
fn add_account_with_lamports( &mut self, pubkey: Pubkey, owner: Pubkey, lamports: u64, )
Source§fn add_account_with_packable<P: Pack>(
&mut self,
pubkey: Pubkey,
owner: Pubkey,
data: P,
)
fn add_account_with_packable<P: Pack>( &mut self, pubkey: Pubkey, owner: Pubkey, data: P, )
Source§fn add_account_with_borsh<B: BorshSerialize>(
&mut self,
pubkey: Pubkey,
owner: Pubkey,
data: B,
)
fn add_account_with_borsh<B: BorshSerialize>( &mut self, pubkey: Pubkey, owner: Pubkey, data: B, )
Source§fn add_token_mint(
&mut self,
pubkey: Pubkey,
mint_authority: Option<Pubkey>,
supply: u64,
decimals: u8,
freeze_authority: Option<Pubkey>,
)
fn add_token_mint( &mut self, pubkey: Pubkey, mint_authority: Option<Pubkey>, supply: u64, decimals: u8, freeze_authority: Option<Pubkey>, )
Source§fn add_token_account(
&mut self,
pubkey: Pubkey,
mint: Pubkey,
owner: Pubkey,
amount: u64,
delegate: Option<Pubkey>,
is_native: Option<u64>,
delegated_amount: u64,
close_authority: Option<Pubkey>,
)
fn add_token_account( &mut self, pubkey: Pubkey, mint: Pubkey, owner: Pubkey, amount: u64, delegate: Option<Pubkey>, is_native: Option<u64>, delegated_amount: u64, close_authority: Option<Pubkey>, )
Source§fn add_associated_token_account(
&mut self,
mint: Pubkey,
owner: Pubkey,
amount: u64,
delegate: Option<Pubkey>,
is_native: Option<u64>,
delegated_amount: u64,
close_authority: Option<Pubkey>,
) -> Pubkey
fn add_associated_token_account( &mut self, mint: Pubkey, owner: Pubkey, amount: u64, delegate: Option<Pubkey>, is_native: Option<u64>, delegated_amount: u64, close_authority: Option<Pubkey>, ) -> Pubkey
Source§fn add_bpf_program(
&mut self,
program_name: &'static str,
program_id: Pubkey,
program_authority: Option<Pubkey>,
process_instruction: Option<BuiltinFunctionWithContext>,
)
fn add_bpf_program( &mut self, program_name: &'static str, program_id: Pubkey, program_authority: Option<Pubkey>, process_instruction: Option<BuiltinFunctionWithContext>, )
Some
program_authority
is provided.Source§fn add_bpf_program_with_program_data(
&mut self,
program_name: &'static str,
program_id: Pubkey,
program_authority: Option<Pubkey>,
program_data_pubkey: Pubkey,
process_instruction: Option<BuiltinFunctionWithContext>,
)
fn add_bpf_program_with_program_data( &mut self, program_name: &'static str, program_id: Pubkey, program_authority: Option<Pubkey>, program_data_pubkey: Pubkey, process_instruction: Option<BuiltinFunctionWithContext>, )
Some
program_authority
and then
providing the program data account This is useful for those programs
which the program data has to be a spefic one, if not, use
ProgramTestExtension::add_bpf_program
Auto Trait Implementations§
impl Freeze for ProgramTest
impl RefUnwindSafe for ProgramTest
impl Send for ProgramTest
impl Sync for ProgramTest
impl Unpin for ProgramTest
impl !UnwindSafe for ProgramTest
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute
value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
Quirk
value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition
value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);