light_program_test/program_test/
config.rs1#[cfg(feature = "devenv")]
2use account_compression::{
3 AddressMerkleTreeConfig, AddressQueueConfig, NullifierQueueConfig, StateMerkleTreeConfig,
4};
5#[cfg(feature = "devenv")]
6use light_batched_merkle_tree::{
7 initialize_address_tree::InitAddressTreeAccountsInstructionData,
8 initialize_state_tree::InitStateTreeAccountsInstructionData,
9};
10#[cfg(feature = "devenv")]
11use light_registry::protocol_config::state::ProtocolConfig;
12use solana_sdk::pubkey::Pubkey;
13
14use crate::logging::EnhancedLoggingConfig;
15
16#[derive(Debug, Clone)]
18pub struct ProgramTestConfig {
19 pub additional_programs: Option<Vec<(&'static str, Pubkey)>>,
20 #[cfg(feature = "devenv")]
21 pub protocol_config: ProtocolConfig,
22 pub with_prover: bool,
23 #[cfg(feature = "devenv")]
24 pub skip_register_programs: bool,
25 #[cfg(feature = "devenv")]
26 pub skip_v1_trees: bool,
27 #[cfg(feature = "devenv")]
28 pub skip_second_v1_tree: bool,
29 #[cfg(feature = "devenv")]
30 pub v1_state_tree_config: StateMerkleTreeConfig,
31 #[cfg(feature = "devenv")]
32 pub v1_nullifier_queue_config: NullifierQueueConfig,
33 #[cfg(feature = "devenv")]
34 pub v1_address_tree_config: AddressMerkleTreeConfig,
35 #[cfg(feature = "devenv")]
36 pub v1_address_queue_config: AddressQueueConfig,
37 #[cfg(feature = "devenv")]
38 pub v2_state_tree_config: Option<InitStateTreeAccountsInstructionData>,
39 #[cfg(feature = "devenv")]
40 pub v2_address_tree_config: Option<InitAddressTreeAccountsInstructionData>,
41 #[cfg(feature = "devenv")]
42 pub skip_protocol_init: bool,
43 pub log_failed_tx: bool,
45 pub no_logs: bool,
47 pub skip_startup_logs: bool,
49 pub with_forester: bool,
51 pub log_light_protocol_events: bool,
53 pub enhanced_logging: EnhancedLoggingConfig,
55}
56
57impl ProgramTestConfig {
58 pub fn new(
59 with_prover: bool,
60 additional_programs: Option<Vec<(&'static str, Pubkey)>>,
61 ) -> Self {
62 Self {
63 additional_programs,
64 with_prover,
65 ..Default::default()
66 }
67 }
68
69 #[cfg(feature = "v2")]
70 pub fn new_v2(
71 with_prover: bool,
72 additional_programs: Option<Vec<(&'static str, Pubkey)>>,
73 ) -> Self {
74 Self {
75 additional_programs,
76 with_prover,
77 #[cfg(feature = "devenv")]
78 v2_state_tree_config: Some(InitStateTreeAccountsInstructionData::test_default()),
79 #[cfg(feature = "devenv")]
80 v2_address_tree_config: Some(InitAddressTreeAccountsInstructionData::test_default()),
81 ..Default::default()
82 }
83 }
84
85 #[cfg(feature = "devenv")]
86 pub fn default_with_batched_trees(with_prover: bool) -> Self {
87 Self {
88 additional_programs: None,
89 with_prover,
90 v2_state_tree_config: Some(InitStateTreeAccountsInstructionData::test_default()),
91 v2_address_tree_config: Some(InitAddressTreeAccountsInstructionData::test_default()),
92 ..Default::default()
93 }
94 }
95
96 #[cfg(feature = "devenv")]
97 pub fn default_test_forester(with_prover: bool) -> Self {
98 Self {
99 additional_programs: None,
100 with_prover,
101 v2_state_tree_config: Some(InitStateTreeAccountsInstructionData::test_default()),
102 v2_address_tree_config: Some(InitAddressTreeAccountsInstructionData::test_default()),
103 ..Default::default()
104 }
105 }
106
107 pub fn with_light_protocol_events(mut self) -> Self {
109 self.log_light_protocol_events = true;
110 self
111 }
112
113 pub fn without_light_protocol_events(mut self) -> Self {
115 self.log_light_protocol_events = false;
116 self
117 }
118}
119
120impl Default for ProgramTestConfig {
121 fn default() -> Self {
122 Self {
123 additional_programs: None,
124 #[cfg(feature = "devenv")]
125 protocol_config: ProtocolConfig {
126 active_phase_length: 1_000_000_000,
128 slot_length: 1_000_000_000 - 1,
129 genesis_slot: 0,
130 registration_phase_length: 2,
131 ..Default::default()
132 },
133 with_prover: true,
134 #[cfg(feature = "devenv")]
135 skip_second_v1_tree: false,
136 #[cfg(feature = "devenv")]
137 skip_register_programs: false,
138 #[cfg(feature = "devenv")]
139 v1_state_tree_config: StateMerkleTreeConfig::default(),
140 #[cfg(feature = "devenv")]
141 v1_address_tree_config: AddressMerkleTreeConfig::default(),
142 #[cfg(feature = "devenv")]
143 v1_address_queue_config: AddressQueueConfig::default(),
144 #[cfg(feature = "devenv")]
145 v1_nullifier_queue_config: NullifierQueueConfig::default(),
146 #[cfg(feature = "devenv")]
147 v2_state_tree_config: None,
148 #[cfg(feature = "devenv")]
149 v2_address_tree_config: None,
150 #[cfg(feature = "devenv")]
151 skip_protocol_init: false,
152 #[cfg(feature = "devenv")]
153 skip_v1_trees: false,
154 log_failed_tx: true,
155 no_logs: false,
156 skip_startup_logs: true,
157 with_forester: true,
158 log_light_protocol_events: false, enhanced_logging: EnhancedLoggingConfig::from_env(),
160 }
161 }
162}