op_revm/api/
default_ctx.rs1use crate::{L1BlockInfo, OpSpecId, OpTransaction};
2use revm::{
3 context::{BlockEnv, CfgEnv, TxEnv},
4 database_interface::EmptyDB,
5 Context, Journal, MainContext,
6};
7
8pub type OpContext<DB> =
10 Context<BlockEnv, OpTransaction<TxEnv>, CfgEnv<OpSpecId>, DB, Journal<DB>, L1BlockInfo>;
11
12pub trait DefaultOp {
14 fn op() -> OpContext<EmptyDB>;
16}
17
18impl DefaultOp for OpContext<EmptyDB> {
19 fn op() -> Self {
20 Context::mainnet()
21 .with_tx(OpTransaction::default())
22 .with_cfg(CfgEnv::new_with_spec(OpSpecId::BEDROCK))
23 .with_chain(L1BlockInfo::default())
24 }
25}
26
27#[cfg(test)]
28mod test {
29 use super::*;
30 use crate::api::builder::OpBuilder;
31 use revm::{
32 inspector::{InspectEvm, NoOpInspector},
33 ExecuteEvm,
34 };
35
36 #[test]
37 fn default_run_op() {
38 let ctx = Context::op();
39 let mut evm = ctx.build_op_with_inspector(NoOpInspector {});
41 let _ = evm.replay();
43 let _ = evm.inspect_replay();
45 }
46}