pub struct ProgramTest { /* private fields */ }
Implementations§
source§impl ProgramTest
impl ProgramTest
sourcepub fn new(
program_name: &str,
program_id: Pubkey,
builtin_function: Option<fn(_: *mut EbpfVm<'_, InvokeContext<'static>>, _: u64, _: u64, _: u64, _: u64, _: u64)>,
) -> ProgramTest
pub fn new( program_name: &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 set_bpf_compute_max_units(&mut self, bpf_compute_max_units: u64)
👎Deprecated since 1.8.0: please use set_compute_max_units
instead
pub fn set_bpf_compute_max_units(&mut self, bpf_compute_max_units: u64)
set_compute_max_units
insteadOverride the SBF compute budget
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_program(
&mut self,
program_name: &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: &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: &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: &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_anchor<T: AnchorSerialize + Discriminator>(
&mut self,
pubkey: Pubkey,
owner: Pubkey,
anchor_data: T,
executable: bool,
)
fn add_account_with_anchor<T: AnchorSerialize + Discriminator>( &mut self, pubkey: Pubkey, owner: Pubkey, anchor_data: T, executable: bool, )
source§fn add_empty_account_with_anchor<T: AnchorSerialize + Discriminator>(
&mut self,
pubkey: Pubkey,
owner: Pubkey,
size: usize,
)
fn add_empty_account_with_anchor<T: AnchorSerialize + Discriminator>( &mut self, pubkey: Pubkey, owner: Pubkey, size: usize, )
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: &str,
program_id: Pubkey,
program_authority: Option<Pubkey>,
process_instruction: Option<BuiltinFunctionWithContext>,
)
fn add_bpf_program( &mut self, program_name: &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: &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: &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>
Returns self
with the
fg()
set to
Color::BrightBlack
.
§Example
println!("{}", value.bright_black());
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>
Returns self
with the
fg()
set to
Color::BrightGreen
.
§Example
println!("{}", value.bright_green());
source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightYellow
.
§Example
println!("{}", value.bright_yellow());
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>
Returns self
with the
fg()
set to
Color::BrightMagenta
.
§Example
println!("{}", value.bright_magenta());
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>
Returns self
with the
fg()
set to
Color::BrightWhite
.
§Example
println!("{}", value.bright_white());
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>
Returns self
with the
bg()
set to
Color::BrightBlack
.
§Example
println!("{}", value.on_bright_black());
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>
Returns self
with the
bg()
set to
Color::BrightGreen
.
§Example
println!("{}", value.on_bright_green());
source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightYellow
.
§Example
println!("{}", value.on_bright_yellow());
source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightBlue
.
§Example
println!("{}", value.on_bright_blue());
source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightMagenta
.
§Example
println!("{}", value.on_bright_magenta());
source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightCyan
.
§Example
println!("{}", value.on_bright_cyan());
source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightWhite
.
§Example
println!("{}", value.on_bright_white());
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 underline(&self) -> Painted<&T>
fn underline(&self) -> Painted<&T>
Returns self
with the
attr()
set to
Attribute::Underline
.
§Example
println!("{}", value.underline());
source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Returns self
with the
attr()
set to
Attribute::RapidBlink
.
§Example
println!("{}", value.rapid_blink());
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);