From ae62ec80997b8f3544a7e11ab411610044fc437a Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Wed, 7 Mar 2018 11:48:45 +0100 Subject: [PATCH] Terminal.input() does not work on Windows, fixes #237 --- terminal/src/main/java/org/jline/utils/NonBlocking.java | 1 + .../src/test/java/org/jline/utils/NonBlockingTest.java | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/terminal/src/main/java/org/jline/utils/NonBlocking.java b/terminal/src/main/java/org/jline/utils/NonBlocking.java index 72fa343a3..3968b8cab 100644 --- a/terminal/src/main/java/org/jline/utils/NonBlocking.java +++ b/terminal/src/main/java/org/jline/utils/NonBlocking.java @@ -86,6 +86,7 @@ private NonBlockingReaderInputStream(NonBlockingReader reader, Charset charset, this.chars = CharBuffer.allocate(bufferSize); // No input available after initialization this.bytes.limit(0); + this.chars.limit(0); } @Override diff --git a/terminal/src/test/java/org/jline/utils/NonBlockingTest.java b/terminal/src/test/java/org/jline/utils/NonBlockingTest.java index 5386d1325..48c46f083 100644 --- a/terminal/src/test/java/org/jline/utils/NonBlockingTest.java +++ b/terminal/src/test/java/org/jline/utils/NonBlockingTest.java @@ -58,4 +58,12 @@ public void testNonBlockingPumpReader() throws IOException { assertEquals('δΈ­', nbr.read(100)); assertEquals(NonBlockingReader.READ_EXPIRED, nbr.read(100)); } + + @Test + public void testNonBlockStreamOnReader() throws IOException { + NonBlockingPumpReader reader = NonBlocking.nonBlockingPumpReader(); + NonBlockingInputStream is = NonBlocking.nonBlockingStream(reader, StandardCharsets.UTF_8); + reader.getWriter().write("a"); + assertEquals('a', is.read(1000L)); + } }