Skip to content

Commit 5d00083

Browse files
starknet_os_flow_tests: change FlowTestTx to enum
1 parent b9f45f8 commit 5d00083

File tree

1 file changed

+51
-23
lines changed

1 file changed

+51
-23
lines changed

crates/starknet_os_flow_tests/src/test_manager.rs

Lines changed: 51 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,25 @@ pub(crate) struct TestParameters {
8888
pub(crate) messages_to_l2: Vec<MessageToL2>,
8989
}
9090

91-
pub(crate) struct FlowTestTx {
92-
tx: BlockifierTransaction,
93-
revert_reason: Option<String>,
91+
pub(crate) enum FlowTestTx {
92+
Successful(BlockifierTransaction),
93+
Reverted { tx: BlockifierTransaction, revert_reason: String },
94+
}
95+
96+
impl FlowTestTx {
97+
pub(crate) fn tx(&self) -> &BlockifierTransaction {
98+
match self {
99+
FlowTestTx::Successful(tx) => tx,
100+
FlowTestTx::Reverted { tx, .. } => tx,
101+
}
102+
}
103+
104+
pub(crate) fn revert_reason(&self) -> Option<&String> {
105+
match self {
106+
FlowTestTx::Reverted { revert_reason, .. } => Some(revert_reason),
107+
FlowTestTx::Successful(_) => None,
108+
}
109+
}
94110
}
95111

96112
/// Manages the execution of flow tests by maintaining the initial state and transactions.
@@ -293,12 +309,11 @@ impl<S: FlowTestState> TestManager<S> {
293309
else {
294310
panic!("Expected a V1 contract class");
295311
};
296-
self.last_block_txs_mut().push(FlowTestTx {
297-
tx: BlockifierTransaction::new_for_sequencing(StarknetApiTransaction::Account(
312+
self.last_block_txs_mut().push(FlowTestTx::Successful(
313+
BlockifierTransaction::new_for_sequencing(StarknetApiTransaction::Account(
298314
AccountTransaction::Declare(tx),
299315
)),
300-
revert_reason: None,
301-
});
316+
));
302317

303318
self.execution_contracts
304319
.declared_class_hash_to_component_hashes
@@ -311,11 +326,16 @@ impl<S: FlowTestState> TestManager<S> {
311326
}
312327

313328
pub(crate) fn add_invoke_tx(&mut self, tx: InvokeTransaction, revert_reason: Option<String>) {
314-
self.last_block_txs_mut().push(FlowTestTx {
315-
tx: BlockifierTransaction::new_for_sequencing(StarknetApiTransaction::Account(
316-
AccountTransaction::Invoke(tx),
329+
self.last_block_txs_mut().push(match revert_reason {
330+
Some(revert_reason) => FlowTestTx::Reverted {
331+
tx: BlockifierTransaction::new_for_sequencing(StarknetApiTransaction::Account(
332+
AccountTransaction::Invoke(tx),
333+
)),
334+
revert_reason,
335+
},
336+
None => FlowTestTx::Successful(BlockifierTransaction::new_for_sequencing(
337+
StarknetApiTransaction::Account(AccountTransaction::Invoke(tx)),
317338
)),
318-
revert_reason,
319339
});
320340
}
321341

@@ -339,35 +359,40 @@ impl<S: FlowTestState> TestManager<S> {
339359
let ContractClass::V0(class) = tx.class_info.contract_class.clone() else {
340360
panic!("Expected a V0 contract class");
341361
};
342-
self.last_block_txs_mut().push(FlowTestTx {
343-
tx: BlockifierTransaction::new_for_sequencing(StarknetApiTransaction::Account(
362+
self.last_block_txs_mut().push(FlowTestTx::Successful(
363+
BlockifierTransaction::new_for_sequencing(StarknetApiTransaction::Account(
344364
AccountTransaction::Declare(tx),
345365
)),
346-
revert_reason: None,
347-
});
366+
));
348367
self.execution_contracts
349368
.executed_contracts
350369
.deprecated_contracts
351370
.insert(compiled_class_hash, class);
352371
}
353372

354373
pub(crate) fn add_deploy_account_tx(&mut self, tx: DeployAccountTransaction) {
355-
self.last_block_txs_mut().push(FlowTestTx {
356-
tx: BlockifierTransaction::new_for_sequencing(StarknetApiTransaction::Account(
374+
self.last_block_txs_mut().push(FlowTestTx::Successful(
375+
BlockifierTransaction::new_for_sequencing(StarknetApiTransaction::Account(
357376
AccountTransaction::DeployAccount(tx),
358377
)),
359-
revert_reason: None,
360-
});
378+
));
361379
}
362380

363381
pub(crate) fn add_l1_handler_tx(
364382
&mut self,
365383
tx: L1HandlerTransaction,
366384
revert_reason: Option<String>,
367385
) {
368-
self.last_block_txs_mut().push(FlowTestTx {
369-
tx: BlockifierTransaction::new_for_sequencing(StarknetApiTransaction::L1Handler(tx)),
370-
revert_reason,
386+
self.last_block_txs_mut().push(match revert_reason {
387+
Some(revert_reason) => FlowTestTx::Reverted {
388+
tx: BlockifierTransaction::new_for_sequencing(StarknetApiTransaction::L1Handler(
389+
tx,
390+
)),
391+
revert_reason,
392+
},
393+
None => FlowTestTx::Successful(BlockifierTransaction::new_for_sequencing(
394+
StarknetApiTransaction::L1Handler(tx),
395+
)),
371396
});
372397
}
373398

@@ -536,7 +561,10 @@ impl<S: FlowTestState> TestManager<S> {
536561
{
537562
let (block_txs, revert_reasons): (Vec<_>, Vec<_>) = block_txs_with_reason
538563
.into_iter()
539-
.map(|flow_test_tx| (flow_test_tx.tx, flow_test_tx.revert_reason))
564+
.map(|flow_test_tx| match flow_test_tx {
565+
FlowTestTx::Successful(tx) => (tx, None),
566+
FlowTestTx::Reverted { tx, revert_reason } => (tx, Some(revert_reason)),
567+
})
540568
.unzip();
541569
// Clone the block info for later use.
542570
let block_info = block_context.block_info().clone();

0 commit comments

Comments
 (0)