11use instruction_decoder_tests:: {
2- capture_account_states, decode_transaction , format_transaction , strip_ansi_codes ,
3- TransactionLogger , LiteSVM ,
2+ capture_account_states, create_logging_callback , decode_transaction , format_transaction ,
3+ strip_ansi_codes , LiteSVM ,
44} ;
55use light_instruction_decoder:: EnhancedLoggingConfig ;
66use solana_keypair:: { keypair_from_seed, Keypair } ;
@@ -14,33 +14,30 @@ fn deterministic_keypair(seed_byte: u8) -> Keypair {
1414 keypair_from_seed ( & [ seed_byte; 32 ] ) . unwrap ( )
1515}
1616
17- fn setup ( ) -> ( LiteSVM , Keypair ) {
18- let mut svm = LiteSVM :: new ( ) ;
17+ fn setup ( ) -> ( LiteSVM , Keypair , EnhancedLoggingConfig ) {
18+ let config = EnhancedLoggingConfig :: debug ( ) ;
19+ let mut svm = LiteSVM :: new ( )
20+ . with_transaction_callback ( create_logging_callback ( config. clone ( ) ) ) ;
1921 let payer = deterministic_keypair ( 1 ) ;
2022 svm. airdrop ( & payer. pubkey ( ) , 10 * LAMPORTS_PER_SOL ) . unwrap ( ) ;
21- ( svm, payer)
23+ ( svm, payer, config )
2224}
2325
2426#[ test]
2527fn test_transaction_logger_transfer ( ) {
26- let ( mut svm, payer) = setup ( ) ;
28+ let ( mut svm, payer, config ) = setup ( ) ;
2729 let recipient = deterministic_keypair ( 2 ) ;
2830
29- let config = EnhancedLoggingConfig :: debug ( ) ;
30- let logger = TransactionLogger :: new ( config. clone ( ) ) ;
31-
3231 let ix = system_instruction:: transfer ( & payer. pubkey ( ) , & recipient. pubkey ( ) , LAMPORTS_PER_SOL ) ;
3332 let msg = Message :: new ( & [ ix] , Some ( & payer. pubkey ( ) ) ) ;
3433 let tx = Transaction :: new ( & [ & payer] , msg, svm. latest_blockhash ( ) ) ;
3534 let versioned_tx = solana_transaction:: versioned:: VersionedTransaction :: from ( tx) ;
3635
37- // Manually capture states so we can also assert the formatted output
3836 let pre_states = capture_account_states ( & svm, & versioned_tx) ;
39- let result = logger . send_transaction ( & mut svm , versioned_tx. clone ( ) ) ;
37+ let result = svm . send_transaction ( versioned_tx. clone ( ) ) ;
4038 assert ! ( result. is_ok( ) ) ;
4139 let post_states = capture_account_states ( & svm, & versioned_tx) ;
4240
43- // Re-decode with captured states (logger already logged, but we need the output for snapshot)
4441 let log = decode_transaction (
4542 & versioned_tx,
4643 & result,
@@ -68,12 +65,9 @@ fn test_transaction_logger_transfer() {
6865
6966#[ test]
7067fn test_transaction_logger_multiple_transactions ( ) {
71- let ( mut svm, payer) = setup ( ) ;
68+ let ( mut svm, payer, _config ) = setup ( ) ;
7269 let recipient = deterministic_keypair ( 2 ) ;
7370
74- let config = EnhancedLoggingConfig :: debug ( ) ;
75- let logger = TransactionLogger :: new ( config. clone ( ) ) ;
76-
7771 // Send two transfers
7872 for i in 0 ..2 {
7973 let ix = system_instruction:: transfer (
@@ -84,14 +78,14 @@ fn test_transaction_logger_multiple_transactions() {
8478 let msg = Message :: new ( & [ ix] , Some ( & payer. pubkey ( ) ) ) ;
8579 let tx = Transaction :: new ( & [ & payer] , msg, svm. latest_blockhash ( ) ) ;
8680 let versioned_tx = solana_transaction:: versioned:: VersionedTransaction :: from ( tx) ;
87- let result = logger . send_transaction ( & mut svm , versioned_tx) ;
81+ let result = svm . send_transaction ( versioned_tx) ;
8882 assert ! ( result. is_ok( ) ) ;
8983 }
9084}
9185
9286#[ test]
9387fn test_account_state_capture_shows_lamport_changes ( ) {
94- let ( mut svm, payer) = setup ( ) ;
88+ let ( mut svm, payer, config ) = setup ( ) ;
9589 let recipient = deterministic_keypair ( 2 ) ;
9690 let transfer_amount = LAMPORTS_PER_SOL ;
9791
@@ -115,7 +109,6 @@ fn test_account_state_capture_shows_lamport_changes() {
115109 let recipient_post = post_states. get ( & recipient. pubkey ( ) ) . unwrap ( ) ;
116110 assert_eq ! ( recipient_post. 0 - recipient_pre. 0 , transfer_amount) ;
117111
118- let config = EnhancedLoggingConfig :: debug ( ) ;
119112 let log = decode_transaction (
120113 & versioned_tx,
121114 & result,
@@ -142,29 +135,20 @@ fn test_account_state_capture_shows_lamport_changes() {
142135
143136#[ test]
144137fn test_log_file_is_written ( ) {
145- let ( mut svm, payer) = setup ( ) ;
146- let recipient = deterministic_keypair ( 2 ) ;
147-
148138 let config = EnhancedLoggingConfig :: default ( ) ;
139+ let mut svm = LiteSVM :: new ( )
140+ . with_transaction_callback ( create_logging_callback ( config. clone ( ) ) ) ;
141+ let payer = deterministic_keypair ( 1 ) ;
142+ svm. airdrop ( & payer. pubkey ( ) , 10 * LAMPORTS_PER_SOL ) . unwrap ( ) ;
143+ let recipient = deterministic_keypair ( 2 ) ;
149144
150145 let ix = system_instruction:: transfer ( & payer. pubkey ( ) , & recipient. pubkey ( ) , LAMPORTS_PER_SOL ) ;
151146 let msg = Message :: new ( & [ ix] , Some ( & payer. pubkey ( ) ) ) ;
152147 let tx = Transaction :: new ( & [ & payer] , msg, svm. latest_blockhash ( ) ) ;
153148 let versioned_tx = solana_transaction:: versioned:: VersionedTransaction :: from ( tx) ;
154149
155- let pre_states = capture_account_states ( & svm, & versioned_tx) ;
156150 let result = svm. send_transaction ( versioned_tx. clone ( ) ) ;
157- let post_states = capture_account_states ( & svm, & versioned_tx) ;
158-
159- let log = decode_transaction (
160- & versioned_tx,
161- & result,
162- & config,
163- Some ( & pre_states) ,
164- Some ( & post_states) ,
165- ) ;
166- let formatted = format_transaction ( & log, & config, 1 ) ;
167- instruction_decoder_tests:: write_to_log_file ( & formatted) ;
151+ assert ! ( result. is_ok( ) ) ;
168152
169153 let log_content = std:: fs:: read_to_string ( "target/instruction_decoder.log" )
170154 . expect ( "Log file should exist" ) ;
0 commit comments