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 2026/03/02 17:35:44 UTC
(groovy) 04/04: minor items
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
commit 90e7ea2d42595dc5e330574d8f9cfce75e3f10fb
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Mon Mar 2 11:15:20 2026 -0600
minor items
---
build.gradle | 1 +
.../concurrentlinkedhashmap/LinkedDequeTest.java | 119 +++++++-------
.../groovy/util/CharSequenceReaderTest.java | 178 ++++++++++++---------
.../groovy/cli/CliBuilderTestCase.groovy | 26 ++-
.../groovy/groovy/bugs/TestSupport.java | 8 +-
.../groovy/groovy/util/HeadlessTestSupport.groovy | 20 +--
src/testFixtures/groovy/groovy/util/XmlAssert.java | 8 +-
.../codehaus/groovy/ast/builder/AstAssert.groovy | 88 +++++-----
.../org/codehaus/groovy/classgen/TestSupport.java | 9 +-
.../src/spec/test/builder/CliBuilderTest.groovy | 9 +-
.../src/spec/test/builder/CliBuilderTest.groovy | 18 ++-
11 files changed, 264 insertions(+), 220 deletions(-)
diff --git a/build.gradle b/build.gradle
index ed3f22feaa..f14b9add9e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -125,6 +125,7 @@ dependencies {
testFixturesImplementation projects.groovyXml
testFixturesImplementation projects.groovyTest
+ testFixturesImplementation "org.junit.jupiter:junit-jupiter-api:${versions.junit5}"
testFixturesImplementation "xmlunit:xmlunit:${versions.xmlunit}"
tools "com.eed3si9n.jarjar:ant-jarjar:${versions.jarjar}"
diff --git a/src/test/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/LinkedDequeTest.java b/src/test/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/LinkedDequeTest.java
index cabdcddc65..4e57a15528 100644
--- a/src/test/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/LinkedDequeTest.java
+++ b/src/test/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/LinkedDequeTest.java
@@ -18,7 +18,6 @@
*/
package org.apache.groovy.util.concurrent.concurrentlinkedhashmap;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
@@ -27,19 +26,19 @@ import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
- * JUnit 5 tests for LinkedDeque class.
+ * Unit tests for {@link LinkedDeque}.
*/
class LinkedDequeTest {
- private LinkedDeque<TestNode> deque;
-
- @BeforeEach
- void setUp() {
- deque = new LinkedDeque<>();
- }
+ private LinkedDeque<TestNode> deque = new LinkedDeque<>();
// Test node implementation
static class TestNode implements Linked<TestNode> {
@@ -91,7 +90,7 @@ class LinkedDequeTest {
void testAddFirst() {
TestNode node = new TestNode("first");
deque.addFirst(node);
-
+
assertFalse(deque.isEmpty());
assertEquals(1, deque.size());
assertSame(node, deque.peekFirst());
@@ -101,7 +100,7 @@ class LinkedDequeTest {
void testAddLast() {
TestNode node = new TestNode("last");
deque.addLast(node);
-
+
assertFalse(deque.isEmpty());
assertEquals(1, deque.size());
assertSame(node, deque.peekLast());
@@ -236,7 +235,7 @@ class LinkedDequeTest {
TestNode second = new TestNode("second");
deque.addLast(first);
deque.addLast(second);
-
+
assertSame(first, deque.pollFirst());
assertEquals(1, deque.size());
assertSame(second, deque.peekFirst());
@@ -248,7 +247,7 @@ class LinkedDequeTest {
TestNode second = new TestNode("second");
deque.addLast(first);
deque.addLast(second);
-
+
assertSame(second, deque.pollLast());
assertEquals(1, deque.size());
assertSame(first, deque.peekLast());
@@ -283,7 +282,7 @@ class LinkedDequeTest {
TestNode second = new TestNode("second");
deque.addLast(first);
deque.addLast(second);
-
+
assertSame(first, deque.removeFirst());
assertEquals(1, deque.size());
}
@@ -294,7 +293,7 @@ class LinkedDequeTest {
TestNode second = new TestNode("second");
deque.addLast(first);
deque.addLast(second);
-
+
assertSame(second, deque.removeLast());
assertEquals(1, deque.size());
}
@@ -303,7 +302,7 @@ class LinkedDequeTest {
void testRemoveObject() {
TestNode node = new TestNode("to-remove");
deque.addFirst(node);
-
+
assertTrue(deque.remove(node));
assertTrue(deque.isEmpty());
}
@@ -313,7 +312,7 @@ class LinkedDequeTest {
TestNode node1 = new TestNode("in-deque");
TestNode node2 = new TestNode("not-in-deque");
deque.addFirst(node1);
-
+
assertFalse(deque.remove(node2));
assertEquals(1, deque.size());
}
@@ -327,7 +326,7 @@ class LinkedDequeTest {
void testContains() {
TestNode node = new TestNode("contained");
deque.addFirst(node);
-
+
assertTrue(deque.contains(node));
}
@@ -336,7 +335,7 @@ class LinkedDequeTest {
TestNode node1 = new TestNode("in-deque");
TestNode node2 = new TestNode("not-in-deque");
deque.addFirst(node1);
-
+
assertFalse(deque.contains(node2));
}
@@ -350,11 +349,11 @@ class LinkedDequeTest {
deque.addLast(new TestNode("a"));
deque.addLast(new TestNode("b"));
deque.addLast(new TestNode("c"));
-
+
assertEquals(3, deque.size());
-
+
deque.clear();
-
+
assertTrue(deque.isEmpty());
assertEquals(0, deque.size());
}
@@ -363,7 +362,7 @@ class LinkedDequeTest {
void testPush() {
TestNode node = new TestNode("pushed");
deque.push(node);
-
+
assertSame(node, deque.peekFirst());
}
@@ -371,7 +370,7 @@ class LinkedDequeTest {
void testPop() {
TestNode node = new TestNode("popped");
deque.push(node);
-
+
assertSame(node, deque.pop());
assertTrue(deque.isEmpty());
}
@@ -386,16 +385,16 @@ class LinkedDequeTest {
TestNode a = new TestNode("a");
TestNode b = new TestNode("b");
TestNode c = new TestNode("c");
-
+
deque.addLast(a);
deque.addLast(b);
deque.addLast(c);
-
+
List<String> values = new ArrayList<>();
for (TestNode node : deque) {
values.add(node.value);
}
-
+
assertEquals(Arrays.asList("a", "b", "c"), values);
}
@@ -415,10 +414,10 @@ class LinkedDequeTest {
void testIteratorRemoveUnsupported() {
TestNode node = new TestNode("test");
deque.addFirst(node);
-
+
Iterator<TestNode> it = deque.iterator();
it.next();
-
+
assertThrows(UnsupportedOperationException.class, it::remove);
}
@@ -427,17 +426,17 @@ class LinkedDequeTest {
TestNode a = new TestNode("a");
TestNode b = new TestNode("b");
TestNode c = new TestNode("c");
-
+
deque.addLast(a);
deque.addLast(b);
deque.addLast(c);
-
+
List<String> values = new ArrayList<>();
Iterator<TestNode> it = deque.descendingIterator();
while (it.hasNext()) {
values.add(it.next().value);
}
-
+
assertEquals(Arrays.asList("c", "b", "a"), values);
}
@@ -451,7 +450,7 @@ class LinkedDequeTest {
void testRemoveFirstOccurrence() {
TestNode node = new TestNode("target");
deque.addFirst(node);
-
+
assertTrue(deque.removeFirstOccurrence(node));
assertTrue(deque.isEmpty());
}
@@ -461,7 +460,7 @@ class LinkedDequeTest {
TestNode node1 = new TestNode("in");
TestNode node2 = new TestNode("out");
deque.addFirst(node1);
-
+
assertFalse(deque.removeFirstOccurrence(node2));
}
@@ -469,7 +468,7 @@ class LinkedDequeTest {
void testRemoveLastOccurrence() {
TestNode node = new TestNode("target");
deque.addLast(node);
-
+
assertTrue(deque.removeLastOccurrence(node));
assertTrue(deque.isEmpty());
}
@@ -479,11 +478,11 @@ class LinkedDequeTest {
TestNode a = new TestNode("a");
TestNode b = new TestNode("b");
TestNode c = new TestNode("c");
-
+
deque.addLast(a);
deque.addLast(b);
deque.addLast(c);
-
+
assertTrue(deque.removeAll(Arrays.asList(a, c)));
assertEquals(1, deque.size());
assertSame(b, deque.peekFirst());
@@ -499,13 +498,13 @@ class LinkedDequeTest {
TestNode a = new TestNode("a");
TestNode b = new TestNode("b");
TestNode c = new TestNode("c");
-
+
deque.addLast(a);
deque.addLast(b);
deque.addLast(c);
-
+
deque.moveToFront(c);
-
+
assertSame(c, deque.peekFirst());
assertSame(b, deque.peekLast());
}
@@ -514,12 +513,12 @@ class LinkedDequeTest {
void testMoveToFrontAlreadyFirst() {
TestNode a = new TestNode("a");
TestNode b = new TestNode("b");
-
+
deque.addLast(a);
deque.addLast(b);
-
+
deque.moveToFront(a);
-
+
assertSame(a, deque.peekFirst());
assertSame(b, deque.peekLast());
}
@@ -529,13 +528,13 @@ class LinkedDequeTest {
TestNode a = new TestNode("a");
TestNode b = new TestNode("b");
TestNode c = new TestNode("c");
-
+
deque.addLast(a);
deque.addLast(b);
deque.addLast(c);
-
+
deque.moveToBack(a);
-
+
assertSame(b, deque.peekFirst());
assertSame(a, deque.peekLast());
}
@@ -544,12 +543,12 @@ class LinkedDequeTest {
void testMoveToBackAlreadyLast() {
TestNode a = new TestNode("a");
TestNode b = new TestNode("b");
-
+
deque.addLast(a);
deque.addLast(b);
-
+
deque.moveToBack(b);
-
+
assertSame(a, deque.peekFirst());
assertSame(b, deque.peekLast());
}
@@ -559,22 +558,22 @@ class LinkedDequeTest {
TestNode a = new TestNode("a");
TestNode b = new TestNode("b");
TestNode c = new TestNode("c");
-
+
deque.addLast(a);
deque.addLast(b);
deque.addLast(c);
-
+
assertEquals(3, deque.size());
-
+
deque.removeFirst();
assertEquals(2, deque.size());
assertSame(b, deque.peekFirst());
-
+
deque.removeLast();
assertEquals(1, deque.size());
assertSame(b, deque.peekFirst());
assertSame(b, deque.peekLast());
-
+
deque.remove(b);
assertTrue(deque.isEmpty());
}
@@ -583,7 +582,7 @@ class LinkedDequeTest {
void testAddFirstDuplicateThrows() {
TestNode node = new TestNode("dup");
deque.addFirst(node);
-
+
assertThrows(IllegalArgumentException.class, () -> deque.addFirst(node));
}
@@ -591,7 +590,7 @@ class LinkedDequeTest {
void testAddLastDuplicateThrows() {
TestNode node = new TestNode("dup");
deque.addLast(node);
-
+
assertThrows(IllegalArgumentException.class, () -> deque.addLast(node));
}
@@ -599,7 +598,7 @@ class LinkedDequeTest {
void testSingleElement() {
TestNode single = new TestNode("single");
deque.addFirst(single);
-
+
assertSame(single, deque.peekFirst());
assertSame(single, deque.peekLast());
assertSame(deque.removeFirst(), deque.peekFirst() == null ? single : null);
@@ -610,13 +609,13 @@ class LinkedDequeTest {
TestNode a = new TestNode("a");
TestNode b = new TestNode("b");
TestNode c = new TestNode("c");
-
+
deque.addLast(a);
deque.addLast(b);
deque.addLast(c);
-
+
assertTrue(deque.remove(b));
-
+
assertEquals(2, deque.size());
assertSame(a, deque.peekFirst());
assertSame(c, deque.peekLast());
diff --git a/src/test/java/org/codehaus/groovy/util/CharSequenceReaderTest.java b/src/test/java/org/codehaus/groovy/util/CharSequenceReaderTest.java
index 01f5904c0d..2da2e42f83 100644
--- a/src/test/java/org/codehaus/groovy/util/CharSequenceReaderTest.java
+++ b/src/test/java/org/codehaus/groovy/util/CharSequenceReaderTest.java
@@ -20,7 +20,10 @@ package org.codehaus.groovy.util;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Unit tests for {@link CharSequenceReader}.
@@ -29,99 +32,109 @@ class CharSequenceReaderTest {
@Test
void testReadSingleCharacter() {
- CharSequenceReader reader = new CharSequenceReader("abc");
- assertEquals('a', reader.read());
- assertEquals('b', reader.read());
- assertEquals('c', reader.read());
- assertEquals(-1, reader.read());
+ try (var reader = new CharSequenceReader("abc")) {
+ assertEquals('a', reader.read());
+ assertEquals('b', reader.read());
+ assertEquals('c', reader.read());
+ assertEquals(-1, reader.read());
+ }
}
@Test
void testReadIntoArray() {
- CharSequenceReader reader = new CharSequenceReader("hello world");
- char[] buffer = new char[5];
- int count = reader.read(buffer, 0, 5);
- assertEquals(5, count);
- assertArrayEquals("hello".toCharArray(), buffer);
+ try (var reader = new CharSequenceReader("hello world")) {
+ char[] buffer = new char[5];
+ int count = reader.read(buffer, 0, 5);
+ assertEquals(5, count);
+ assertArrayEquals("hello".toCharArray(), buffer);
+ }
}
@Test
void testReadIntoArrayWithOffset() {
- CharSequenceReader reader = new CharSequenceReader("test");
- char[] buffer = new char[10];
- buffer[0] = 'x';
- buffer[1] = 'y';
- int count = reader.read(buffer, 2, 4);
- assertEquals(4, count);
- assertEquals('x', buffer[0]);
- assertEquals('y', buffer[1]);
- assertEquals('t', buffer[2]);
- assertEquals('e', buffer[3]);
- assertEquals('s', buffer[4]);
- assertEquals('t', buffer[5]);
+ try (var reader = new CharSequenceReader("test")) {
+ char[] buffer = new char[10];
+ buffer[0] = 'x';
+ buffer[1] = 'y';
+ int count = reader.read(buffer, 2, 4);
+ assertEquals(4, count);
+ assertEquals('x', buffer[0]);
+ assertEquals('y', buffer[1]);
+ assertEquals('t', buffer[2]);
+ assertEquals('e', buffer[3]);
+ assertEquals('s', buffer[4]);
+ assertEquals('t', buffer[5]);
+ }
}
@Test
void testReadBeyondEnd() {
- CharSequenceReader reader = new CharSequenceReader("ab");
- char[] buffer = new char[5];
- int count = reader.read(buffer, 0, 5);
- assertEquals(2, count);
- assertEquals('a', buffer[0]);
- assertEquals('b', buffer[1]);
+ try (var reader = new CharSequenceReader("ab")) {
+ char[] buffer = new char[5];
+ int count = reader.read(buffer, 0, 5);
+ assertEquals(2, count);
+ assertEquals('a', buffer[0]);
+ assertEquals('b', buffer[1]);
- count = reader.read(buffer, 0, 5);
- assertEquals(-1, count);
+ count = reader.read(buffer, 0, 5);
+ assertEquals(-1, count);
+ }
}
@Test
void testMarkAndReset() {
- CharSequenceReader reader = new CharSequenceReader("abcdef");
- assertEquals('a', reader.read());
- assertEquals('b', reader.read());
- reader.mark(100);
- assertEquals('c', reader.read());
- assertEquals('d', reader.read());
- reader.reset();
- assertEquals('c', reader.read());
- assertEquals('d', reader.read());
+ try (var reader = new CharSequenceReader("abcdef")) {
+ assertEquals('a', reader.read());
+ assertEquals('b', reader.read());
+ reader.mark(100);
+ assertEquals('c', reader.read());
+ assertEquals('d', reader.read());
+ reader.reset();
+ assertEquals('c', reader.read());
+ assertEquals('d', reader.read());
+ }
}
@Test
void testMarkSupported() {
- CharSequenceReader reader = new CharSequenceReader("test");
- assertTrue(reader.markSupported());
+ try (var reader = new CharSequenceReader("test")) {
+ assertTrue(reader.markSupported());
+ }
}
@Test
void testSkip() {
- CharSequenceReader reader = new CharSequenceReader("abcdefgh");
- assertEquals('a', reader.read());
- long skipped = reader.skip(3);
- assertEquals(3, skipped);
- assertEquals('e', reader.read());
+ try (var reader = new CharSequenceReader("abcdefgh")) {
+ assertEquals('a', reader.read());
+ long skipped = reader.skip(3);
+ assertEquals(3, skipped);
+ assertEquals('e', reader.read());
+ }
}
@Test
void testSkipBeyondEnd() {
- CharSequenceReader reader = new CharSequenceReader("abc");
- long skipped = reader.skip(10);
- assertEquals(3, skipped);
- assertEquals(-1, reader.read());
+ try (var reader = new CharSequenceReader("abc")) {
+ long skipped = reader.skip(10);
+ assertEquals(3, skipped);
+ assertEquals(-1, reader.read());
+ }
}
@Test
void testSkipNegativeThrows() {
- CharSequenceReader reader = new CharSequenceReader("test");
- assertThrows(IllegalArgumentException.class, () -> reader.skip(-1));
+ try (var reader = new CharSequenceReader("test")) {
+ assertThrows(IllegalArgumentException.class, () -> reader.skip(-1));
+ }
}
@Test
void testSkipAtEnd() {
- CharSequenceReader reader = new CharSequenceReader("a");
- reader.read();
- long skipped = reader.skip(5);
- assertEquals(-1, skipped);
+ try (var reader = new CharSequenceReader("a")) {
+ reader.read();
+ long skipped = reader.skip(5);
+ assertEquals(-1, skipped);
+ }
}
@Test
@@ -138,52 +151,59 @@ class CharSequenceReaderTest {
@Test
void testToString() {
String input = "hello world";
- CharSequenceReader reader = new CharSequenceReader(input);
- assertEquals(input, reader.toString());
+ try (var reader = new CharSequenceReader(input)) {
+ assertEquals(input, reader.toString());
+ }
}
@Test
void testNullInput() {
- CharSequenceReader reader = new CharSequenceReader(null);
- assertEquals(-1, reader.read());
- assertEquals("", reader.toString());
+ try (var reader = new CharSequenceReader(null)) {
+ assertEquals(-1, reader.read());
+ assertEquals("", reader.toString());
+ }
}
@Test
void testEmptyInput() {
- CharSequenceReader reader = new CharSequenceReader("");
- assertEquals(-1, reader.read());
+ try (var reader = new CharSequenceReader("")) {
+ assertEquals(-1, reader.read());
+ }
}
@Test
void testReadArrayWithNullThrows() {
- CharSequenceReader reader = new CharSequenceReader("test");
- assertThrows(NullPointerException.class, () -> reader.read(null, 0, 1));
+ try (var reader = new CharSequenceReader("test")) {
+ assertThrows(NullPointerException.class, () -> reader.read(null, 0, 1));
+ }
}
@Test
void testReadArrayWithInvalidBoundsThrows() {
- CharSequenceReader reader = new CharSequenceReader("test");
- char[] buffer = new char[5];
- assertThrows(IndexOutOfBoundsException.class, () -> reader.read(buffer, -1, 1));
- assertThrows(IndexOutOfBoundsException.class, () -> reader.read(buffer, 0, -1));
- assertThrows(IndexOutOfBoundsException.class, () -> reader.read(buffer, 3, 5));
+ try (var reader = new CharSequenceReader("test")) {
+ char[] buffer = new char[5];
+ assertThrows(IndexOutOfBoundsException.class, () -> reader.read(buffer, -1, 1));
+ assertThrows(IndexOutOfBoundsException.class, () -> reader.read(buffer, 0, -1));
+ assertThrows(IndexOutOfBoundsException.class, () -> reader.read(buffer, 3, 5));
+ }
}
@Test
void testStringBuilder() {
StringBuilder sb = new StringBuilder("StringBuilder content");
- CharSequenceReader reader = new CharSequenceReader(sb);
- char[] buffer = new char[13];
- reader.read(buffer, 0, 13);
- assertEquals("StringBuilder", new String(buffer));
+ try (var reader = new CharSequenceReader(sb)) {
+ char[] buffer = new char[13];
+ reader.read(buffer, 0, 13);
+ assertEquals("StringBuilder", new String(buffer));
+ }
}
@Test
void testZeroLengthRead() {
- CharSequenceReader reader = new CharSequenceReader("test");
- char[] buffer = new char[5];
- int count = reader.read(buffer, 0, 0);
- assertEquals(0, count);
+ try (var reader = new CharSequenceReader("test")) {
+ char[] buffer = new char[5];
+ int count = reader.read(buffer, 0, 0);
+ assertEquals(0, count);
+ }
}
}
diff --git a/src/testFixtures/groovy/cli/CliBuilderTestCase.groovy b/src/testFixtures/groovy/cli/CliBuilderTestCase.groovy
index 027598828a..dfcd50fec1 100644
--- a/src/testFixtures/groovy/cli/CliBuilderTestCase.groovy
+++ b/src/testFixtures/groovy/cli/CliBuilderTestCase.groovy
@@ -18,12 +18,15 @@
*/
package cli
-import groovy.test.GroovyTestCase
+import org.junit.jupiter.api.Test
-abstract class CliBuilderTestCase extends GroovyTestCase {
+import static groovy.test.GroovyAssert.assertScript
- abstract String getImportCliBuilder()
+abstract class CliBuilderTestCase {
+ protected abstract String getImportCliBuilder()
+
+ @Test
void testAnnotationsInterface() {
assertScript """
import cli.GreeterI
@@ -43,6 +46,7 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testAnnotationsClass() {
assertScript """
import cli.GreeterC
@@ -79,8 +83,8 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testParseScript() {
- def argz = '--audience Groovologist foo'.split()
new GroovyShell().run("""
$importCliBuilder
// tag::annotationScript[]
@@ -95,9 +99,10 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
assert audience == 'Groovologist'
assert remaining == ['foo']
// end::annotationScript[]
- """, 'TestScript.groovy', argz)
+ """, 'TestScript.groovy', '--audience Groovologist foo'.split())
}
+ @Test
void testWithArgument() {
assertScript """
$importCliBuilder
@@ -124,6 +129,7 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testMultipleArgsAndOptionalValueSeparator() {
assertScript """
$importCliBuilder
@@ -158,6 +164,7 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testWithArgumentInterface() {
assertScript """
import cli.WithArgsI
@@ -179,6 +186,7 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testMultipleArgsAndOptionalValueSeparatorInterface() {
assertScript """
import cli.ValSepI
@@ -209,6 +217,7 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testType() {
assertScript """
import java.math.RoundingMode
@@ -241,6 +250,7 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testTypeMultiple() {
assertScript """
$importCliBuilder
@@ -258,6 +268,7 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testConvert() {
assertScript """
$importCliBuilder
@@ -277,6 +288,7 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testConvertInterface() {
assertScript """
import cli.WithConvertI
@@ -294,6 +306,7 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testDefaultValue() {
assertScript """
$importCliBuilder
@@ -317,6 +330,7 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testDefaultValueInterface() {
assertScript """
$importCliBuilder
@@ -335,6 +349,7 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testTypeCheckedInterfaceRunner() {
assertScript """
$importCliBuilder
@@ -356,6 +371,7 @@ abstract class CliBuilderTestCase extends GroovyTestCase {
"""
}
+ @Test
void testTypeCheckedRunner() {
assertScript """
$importCliBuilder
diff --git a/src/testFixtures/groovy/groovy/bugs/TestSupport.java b/src/testFixtures/groovy/groovy/bugs/TestSupport.java
index 87a05b1a98..a1730ccb92 100644
--- a/src/testFixtures/groovy/groovy/bugs/TestSupport.java
+++ b/src/testFixtures/groovy/groovy/bugs/TestSupport.java
@@ -19,15 +19,13 @@
package groovy.bugs;
import groovy.test.GroovyTestCase;
-import org.junit.Ignore;
-import java.util.Arrays;
import java.util.Iterator;
+import java.util.List;
/**
* Base class for test cases
*/
-@Ignore("base class for tests")
public abstract class TestSupport extends GroovyTestCase {
public String[] getMockArguments() {
@@ -46,7 +44,7 @@ public abstract class TestSupport extends GroovyTestCase {
return new int[]{1, 2, 3, 4, 5};
}
- public Iterator iterator() {
- return Arrays.asList(getMockArguments()).iterator();
+ public Iterator<String> iterator() {
+ return List.of(getMockArguments()).iterator();
}
}
diff --git a/src/testFixtures/groovy/groovy/util/HeadlessTestSupport.groovy b/src/testFixtures/groovy/groovy/util/HeadlessTestSupport.groovy
index 67697822bd..b3f47c0274 100644
--- a/src/testFixtures/groovy/groovy/util/HeadlessTestSupport.groovy
+++ b/src/testFixtures/groovy/groovy/util/HeadlessTestSupport.groovy
@@ -20,8 +20,9 @@ package groovy.util
import java.lang.reflect.Constructor
-public abstract class HeadlessTestSupport {
- private static boolean headless;
+abstract class HeadlessTestSupport {
+
+ private static boolean headless
/**
* A boolean indicating if we are running in headless mode.
@@ -30,8 +31,8 @@ public abstract class HeadlessTestSupport {
*
* @return true if running in headless mode
*/
- public static boolean isHeadless() {
- return headless
+ static boolean isHeadless() {
+ headless
}
/**
@@ -39,20 +40,19 @@ public abstract class HeadlessTestSupport {
*
* @return true if running in headless mode
*/
- public static boolean getHeadless() {
- return isHeadless()
+ static boolean getHeadless() {
+ isHeadless()
}
static {
try {
- final Class jframe = Class.forName("javax.swing.JFrame")
- final Constructor constructor = jframe.getConstructor([String] as Class[])
- constructor.newInstance(["testing"] as String[])
+ Class jframe = Class.forName('javax.swing.JFrame')
+ Constructor constructor = jframe.getConstructor([String] as Class[])
+ constructor.newInstance(['testing'] as String[])
headless = false
} catch (Throwable t) {
// any exception means headless
headless = true
}
}
-
}
diff --git a/src/testFixtures/groovy/groovy/util/XmlAssert.java b/src/testFixtures/groovy/groovy/util/XmlAssert.java
index 52b5cd5e45..eaf49e1004 100644
--- a/src/testFixtures/groovy/groovy/util/XmlAssert.java
+++ b/src/testFixtures/groovy/groovy/util/XmlAssert.java
@@ -20,15 +20,17 @@ package groovy.util;
import org.custommonkey.xmlunit.Diff;
import org.custommonkey.xmlunit.XMLUnit;
-import org.junit.Assert;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Helper class for checking XML tests.
*/
public class XmlAssert {
+
public static void assertXmlEquals(String expected, String actual) throws Exception {
XMLUnit.setIgnoreWhitespace(true);
- Diff diff = new Diff(expected, actual);
- Assert.assertTrue(diff.toString(), diff.similar());
+ var diff = new Diff(expected, actual);
+ assertTrue(diff.similar(), diff::toString);
}
}
diff --git a/src/testFixtures/groovy/org/codehaus/groovy/ast/builder/AstAssert.groovy b/src/testFixtures/groovy/org/codehaus/groovy/ast/builder/AstAssert.groovy
index 6a6f95faae..7bb3018bef 100644
--- a/src/testFixtures/groovy/org/codehaus/groovy/ast/builder/AstAssert.groovy
+++ b/src/testFixtures/groovy/org/codehaus/groovy/ast/builder/AstAssert.groovy
@@ -18,7 +18,10 @@
*/
package org.codehaus.groovy.ast.builder
-import org.junit.Assert
+import static org.junit.jupiter.api.Assertions.assertEquals
+import static org.junit.jupiter.api.Assertions.assertNull
+import static org.junit.jupiter.api.Assertions.assertTrue
+import static org.junit.jupiter.api.Assertions.fail
/**
* Some useful AST assertion methods.
@@ -44,35 +47,35 @@ class AstAssert {
},
CastExpression : { expected, actual ->
assertSyntaxTree([expected.expression], [actual.expression])
- Assert.assertEquals("Wrong type", expected.type, actual.type)
+ assertEquals(expected.type, actual.type, "Wrong type")
},
ClosureExpression : { expected, actual ->
assertSyntaxTree([expected.parameters], [actual.parameters])
assertSyntaxTree([expected.code], [actual.code])
},
ConstantExpression : { expected, actual ->
- Assert.assertEquals("Wrong constant", expected.value, actual.value)
+ assertEquals(expected.value, actual.value, "Wrong constant")
},
ArrayExpression : { expected, actual ->
- Assert.assertEquals("Wrong array type", expected.elementType, actual.elementType)
- Assert.assertEquals("Wrong # ast nodes", expected.expressions.size(), actual.expressions.size())
+ assertEquals(expected.elementType, actual.elementType, "Wrong array type")
+ assertEquals(expected.expressions.size(), actual.expressions.size(), "Wrong node count")
expected.expressions.eachWithIndex { element, index ->
assertSyntaxTree([element], [actual.expressions[index]])
}
},
ListExpression : { expected, actual ->
- Assert.assertEquals("Wrong # ast nodes", expected.expressions.size(), actual.expressions.size())
+ assertEquals(expected.expressions.size(), actual.expressions.size(), "Wrong node count")
expected.expressions.eachWithIndex { element, index ->
assertSyntaxTree([element], [actual.expressions[index]])
}
},
DeclarationExpression : { expected, actual ->
- Assert.assertEquals("Wrong token", expected.operation.text, actual.operation.text)
+ assertEquals(expected.operation.text, actual.operation.text, "Wrong token")
assertSyntaxTree([expected.leftExpression], [actual.leftExpression])
assertSyntaxTree([expected.rightExpression], [actual.rightExpression])
},
VariableExpression : { expected, actual ->
- Assert.assertEquals("Wrong variable", expected.variable, actual.variable)
+ assertEquals(expected.variable, actual.variable, "Wrong variable")
},
ReturnStatement : { expected, actual ->
assertSyntaxTree([expected.expression], [actual.expression])
@@ -91,19 +94,19 @@ class AstAssert {
AnnotationNode : { expected, actual ->
assertSyntaxTree([expected.classNode], [actual.classNode])
// Map<String, Expression>
- Assert.assertEquals("Wrong keyset", expected.members.keySet(), actual.members.keySet())
+ assertEquals(expected.members.keySet(), actual.members.keySet(), "Wrong keyset")
- Assert.assertEquals("Wrong # members", expected.members.size(), actual.members.size())
+ assertEquals(expected.members.size(), actual.members.size(), "Wrong member count")
expected.members.each { key, value ->
- Assert.assertTrue("Missing key $key", actual.members.containsKey(key))
+ assertTrue(actual.members.containsKey(key), "Missing key $key")
assertSyntaxTree([expected.members[key]], [actual.members[key]])
}
},
ClassNode : { expected, actual ->
if (expected.superClass) {
- Assert.assertEquals("Wrong superClass type", expected.superClass.getName(), actual.superClass.getName())
+ assertEquals(expected.superClass.getName(), actual.superClass.getName(), "Wrong superClass type")
} else {
- Assert.assertEquals("Wrong class type", expected.class.getName(), actual.class.getName())
+ assertEquals(expected.class.getName(), actual.class.getName(), "Wrong class type")
}
assertSyntaxTree([expected.mixins], [actual.mixins])
@@ -125,14 +128,14 @@ class AstAssert {
assertSyntaxTree([expected.operation], [actual.operation])
},
Token : { expected, actual ->
- Assert.assertEquals("Wrong token type", expected.type, actual.type)
- Assert.assertEquals("Wrong token text", expected.text, actual.text)
+ assertEquals(expected.type, actual.type, "Wrong token type")
+ assertEquals(expected.text, actual.text, "Wrong token text")
},
Parameter : { expected, actual ->
assertSyntaxTree([expected.type], [actual.type])
assertSyntaxTree([expected.defaultValue], [actual.defaultValue])
- Assert.assertEquals("Wrong parameter name", expected.name, actual.name)
- Assert.assertEquals("Wrong 'hasDefaultValue'", expected.hasDefaultValue, actual.hasDefaultValue)
+ assertEquals(expected.name, actual.name, "Wrong parameter name")
+ assertEquals(expected.hasDefaultValue, actual.hasDefaultValue, "Wrong 'hasDefaultValue'")
},
ConstructorCallExpression : { expected, actual ->
assertSyntaxTree([expected.arguments], [actual.arguments])
@@ -165,8 +168,8 @@ class AstAssert {
assertSyntaxTree([expected.field], [actual.field])
},
FieldNode : { expected, actual ->
- Assert.assertEquals("Wrong name", expected.name, actual.name)
- Assert.assertEquals("Wrong modifiers", expected.modifiers, actual.modifiers)
+ assertEquals(expected.name, actual.name, "Wrong name")
+ assertEquals(expected.modifiers, actual.modifiers, "Wrong modifiers")
assertSyntaxTree([expected.type], [actual.type])
assertSyntaxTree([expected.owner], [actual.owner])
assertSyntaxTree([expected.initialValueExpression], [actual.initialValueExpression])
@@ -179,7 +182,7 @@ class AstAssert {
assertSyntaxTree([expected.valueExpression], [actual.valueExpression])
},
GStringExpression : { expected, actual ->
- Assert.assertEquals("Wrong text", expected.verbatimText, actual.verbatimText)
+ assertEquals(expected.verbatimText, actual.verbatimText, "Wrong text")
assertSyntaxTree(expected.strings, actual.strings)
assertSyntaxTree(expected.values, actual.values)
},
@@ -190,7 +193,7 @@ class AstAssert {
RangeExpression : { expected, actual ->
assertSyntaxTree([expected.from], [actual.from])
assertSyntaxTree([expected.to], [actual.to])
- Assert.assertEquals("Wrong inclusive", expected.inclusive, actual.inclusive)
+ assertEquals(expected.inclusive, actual.inclusive, "Wrong inclusive")
},
PropertyExpression : { expected, actual ->
assertSyntaxTree([expected.objectExpression], [actual.objectExpression])
@@ -209,7 +212,7 @@ class AstAssert {
// always successful
},
BreakStatement : { expected, actual ->
- Assert.assertEquals("Wrong label", expected.label, actual.label)
+ assertEquals(expected.label, actual.label, "Wrong label")
},
AssertStatement : { expected, actual ->
assertSyntaxTree([expected.booleanExpression], [actual.booleanExpression])
@@ -232,7 +235,7 @@ class AstAssert {
assertSyntaxTree([expected.expression], [actual.expression])
},
StaticMethodCallExpression : { expected, actual ->
- Assert.assertEquals("Wrong method", expected.method, actual.method)
+ assertEquals(expected.method, actual.method, "Wrong method")
assertSyntaxTree([expected.ownerType], [actual.ownerType])
assertSyntaxTree([expected.arguments], [actual.arguments])
},
@@ -256,7 +259,7 @@ class AstAssert {
assertSyntaxTree([expected.loopBlock], [actual.loopBlock])
},
ContinueStatement : { expected, actual ->
- Assert.assertEquals("Wrong label", expected.label, actual.label)
+ assertEquals(expected.label, actual.label, "Wrong label")
},
TernaryExpression : { expected, actual ->
assertSyntaxTree([expected.booleanExpression], [actual.booleanExpression])
@@ -269,16 +272,16 @@ class AstAssert {
assertSyntaxTree([expected.falseExpression], [actual.falseExpression])
},
PropertyNode : { expected, actual ->
- Assert.assertEquals("Wrong name", expected.name, actual.name)
- Assert.assertEquals("Wrong modifiers", expected.modifiers, actual.modifiers)
+ assertEquals(expected.name, actual.name, "Wrong name")
+ assertEquals(expected.modifiers, actual.modifiers, "Wrong modifiers")
assertSyntaxTree(expected.annotations, actual.annotations)
assertSyntaxTree([expected.field], [actual.field])
assertSyntaxTree([expected.getterBlock], [actual.getterBlock])
assertSyntaxTree([expected.setterBlock], [actual.setterBlock])
},
NullObject : { expected, actual ->
- Assert.assertNull(expected)
- Assert.assertNull(actual)
+ assertNull(expected)
+ assertNull(actual)
},
MethodNode : { expected, actual ->
assertSyntaxTree(expected.annotations, actual.annotations)
@@ -287,8 +290,8 @@ class AstAssert {
assertSyntaxTree(expected.parameters, actual.parameters)
assertSyntaxTree(expected.exceptions, actual.exceptions)
- Assert.assertEquals("Wrong name", expected.name, actual.name)
- Assert.assertEquals("Wrong modifiers", expected.modifiers, actual.modifiers)
+ assertEquals(expected.name, actual.name, "Wrong name")
+ assertEquals(expected.modifiers, actual.modifiers, "Wrong modifiers")
},
ConstructorNode : { expected, actual ->
assertSyntaxTree(expected.annotations, actual.annotations)
@@ -297,13 +300,13 @@ class AstAssert {
assertSyntaxTree(expected.parameters, actual.parameters)
assertSyntaxTree(expected.exceptions, actual.exceptions)
- Assert.assertEquals("Wrong name", expected.name, actual.name)
- Assert.assertEquals("Wrong modifiers", expected.modifiers, actual.modifiers)
+ assertEquals(expected.name, actual.name, "Wrong name")
+ assertEquals(expected.modifiers, actual.modifiers, "Wrong modifiers")
},
ImportNode : { expected, actual ->
assertSyntaxTree(expected.annotations, actual.annotations)
assertSyntaxTree([expected.type], [actual.type])
- Assert.assertEquals("Wrong alias", expected.alias, actual.alias)
+ assertEquals(expected.alias, actual.alias, "Wrong alias")
},
RegexExpression : { expected, actual ->
assertSyntaxTree([expected.type], [actual.type])
@@ -321,8 +324,8 @@ class AstAssert {
assertSyntaxTree([expected.type], [actual.type])
assertSyntaxTree([expected.lowerBound], [actual.lowerBound])
assertSyntaxTree(expected.upperBounds, actual.upperBounds)
- Assert.assertEquals("Wrong wildcard", expected.name, actual.name)
- Assert.assertEquals("Wrong wildcard", expected.wildcard, actual.wildcard)
+ assertEquals(expected.name, actual.name, "Wrong wildcard")
+ assertEquals(expected.wildcard, actual.wildcard, "Wrong wildcard")
},
NamedArgumentListExpression : { expected, actual ->
assertSyntaxTree(expected.mapEntryExpressions, actual.mapEntryExpressions)
@@ -335,8 +338,8 @@ class AstAssert {
assertSyntaxTree(expected.annotations, actual.annotations)
assertSyntaxTree(expected.genericsTypes, actual.genericsTypes)
- Assert.assertEquals("Wrong name", expected.name, actual.name)
- Assert.assertEquals("Wrong modifiers", expected.modifiers, actual.modifiers)
+ assertEquals(expected.name, actual.name, "Wrong name")
+ assertEquals(expected.modifiers, actual.modifiers, "Wrong modifiers")
},
InnerClassNode : { expected, actual ->
assertSyntaxTree([expected.outerClass], [actual.outerClass])
@@ -347,8 +350,8 @@ class AstAssert {
assertSyntaxTree(expected.annotations, actual.annotations)
assertSyntaxTree(expected.genericsTypes, actual.genericsTypes)
- Assert.assertEquals("Wrong name", expected.name, actual.name)
- Assert.assertEquals("Wrong modifiers", expected.modifiers, actual.modifiers)
+ assertEquals(expected.name, actual.name, "Wrong name")
+ assertEquals(expected.modifiers, actual.modifiers, "Wrong modifiers")
},
]
@@ -363,13 +366,13 @@ class AstAssert {
if (expected == null && actual == null) return
if (actual == null || expected == null || expected.size() != actual?.size()) {
- Assert.fail("AST comparison failure. \nExpected $expected \nReceived $actual")
+ fail("AST comparison failure. \nExpected $expected \nReceived $actual")
}
expected.eachWithIndex { item, index ->
if (item.getClass().isArray() && actual[index].getClass().isArray()) {
assertSyntaxTree(item, actual[index])
} else {
- Assert.assertEquals("Wrong type in AST Node", item.getClass(), actual[index].getClass())
+ assertEquals(item.getClass(), actual[index].getClass(), "Wrong type in AST Node")
Class itemType = item.getClass()
if (itemType.isAnonymousClass()) {
@@ -379,10 +382,9 @@ class AstAssert {
Closure assertion = ASSERTION_MAP.get(itemType.getSimpleName())
assertion(item, actual[index])
} else {
- Assert.fail("Unexpected type: ${itemType} Update the unit test!")
+ fail("Unexpected type: ${itemType} Update the unit test!")
}
}
}
}
-
}
diff --git a/src/testFixtures/groovy/org/codehaus/groovy/classgen/TestSupport.java b/src/testFixtures/groovy/org/codehaus/groovy/classgen/TestSupport.java
index 2b11eed1ae..f45679ecab 100644
--- a/src/testFixtures/groovy/org/codehaus/groovy/classgen/TestSupport.java
+++ b/src/testFixtures/groovy/org/codehaus/groovy/classgen/TestSupport.java
@@ -34,7 +34,6 @@ import org.codehaus.groovy.ast.expr.MethodCallExpression;
import org.codehaus.groovy.ast.stmt.ExpressionStatement;
import org.codehaus.groovy.control.CompilerConfiguration;
import org.codehaus.groovy.runtime.InvokerHelper;
-import org.junit.Ignore;
import org.objectweb.asm.Opcodes;
import java.beans.BeanInfo;
@@ -49,14 +48,13 @@ import java.security.PrivilegedAction;
/**
* Base class for test cases
*/
-@Ignore("base class for tests")
-public class TestSupport extends GroovyTestCase implements Opcodes {
+public abstract class TestSupport extends GroovyTestCase implements Opcodes {
protected static boolean DUMP_CLASS = false;
final ClassLoader parentLoader = getClass().getClassLoader();
- protected final GroovyClassLoader loader =
- createClassLoader();
+
+ protected final GroovyClassLoader loader = createClassLoader();
@SuppressWarnings("removal") // TODO a future Groovy version should perform the operation not as a privileged action
private GroovyClassLoader createClassLoader() {
@@ -66,6 +64,7 @@ public class TestSupport extends GroovyTestCase implements Opcodes {
}
final CompileUnit unit = new CompileUnit(loader, new CompilerConfiguration());
+
final ModuleNode module = new ModuleNode(unit);
protected Class loadClass(ClassNode classNode) {
diff --git a/subprojects/groovy-cli-commons/src/spec/test/builder/CliBuilderTest.groovy b/subprojects/groovy-cli-commons/src/spec/test/builder/CliBuilderTest.groovy
index 7985159375..197beb57ba 100644
--- a/subprojects/groovy-cli-commons/src/spec/test/builder/CliBuilderTest.groovy
+++ b/subprojects/groovy-cli-commons/src/spec/test/builder/CliBuilderTest.groovy
@@ -22,12 +22,14 @@ import cli.CliBuilderTestCase
import groovy.cli.TypedOption
import groovy.cli.commons.CliBuilder
import groovy.transform.TypeChecked
+import org.junit.jupiter.api.Test
-class CliBuilderTest extends CliBuilderTestCase {
+final class CliBuilderTest extends CliBuilderTestCase {
- String getImportCliBuilder() { 'import groovy.cli.commons.CliBuilder\n' }
+ final String importCliBuilder = 'import groovy.cli.commons.CliBuilder\n'
// don't expect toString values to be the same, so test per CliBuilder implementation
+ @Test
void testAnnotationsInterfaceToString() {
doTestAnnotationsInterfaceToString('usage', '''\
usage: groovy Greeter
@@ -36,7 +38,7 @@ usage: groovy Greeter
''')
}
- @TypeChecked
+ @TypeChecked @Test
void testTypeChecked_showingSingleHyphenForLongOptSupport() {
def cli = new CliBuilder()
TypedOption<String> name = cli.option(String, opt: 'n', longOpt: 'name', 'name option')
@@ -48,5 +50,4 @@ usage: groovy Greeter
assert n == 'John' && a == 21
assert options.arguments() == ['and', 'some', 'more']
}
-
}
diff --git a/subprojects/groovy-cli-picocli/src/spec/test/builder/CliBuilderTest.groovy b/subprojects/groovy-cli-picocli/src/spec/test/builder/CliBuilderTest.groovy
index de1c07a21d..7b7ea8aa7e 100644
--- a/subprojects/groovy-cli-picocli/src/spec/test/builder/CliBuilderTest.groovy
+++ b/subprojects/groovy-cli-picocli/src/spec/test/builder/CliBuilderTest.groovy
@@ -22,22 +22,23 @@ import cli.CliBuilderTestCase
import groovy.cli.TypedOption
import groovy.cli.picocli.CliBuilder
import groovy.transform.TypeChecked
+import org.junit.jupiter.api.Test
import java.util.concurrent.TimeUnit
-// tag::mapOptionImports[]
-
import static java.util.concurrent.TimeUnit.DAYS
import static java.util.concurrent.TimeUnit.HOURS
+import static org.junit.jupiter.api.Assertions.assertEquals
// end::mapOptionImports[]
// Core functionality we expect to remain the same for all implementations is tested in the base test case
// here we also add any functionality specific to this implementation that we value highly
-class CliBuilderTest extends CliBuilderTestCase {
+final class CliBuilderTest extends CliBuilderTestCase {
- String getImportCliBuilder() { 'import groovy.cli.picocli.CliBuilder\n' }
+ final String importCliBuilder = 'import groovy.cli.picocli.CliBuilder\n'
+ @Test
void testAnnotationsInterfaceToStringWithUsage() {
doTestAnnotationsInterfaceToString('usage', '''\
Usage: groovy Greeter
@@ -48,6 +49,7 @@ Usage: groovy Greeter
''')
}
+ @Test
void testAnnotationsInterfaceToStringWithName() {
doTestAnnotationsInterfaceToString('name', '''\
Usage: groovy Greeter [-h] [-a=<audience>] [<remaining>...]
@@ -58,7 +60,7 @@ Usage: groovy Greeter [-h] [-a=<audience>] [<remaining>...]
''')
}
- @TypeChecked
+ @TypeChecked @Test
void testTypeChecked_addingSingleHyphenForLongOptSupport() {
def cli = new CliBuilder(acceptLongOptionsWithSingleHyphen: true)
TypedOption<String> name = cli.option(String, opt: 'n', longOpt: 'name', 'name option')
@@ -71,7 +73,7 @@ Usage: groovy Greeter [-h] [-a=<audience>] [<remaining>...]
assert options.arguments() == ['and', 'some', 'more']
}
- @TypeChecked
+ @TypeChecked @Test
void testTypeChecked_defaultOnlyDoubleHyphen() {
def cli = new CliBuilder()
TypedOption<String> name = cli.option(String, opt: 'n', longOpt: 'name', 'name option')
@@ -83,6 +85,7 @@ Usage: groovy Greeter [-h] [-a=<audience>] [<remaining>...]
assert options.arguments() == ['-age', '21', 'and', 'some', 'more']
}
+ @Test
void testUsageMessageSpec() {
// suppress ANSI escape codes to make this test pass on all environments
System.setProperty("picocli.ansi", "false")
@@ -131,6 +134,7 @@ Footer 2
assertEquals(expected.normalize(), baos.toString().normalize())
}
+ @Test
void testMapOption() {
// tag::mapOption[]
def cli = new CliBuilder()
@@ -145,6 +149,7 @@ Footer 2
// end::mapOption[]
}
+ @Test
void testGroovyDocAntExample() {
def cli = new CliBuilder(usage:'ant [options] [targets]',
header:'Options:')
@@ -174,6 +179,7 @@ Options:
assertEquals(expected.normalize(), sw.toString().normalize())
}
+ @Test
void testGroovyDocCurlExample() {
// suppress ANSI escape codes to make this test pass on all environments
System.setProperty("picocli.ansi", "false")