@@ -56,22 +56,24 @@ function handleDeviceConnected(cdc: USBCDC, useCircuitPython: boolean) {
5656  cdc . sendSerialByte ( '\n' . charCodeAt ( 0 ) ) ; 
5757} 
5858
59- function  handleSerialData ( value : Uint8Array ,  expectText : string   |   null )  { 
59+ function  testWriteSerialData ( value : Uint8Array ,  expectText : string ,   decoder :  TextDecoder )  { 
6060  process . stdout . write ( value ) ; 
61-   let  currentLine  =  '' ; 
62- 
63-   for  ( const  byte  of  value )  { 
64-     const  char  =  String . fromCharCode ( byte ) ; 
65-     if  ( char  ===  '\n' )  { 
66-       if  ( expectText  &&  currentLine . includes ( expectText ) )  { 
67-         console . log ( `Expected text found: "${ expectText }  ) ; 
68-         console . log ( 'TEST PASSED.' ) ; 
69-         process . exit ( 0 ) ; 
70-       } 
71-       currentLine  =  '' ; 
72-     }  else  { 
73-       currentLine  +=  char ; 
74-     } 
61+ 
62+   const  current  =  decoder . decode ( value ) ; 
63+ 
64+   if  ( current . includes ( expectText ) )  { 
65+     console . log ( `\nExpected text found: "${ expectText }  ) ; 
66+     console . log ( 'TEST PASSED.' ) ; 
67+     process . exit ( 0 ) ; 
68+   } 
69+ } 
70+ 
71+ function  installSerialDataWriter ( cdc : USBCDC ,  expectText : string  |  null )  { 
72+   if  ( expectText )  { 
73+     const  decoder  =  new  TextDecoder ( ) ; 
74+     cdc . onSerialData  =  ( value )  =>  testWriteSerialData ( value ,  expectText ,  decoder ) ; 
75+   }  else  { 
76+     cdc . onSerialData  =  ( value )  =>  process . stdout . write ( value ) ; 
7577  } 
7678} 
7779
@@ -90,7 +92,7 @@ function simulateMicropythonImage(opts: CliOptions) {
9092
9193  const  cdc  =  new  USBCDC ( mcu . usbCtrl ) ; 
9294  cdc . onDeviceConnected  =  ( )  =>  handleDeviceConnected ( cdc ,  opts [ 'circuit-python' ] ) ; 
93-   cdc . onSerialData   =   ( value )   =>   handleSerialData ( value ,  opts [ 'expect-text' ] ) ; 
95+   installSerialDataWriter ( cdc ,  opts [ 'expect-text' ] ) ; 
9496
9597  if  ( process . stdin . isTTY )  process . stdin . setRawMode ( true ) ; 
9698
0 commit comments