1818import static org .junit .Assert .assertEquals ;
1919import static org .junit .Assert .fail ;
2020
21- import java .io .ByteArrayInputStream ;
2221import java .io .File ;
2322import java .io .IOException ;
24- import java .io .InputStream ;
23+ import java .io .OutputStream ;
24+ import java .io .PipedInputStream ;
25+ import java .io .PipedOutputStream ;
2526import java .util .concurrent .ArrayBlockingQueue ;
2627import java .util .concurrent .ThreadPoolExecutor ;
2728import java .util .concurrent .TimeUnit ;
2829
30+ import org .jline .reader .LineReader ;
31+ import org .jline .terminal .TerminalBuilder ;
2932import org .junit .Rule ;
3033import org .junit .Test ;
3134import org .junit .rules .TemporaryFolder ;
3235
36+ import io .openliberty .tools .common .ai .util .Utils ;
37+
3338public class DevUtilRunTestThreadTest extends BaseDevUtilTest {
3439
3540 private class RunTestThreadUtil extends DevTestUtil {
@@ -110,20 +115,27 @@ public void testRunHotTestThread() throws Exception {
110115 assertEquals (1 , util .counter );
111116 }
112117
113- // @Test
118+ @ Test
114119 public void testRunHotkeyReaderThread () throws Exception {
115120 RunTestThreadUtil util = new RunTestThreadUtil (false );
116121 assertEquals (0 , util .counter );
117122
118123 final ThreadPoolExecutor executor = new ThreadPoolExecutor (1 , 1 , 0L , TimeUnit .MILLISECONDS , new ArrayBlockingQueue <Runnable >(1 , true ));
119124
120- InputStream previousSystemIn = System . in ;
125+ LineReader previousReader = Utils . reader ;
121126 try {
122- // replace system input with a newline string
123- String enter = "\n " ;
124- System .setIn (new ByteArrayInputStream (enter .getBytes ()));
127+ // replace line reader using a terminal on piped input stream
128+ PipedOutputStream out = new PipedOutputStream ();
129+ PipedInputStream in = new PipedInputStream (out );
130+ Utils .reader = null ;
131+ Utils .getReader (
132+ TerminalBuilder .builder ()
133+ .streams (in , OutputStream .nullOutputStream ())
134+ .build ());
125135
126136 // run test on newline input
137+ String enter = "\n " ;
138+ out .write (enter .getBytes ());
127139 util .runHotkeyReaderThread (executor );
128140
129141 // wait for executor to pickup test job
@@ -146,7 +158,7 @@ public void testRunHotkeyReaderThread() throws Exception {
146158 // verify that runTests() was called once
147159 assertEquals (1 , util .counter );
148160 } finally {
149- System . setIn ( previousSystemIn ) ;
161+ Utils . reader = previousReader ;
150162 }
151163
152164 }
0 commit comments