@@ -134,6 +134,18 @@ impl<W: Write> StreamSession<W> {
134
134
self . exp ( & Str ( needle. to_string ( ) ) )
135
135
}
136
136
}
137
+
138
+ #[ macro_export]
139
+ macro_rules! exp_any {
140
+ ( $session: ident, $( $rest: tt) * ) => {
141
+ // $crate::read_any!(session.reader, $($rest)*)
142
+ {
143
+ let reader = & mut $session. reader;
144
+ $crate:: read_any!( reader, $( $rest) * ) ;
145
+ }
146
+ }
147
+ }
148
+
137
149
/// Interact with a process with read/write/signals, etc.
138
150
#[ allow( dead_code) ]
139
151
pub struct PtySession {
@@ -434,7 +446,8 @@ pub fn spawn_stream<R: Read + Send + 'static, W: Write>(reader: R, writer: W, ti
434
446
#[ cfg( test) ]
435
447
mod tests {
436
448
use super :: * ;
437
- use super :: super :: reader:: { NBytes , Until , OrInterest } ;
449
+ use super :: super :: reader:: { NBytes } ;
450
+ use crate :: exp_any;
438
451
439
452
#[ cfg( unix) ]
440
453
#[ test]
@@ -510,13 +523,12 @@ mod tests {
510
523
let mut p = spawn ( "cat" , Some ( 1000 ) ) . expect ( "cannot run cat" ) ;
511
524
p. send_line ( "Hi" ) ?;
512
525
513
- let until = Until ( NBytes ( 3 ) ) . or ( Str ( "Hi" ) ) ;
526
+ exp_any ! ( p,
527
+ NBytes ( 3 ) , res => { assert_eq!( "Hi\r " . to_string( ) , res) }
528
+ Str ( "Hi" ) , _ => { assert!( false ) }
529
+ _ => { assert!( false , format!( "unxpectedly, didn't find a match" ) ) }
530
+ ) ;
514
531
515
- match p. exp ( until. as_ref ( ) ) {
516
- Ok ( OrInterest :: Lhs ( s) ) => assert_eq ! ( "Hi\r " . to_string( ) , s) ,
517
- Ok ( OrInterest :: Rhs ( _) ) => assert ! ( false ) ,
518
- Err ( e) => assert ! ( false , format!( "got error: {}" , e) ) ,
519
- }
520
532
Ok ( ( ) )
521
533
} ( )
522
534
. unwrap_or_else ( |e| panic ! ( "test_expect_any failed: {}" , e) ) ;
@@ -529,14 +541,13 @@ mod tests {
529
541
let mut p = spawn ( "cat" , Some ( 1000 ) ) . expect ( "cannot run cat" ) ;
530
542
p. send_line ( "Hello World" ) ?;
531
543
532
- let until = Until ( Str ( "Hi" ) ) . or ( Str ( "World" ) ) . or ( NBytes ( 3 ) ) ;
544
+ exp_any ! ( p,
545
+ Str ( "Hi" ) , _ => { assert!( false ) }
546
+ Str ( "World" ) , res => { assert_eq!( "Hello " . to_string( ) , res) }
547
+ NBytes ( 3 ) , _ => { assert!( false ) }
548
+ _ => { assert!( false , format!( "unxpectedly, didn't find a match" ) ) }
549
+ ) ;
533
550
534
- match p. exp ( until. as_ref ( ) ) {
535
- Ok ( OrInterest :: Lhs ( OrInterest :: Lhs ( _) ) ) => assert ! ( false ) ,
536
- Ok ( OrInterest :: Lhs ( OrInterest :: Rhs ( s) ) ) => assert_eq ! ( "Hello " . to_string( ) , s) ,
537
- Ok ( OrInterest :: Rhs ( _) ) => assert ! ( false ) ,
538
- Err ( e) => assert ! ( false , format!( "got error: {}" , e) ) ,
539
- }
540
551
Ok ( ( ) )
541
552
} ( )
542
553
. unwrap_or_else ( |e| panic ! ( "test_expect_any failed: {}" , e) ) ;
0 commit comments