@@ -85,9 +85,7 @@ fn sign_message(#[case] seed: Seed) {
85
85
let pk_destination = Destination :: PublicKey ( pk) ;
86
86
87
87
for destination in [ pkh_destination, pk_destination] {
88
- let mut devices = find_devices ( false ) ;
89
- assert ! ( !devices. is_empty( ) ) ;
90
- let client = devices. pop ( ) . unwrap ( ) . connect ( ) . unwrap ( ) ;
88
+ let client = find_test_device ( ) ;
91
89
92
90
let mut signer = TrezorSigner :: new ( chain_config. clone ( ) , Arc :: new ( Mutex :: new ( client) ) ) ;
93
91
let message = vec ! [ rng. gen :: <u8 >( ) , rng. gen :: <u8 >( ) , rng. gen :: <u8 >( ) ] ;
@@ -127,9 +125,7 @@ fn sign_transaction_intent(#[case] seed: Seed) {
127
125
. unwrap ( ) ;
128
126
let mut account = Account :: new ( config. clone ( ) , & mut db_tx, key_chain, None ) . unwrap ( ) ;
129
127
130
- let mut devices = find_devices ( false ) ;
131
- assert ! ( !devices. is_empty( ) ) ;
132
- let client = devices. pop ( ) . unwrap ( ) . connect ( ) . unwrap ( ) ;
128
+ let client = find_test_device ( ) ;
133
129
134
130
let mut signer = TrezorSigner :: new ( config. clone ( ) , Arc :: new ( Mutex :: new ( client) ) ) ;
135
131
@@ -493,9 +489,7 @@ fn sign_transaction(#[case] seed: Seed) {
493
489
) ) ;
494
490
let ptx = req. into_partially_signed_tx ( additional_info) . unwrap ( ) ;
495
491
496
- let mut devices = find_devices ( false ) ;
497
- assert ! ( !devices. is_empty( ) ) ;
498
- let client = devices. pop ( ) . unwrap ( ) . connect ( ) . unwrap ( ) ;
492
+ let client = find_test_device ( ) ;
499
493
500
494
let mut signer = TrezorSigner :: new ( chain_config. clone ( ) , Arc :: new ( Mutex :: new ( client) ) ) ;
501
495
let ( ptx, _, _) = signer. sign_tx ( ptx, account. key_chain ( ) , & db_tx) . unwrap ( ) ;
@@ -521,3 +515,26 @@ fn sign_transaction(#[case] seed: Seed) {
521
515
. unwrap ( ) ;
522
516
}
523
517
}
518
+
519
+ fn find_test_device ( ) -> Trezor {
520
+ let use_real_device = std:: env:: var_os ( "TEST_REAL_DEVICE" ) . is_some ( ) ;
521
+
522
+ let mut devices = find_devices ( false )
523
+ . into_iter ( )
524
+ . filter ( |device| device. model == Model :: Trezor || device. model == Model :: TrezorEmulator )
525
+ . collect_vec ( ) ;
526
+
527
+ if use_real_device {
528
+ // Try to find the first real device
529
+ if let Some ( idx) = devices. iter ( ) . position ( |d| d. model == Model :: Trezor ) {
530
+ return devices. swap_remove ( idx) . connect ( ) . unwrap ( ) ;
531
+ }
532
+ }
533
+
534
+ devices
535
+ . into_iter ( )
536
+ . find ( |d| d. model == Model :: TrezorEmulator )
537
+ . unwrap ( )
538
+ . connect ( )
539
+ . unwrap ( )
540
+ }
0 commit comments