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 }
     }
-
 }