You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/11/30 23:50:17 UTC
[groovy] branch master updated: fix for tests
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new 19eca1759d fix for tests
19eca1759d is described below
commit 19eca1759dc884b3feb169e56310710a70e8abfd
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Wed Nov 30 17:49:50 2022 -0600
fix for tests
---
.../groovy/groovysh/InteractiveShellRunner.groovy | 11 ++-
.../apache/groovy/groovysh/ErrorDisplayTest.groovy | 48 +++++------
.../apache/groovy/groovysh/ShellRunnerTest.groovy | 94 ++++++++++------------
.../groovy/groovysh/ShellRunnerTestSupport.groovy | 14 ++--
4 files changed, 76 insertions(+), 91 deletions(-)
diff --git a/subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/InteractiveShellRunner.groovy b/subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/InteractiveShellRunner.groovy
index b177fd28e7..ce1eca55c4 100644
--- a/subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/InteractiveShellRunner.groovy
+++ b/subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/InteractiveShellRunner.groovy
@@ -19,6 +19,7 @@
package org.apache.groovy.groovysh
import groovy.transform.AutoFinal
+import groovy.transform.CompileDynamic
import groovy.transform.CompileStatic
import jline.console.ConsoleReader
import jline.console.completer.AggregateCompleter
@@ -42,6 +43,7 @@ class InteractiveShellRunner extends ShellRunner implements Runnable {
final CommandsMultiCompleter completer
WrappedInputStream wrappedInputStream
+ @CompileDynamic
InteractiveShellRunner(Groovysh shell, Closure prompt) {
super(shell)
@@ -75,7 +77,8 @@ class InteractiveShellRunner extends ShellRunner implements Runnable {
def filenameCompleter = new FileNameCompleter(false)
reader.addCompleter(completer)
- reader.addCompleter(new org.apache.groovy.groovysh.completion.antlr4.GroovySyntaxCompleter(shell, reflectionCompleter, classnameCompleter, identifierCompleters, filenameCompleter))
+ reader.addCompleter(new org.apache.groovy.groovysh.completion.antlr4.GroovySyntaxCompleter(
+ shell, reflectionCompleter, classnameCompleter, identifierCompleters, filenameCompleter))
}
@Override
@@ -92,7 +95,7 @@ class InteractiveShellRunner extends ShellRunner implements Runnable {
super.run()
}
- @Override
+ @Override @CompileDynamic
protected String readLine() {
try {
if (Boolean.valueOf(Preferences.get(Groovysh.AUTOINDENT_PREFERENCE_KEY))) {
@@ -127,8 +130,8 @@ class InteractiveShellRunner extends ShellRunner implements Runnable {
// we save the evicted line in case someone wants to use it with history recall
if (shell instanceof Groovysh) {
def history = shell.history
- shell.historyFull = (history != null) && (history.size() >= history.maxSize)
- if (shell.historyFull) {
+ shell.historyFull = history != null && history.size() >= history.maxSize
+ if (shell.isHistoryFull()) {
def first = history.first()
if (first) {
shell.evictedLine = first.value()
diff --git a/subprojects/groovy-groovysh/src/test/groovy/org/apache/groovy/groovysh/ErrorDisplayTest.groovy b/subprojects/groovy-groovysh/src/test/groovy/org/apache/groovy/groovysh/ErrorDisplayTest.groovy
index 25717f8b32..9bb8ce7d19 100644
--- a/subprojects/groovy-groovysh/src/test/groovy/org/apache/groovy/groovysh/ErrorDisplayTest.groovy
+++ b/subprojects/groovy-groovysh/src/test/groovy/org/apache/groovy/groovysh/ErrorDisplayTest.groovy
@@ -18,55 +18,43 @@
*/
package org.apache.groovy.groovysh
-import jline.console.ConsoleReader
import jline.console.completer.CandidateListCompletionHandler
class ErrorDisplayTest extends ShellRunnerTestSupport {
void testInput() {
- readerStubber.demand.readLine { 'foo' }
+ readerStubber.demand.readLine {'foo'}
readerStubber.demand.getCompletionHandler {new CandidateListCompletionHandler()}
- shellMocker.use {
- readerStubber.use {
- Groovysh shellMock = new Groovysh()
- ConsoleReader readerStub = new ConsoleReader()
-
- InteractiveShellRunner shellRunner = new InteractiveShellRunner(shellMock, { '>' })
- shellRunner.reader = readerStub
- // assert no exception
+ readerStubber.use {
+ shellMocker.use {
+ def shellRunner = new InteractiveShellRunner(new Groovysh(), {'>'})
shellRunner.run()
+ // no exception
}
}
}
void testError() {
- readerStubber.demand.readLine { throw new StringIndexOutOfBoundsException() }
+ readerStubber.demand.readLine {throw new StringIndexOutOfBoundsException()}
readerStubber.demand.getCompletionHandler {new CandidateListCompletionHandler()}
- shellMocker.use {
- readerStubber.use {
- Groovysh shellMock = new Groovysh()
- ConsoleReader readerStub = new ConsoleReader()
-
- InteractiveShellRunner shellRunner = new InteractiveShellRunner(shellMock, { '>' })
- shellRunner.reader = readerStub
- // assert no exception
+ readerStubber.use {
+ shellMocker.use {
+ def shellRunner = new InteractiveShellRunner(new Groovysh(), {'>'})
shellRunner.run()
+ // no exception
}
}
}
void testError2() {
- readerStubber.demand.readLine { throw new Throwable('MockException') }
+ readerStubber.demand.readLine {throw new Throwable('MockException')}
readerStubber.demand.getCompletionHandler {new CandidateListCompletionHandler()}
- shellMocker.use { readerStubber.use {
- Groovysh shellMock = new Groovysh()
- ConsoleReader readerStub = new ConsoleReader()
-
- InteractiveShellRunner shellRunner = new InteractiveShellRunner(shellMock, {'>'})
- shellRunner.reader = readerStub
- // assert no exception
- shellRunner.run()
- }}
+ readerStubber.use {
+ shellMocker.use {
+ def shellRunner = new InteractiveShellRunner(new Groovysh(), {'>'})
+ shellRunner.run()
+ // no exception
+ }
+ }
}
-
}
diff --git a/subprojects/groovy-groovysh/src/test/groovy/org/apache/groovy/groovysh/ShellRunnerTest.groovy b/subprojects/groovy-groovysh/src/test/groovy/org/apache/groovy/groovysh/ShellRunnerTest.groovy
index 6ec455a8df..a54e9e9889 100644
--- a/subprojects/groovy-groovysh/src/test/groovy/org/apache/groovy/groovysh/ShellRunnerTest.groovy
+++ b/subprojects/groovy-groovysh/src/test/groovy/org/apache/groovy/groovysh/ShellRunnerTest.groovy
@@ -28,43 +28,49 @@ import org.codehaus.groovy.tools.shell.util.Preferences
class ShellRunnerTest extends GroovyTestCase {
private Groovysh groovysh
+ private MockFor readerMocker
@Override
- void setUp() {
+ protected void setUp() {
super.setUp()
ByteArrayOutputStream mockOut = new ByteArrayOutputStream()
ByteArrayOutputStream mockErr = new ByteArrayOutputStream()
+ IO testio = new IO(new ByteArrayInputStream(), mockOut, mockErr)
- IO testio = new IO(new ByteArrayInputStream(),
- mockOut,
- mockErr)
groovysh = new Groovysh(testio)
+
+ readerMocker = new MockFor(ConsoleReader)
+ readerMocker.demand.getCompletionHandler(1) {new CandidateListCompletionHandler(stripAnsi: true)}
+ readerMocker.demand.setExpandEvents {}
+ readerMocker.demand.addCompleter(2) {}
}
+ //--------------------------------------------------------------------------
+
void testReadLineIndentPreferenceOff() {
groovysh.buffers.buffers.add(['Foo {'])
groovysh.buffers.select(1)
- MockFor readerMocker = primedMockForConsoleReader()
- readerMocker.demand.readLine(1) {'Foo {'}
- MockFor preferencesMocker = new MockFor(Preferences)
+ def preferencesMocker = new MockFor(Preferences)
preferencesMocker.demand.get(1) {'false'}
- preferencesMocker.use {readerMocker.use {
- InteractiveShellRunner runner = new InteractiveShellRunner(groovysh, {'>'})
+ readerMocker.demand.readLine(1) {'Foo {'}
+ preferencesMocker.use { readerMocker.use {
+ def runner = new InteractiveShellRunner(groovysh, {'>'})
runner.readLine()
- assertEquals(0, runner.wrappedInputStream.inserted.available())
+
+ assert runner.wrappedInputStream.inserted.available() == 0
}}
}
void testReadLineIndentNone() {
- MockFor readerMocker = primedMockForConsoleReader()
- readerMocker.demand.readLine(1) {'Foo {'}
- MockFor preferencesMocker = new MockFor(Preferences)
+ def preferencesMocker = new MockFor(Preferences)
preferencesMocker.demand.get(1) {'true'}
- preferencesMocker.use {readerMocker.use {
- InteractiveShellRunner runner = new InteractiveShellRunner(groovysh, {'>'})
+ readerMocker.demand.readLine(1) {'Foo {'}
+ preferencesMocker.use { readerMocker.use {
+ def runner = new InteractiveShellRunner(groovysh, {'>'})
runner.readLine()
- assertEquals(0, runner.wrappedInputStream.inserted.available())
+
+ assert runner.wrappedInputStream.inserted.available() == 0
}}
}
@@ -72,66 +78,54 @@ class ShellRunnerTest extends GroovyTestCase {
groovysh.buffers.buffers.add(['Foo {'])
groovysh.buffers.select(1)
- MockFor readerMocker = primedMockForConsoleReader()
- readerMocker.demand.readLine(1) {'Foo {'}
- MockFor preferencesMocker = new MockFor(Preferences)
+ def preferencesMocker = new MockFor(Preferences)
preferencesMocker.demand.get(1) {'true'}
- preferencesMocker.use {readerMocker.use {
- InteractiveShellRunner runner = new InteractiveShellRunner(groovysh, {'>'})
+ readerMocker.demand.readLine(1) {'Foo {'}
+ preferencesMocker.use { readerMocker.use {
+ def runner = new InteractiveShellRunner(groovysh, {'>'})
runner.readLine()
- assertEquals(groovysh.indentSize, runner.wrappedInputStream.inserted.available())
+
+ assert runner.wrappedInputStream.inserted.available() == groovysh.indentSize
}}
}
void testReadLineIndentTwo() {
groovysh.buffers.buffers.add(['Foo { {'])
groovysh.buffers.select(1)
- MockFor readerMocker = primedMockForConsoleReader()
- readerMocker.demand.readLine(1) {'Foo { {'}
- MockFor preferencesMocker = new MockFor(Preferences)
+
+ def preferencesMocker = new MockFor(Preferences)
preferencesMocker.demand.get(1) {'true'}
- preferencesMocker.use {readerMocker.use {
- InteractiveShellRunner runner = new InteractiveShellRunner(groovysh, {'>'})
+ readerMocker.demand.readLine(1) {'Foo { {'}
+ preferencesMocker.use { readerMocker.use {
+ def runner = new InteractiveShellRunner(groovysh, {'>'})
runner.readLine()
- assertEquals(groovysh.indentSize * 2, runner.wrappedInputStream.inserted.available())
- }}
- }
- private MockFor primedMockForConsoleReader() {
- def readerMocker = new MockFor(ConsoleReader)
- CandidateListCompletionHandler clch = new CandidateListCompletionHandler()
- clch.stripAnsi = true
- readerMocker.demand.getCompletionHandler(1) {clch}
- readerMocker.demand.setExpandEvents {}
- readerMocker.demand.addCompleter(2) {}
- readerMocker
+ assert runner.wrappedInputStream.inserted.available() == groovysh.indentSize * 2
+ }}
}
}
class ShellRunnerTest2 extends GroovyTestCase {
void testReadLinePaste() {
- ByteArrayOutputStream mockOut = new ByteArrayOutputStream()
- ByteArrayOutputStream mockErr = new ByteArrayOutputStream()
-
- IO testio = new IO(new ByteArrayInputStream('Some Clipboard Content'.bytes),
- mockOut,
- mockErr)
- Groovysh groovysh = new Groovysh(testio)
+ Groovysh groovysh = new Groovysh(new IO(new ByteArrayInputStream('Some Clipboard Content'.bytes),
+ new ByteArrayOutputStream(), new ByteArrayOutputStream()))
groovysh.buffers.buffers.add(['Foo { {'])
groovysh.buffers.select(1)
+ MockFor preferencesMocker = new MockFor(Preferences)
+ preferencesMocker.demand.get(1) {'true'}
MockFor readerMocker = new MockFor(ConsoleReader)
readerMocker.demand.getCompletionHandler {new CandidateListCompletionHandler()}
readerMocker.demand.setExpandEvents {}
readerMocker.demand.addCompleter(2) {}
readerMocker.demand.readLine(1) {'Foo { {'}
- MockFor preferencesMocker = new MockFor(Preferences)
- preferencesMocker.demand.get(1) {'true'}
- preferencesMocker.use {readerMocker.use {
- InteractiveShellRunner runner = new InteractiveShellRunner(groovysh, {'>'})
+
+ preferencesMocker.use { readerMocker.use {
+ def runner = new InteractiveShellRunner(groovysh, {'>'})
runner.readLine()
- assertEquals(0, runner.wrappedInputStream.inserted.available())
+
+ assert runner.wrappedInputStream.inserted.available() == 0
}}
}
}
diff --git a/subprojects/groovy-groovysh/src/test/groovy/org/apache/groovy/groovysh/ShellRunnerTestSupport.groovy b/subprojects/groovy-groovysh/src/test/groovy/org/apache/groovy/groovysh/ShellRunnerTestSupport.groovy
index e11ba4b4a9..9759a6cfd5 100644
--- a/subprojects/groovy-groovysh/src/test/groovy/org/apache/groovy/groovysh/ShellRunnerTestSupport.groovy
+++ b/subprojects/groovy-groovysh/src/test/groovy/org/apache/groovy/groovysh/ShellRunnerTestSupport.groovy
@@ -47,15 +47,17 @@ abstract class ShellRunnerTestSupport extends GroovyTestCase {
shellMocker = new MockFor(Groovysh)
// Groovysh constructor
- shellMocker.demand.getClass(1) { Groovysh }
+ shellMocker.demand.getClass( 1) { Groovysh }
shellMocker.demand.getIo(0..21) { testio }
shellMocker.demand.register(18) { it }
// InteractiveShellRunner constructor
shellMocker.demand.getIo(2) { testio }
- shellMocker.demand.getRegistry(1) { new Object() { def commands() {[]} } }
- shellMocker.demand.getHistory(1) { new Serializable() { def size() {0}; def getMaxSize() {1} } }
- shellMocker.demand.setHistoryFull(1) { }
- shellMocker.demand.getHistoryFull(1) { false }
+ // InteractiveShellRunner run
+ shellMocker.demand.getRegistry(0..1) { new CommandRegistry() }
+ // InteractiveShellRunner adjustHistory
+ shellMocker.demand.getHistory(0..1) { null }
+ shellMocker.demand.setHistoryFull(0..1) { }
+ shellMocker.demand.isHistoryFull(0..1) { }
readerStubber = new StubFor(ConsoleReader)
readerStubber.demand.setExpandEvents {}
@@ -64,7 +66,5 @@ abstract class ShellRunnerTestSupport extends GroovyTestCase {
readerStubber.demand.addCompleter {}
readerStubber.demand.printNewline {}
readerStubber.demand.addCompleter {}
- shellMocker.demand.getIo(0..1) { testio }
}
-
}