Skip to content

Commit bce8400

Browse files
committed
test: adds gas payment to transactional test runner
## Description Add the ability to specify an explicit gas payment object to a programmable transaction in transactional test runner. ## Test plan TBD -- to be used in a future test.
1 parent 6691ca3 commit bce8400

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

crates/sui-transactional-test-runner/src/args.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ pub struct ProgrammableTransactionCommand {
108108
pub gas_budget: Option<u64>,
109109
#[clap(long = "gas-price")]
110110
pub gas_price: Option<u64>,
111+
#[clap(long = "gas-payment", value_parser = parse_fake_id)]
112+
pub gas_payment: Option<FakeID>,
111113
#[clap(long = "dev-inspect")]
112114
pub dev_inspect: bool,
113115
#[clap(

crates/sui-transactional-test-runner/src/test_adapter.rs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -739,6 +739,7 @@ impl<'a> MoveTestAdapter<'a> for SuiTestAdapter {
739739
sponsor,
740740
gas_budget,
741741
gas_price,
742+
gas_payment,
742743
dev_inspect,
743744
inputs,
744745
}) => {
@@ -784,8 +785,11 @@ impl<'a> MoveTestAdapter<'a> for SuiTestAdapter {
784785
let summary = if !dev_inspect {
785786
let gas_budget = gas_budget.unwrap_or(DEFAULT_GAS_BUDGET);
786787
let gas_price = gas_price.unwrap_or(self.gas_price);
787-
let transaction =
788-
self.sign_sponsor_txn(sender, sponsor, |sender, sponsor, gas| {
788+
let transaction = self.sign_sponsor_txn(
789+
sender,
790+
sponsor,
791+
gas_payment,
792+
|sender, sponsor, gas| {
789793
TransactionData::new_programmable_allow_sponsor(
790794
sender,
791795
vec![gas],
@@ -794,7 +798,8 @@ impl<'a> MoveTestAdapter<'a> for SuiTestAdapter {
794798
gas_price,
795799
sponsor,
796800
)
797-
});
801+
},
802+
);
798803
self.execute_txn(transaction).await?
799804
} else {
800805
assert!(
@@ -1364,13 +1369,16 @@ impl<'a> SuiTestAdapter {
13641369
sender: Option<String>,
13651370
txn_data: impl FnOnce(/* sender */ SuiAddress, /* gas */ ObjectRef) -> TransactionData,
13661371
) -> Transaction {
1367-
self.sign_sponsor_txn(sender, None, move |sender, _, gas| txn_data(sender, gas))
1372+
self.sign_sponsor_txn(sender, None, None, move |sender, _, gas| {
1373+
txn_data(sender, gas)
1374+
})
13681375
}
13691376

13701377
fn sign_sponsor_txn(
13711378
&self,
13721379
sender: Option<String>,
13731380
sponsor: Option<String>,
1381+
payment: Option<FakeID>,
13741382
txn_data: impl FnOnce(
13751383
/* sender */ SuiAddress,
13761384
/* sponsor */ SuiAddress,
@@ -1380,12 +1388,19 @@ impl<'a> SuiTestAdapter {
13801388
let sender = self.get_sender(sender);
13811389
let sponsor = sponsor.map_or(sender, |a| self.get_sender(Some(a)));
13821390

1383-
let gas_payment = self
1384-
.get_object(&sender.gas, None)
1391+
let payment = if let Some(payment) = payment {
1392+
self.fake_to_real_object_id(payment)
1393+
.expect("Could not find specified payment object")
1394+
} else {
1395+
sponsor.gas
1396+
};
1397+
1398+
let payment_ref = self
1399+
.get_object(&payment, None)
13851400
.unwrap()
13861401
.compute_object_reference();
13871402

1388-
let data = txn_data(sender.address, sponsor.address, gas_payment);
1403+
let data = txn_data(sender.address, sponsor.address, payment_ref);
13891404
if sender.address == sponsor.address {
13901405
to_sender_signed_transaction(data, &sender.key_pair)
13911406
} else {

0 commit comments

Comments
 (0)