This is an automated email from the ASF dual-hosted git repository. paulk pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/groovy.git
commit cf6888cbcd7df169246a59818134f805a6957866 Author: Eric Milles <[email protected]> AuthorDate: Thu Jul 18 11:15:14 2019 -0500 Convert some recent tests to JUnit 4 --- src/test/groovy/bugs/Groovy8962.groovy | 311 +++++++++++---------- .../bugs/{Groovy9063.groovy => Groovy8964.groovy} | 37 +-- src/test/groovy/bugs/Groovy8964Bug.groovy | 43 --- .../{Groovy9007Bug.groovy => Groovy9007.groovy} | 39 +-- .../bugs/{Groovy9153.groovy => Groovy9010.groovy} | 18 +- src/test/groovy/bugs/Groovy9010Bug.groovy | 30 -- src/test/groovy/bugs/Groovy9063.groovy | 6 +- src/test/groovy/bugs/Groovy9103.groovy | 72 +++++ src/test/groovy/bugs/Groovy9103Bug.groovy | 62 ---- src/test/groovy/bugs/Groovy9115.groovy | 66 +++++ src/test/groovy/bugs/Groovy9115Bug.groovy | 59 ---- src/test/groovy/bugs/Groovy9127.groovy | 11 +- src/test/groovy/bugs/Groovy9136.groovy | 34 ++- src/test/groovy/bugs/Groovy9141.groovy | 8 +- src/test/groovy/bugs/Groovy9153.groovy | 6 +- src/test/groovy/bugs/Groovy9170.groovy | 6 +- src/test/groovy/bugs/Groovy9176.groovy | 6 +- src/test/groovy/bugs/Groovy9184.groovy | 3 - 18 files changed, 404 insertions(+), 413 deletions(-) diff --git a/src/test/groovy/bugs/Groovy8962.groovy b/src/test/groovy/bugs/Groovy8962.groovy index 1756dfa..6a8b657 100644 --- a/src/test/groovy/bugs/Groovy8962.groovy +++ b/src/test/groovy/bugs/Groovy8962.groovy @@ -1,162 +1,165 @@ /* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. */ package groovy.bugs import junit.framework.TestCase import org.codehaus.groovy.control.CompilerConfiguration import org.codehaus.groovy.tools.javac.JavaAwareCompilationUnit +import org.junit.Test -class Groovy8962 extends GroovyTestCase { +final class Groovy8962 { + + @Test void testShouldCompileProperly_memStub() { - def config = new CompilerConfiguration() - config.with { - targetDirectory = createTempDir() - jointCompilationOptions = [memStub: true] - } + def config = new CompilerConfiguration( + targetDirectory: File.createTempDir(), + jointCompilationOptions: [memStub: true] + ) - File parentDir = createTempDir() + def parentDir = File.createTempDir() try { def a = new File(parentDir, 'A.groovy') a.write ''' - class A { - Map<String, Map<String, Integer[]>> columnsMap = [:] - } + class A { + Map<String, Map<String, Integer[]>> columnsMap = [:] + } ''' def b = new File(parentDir, 'B.java') b.write ''' - public class B { - public void f(A a) { - System.out.println(a.getColumnsMap()); + public class B { + public void f(A a) { + System.out.println(a.getColumnsMap()); + } } - } - ''' + ''' + def loader = new GroovyClassLoader(this.class.classLoader) def cu = new JavaAwareCompilationUnit(config, loader) - cu.addSources([a, b] as File[]) + cu.addSources(a, b) cu.compile() } finally { parentDir.deleteDir() - config.targetDirectory?.deleteDir() + config.targetDirectory.deleteDir() } - } + @Test void testShouldCompileProperly2_memStub() { - def config = new CompilerConfiguration() - config.with { - targetDirectory = createTempDir() - jointCompilationOptions = [memStub: true] - } + def config = new CompilerConfiguration( + targetDirectory: File.createTempDir(), + jointCompilationOptions: [memStub: true] + ) - File parentDir = createTempDir() + def parentDir = File.createTempDir() try { def a = new File(parentDir, 'A.groovy') a.write ''' - class A { - Map<String, Map<String, List<Integer[]>[]>> columnsMap = [:] - } + class A { + Map<String, Map<String, List<Integer[]>[]>> columnsMap = [:] + } ''' def b = new File(parentDir, 'B.java') b.write ''' - public class B { - public void f(A a) { - System.out.println(a.getColumnsMap()); + public class B { + public void f(A a) { + System.out.println(a.getColumnsMap()); + } } - } - ''' + ''' + def loader = new GroovyClassLoader(this.class.classLoader) def cu = new JavaAwareCompilationUnit(config, loader) - cu.addSources([a, b] as File[]) + cu.addSources(a, b) cu.compile() } finally { parentDir.deleteDir() - config.targetDirectory?.deleteDir() + config.targetDirectory.deleteDir() } - } + @Test void testShouldCompileProperly3_memStub() { - def config = new CompilerConfiguration() - config.with { - targetDirectory = createTempDir() - jointCompilationOptions = [memStub: true] - } + def config = new CompilerConfiguration( + targetDirectory: File.createTempDir(), + jointCompilationOptions: [memStub: true] + ) - File parentDir = createTempDir() + def parentDir = File.createTempDir() try { def a = new File(parentDir, 'A.groovy') a.write ''' - package x - import y.B - class A { - Map<String, Map<String, List<Integer[]>[]>> columnsMap = [:] - B b = null - } + package x + import y.B + class A { + Map<String, Map<String, List<Integer[]>[]>> columnsMap = [:] + B b = null + } ''' def b = new File(parentDir, 'B.java') b.write ''' - package y; - import x.A; - public class B { - public void f(A a) { - System.out.println(a.getColumnsMap()); + package y; + import x.A; + public class B { + public void f(A a) { + System.out.println(a.getColumnsMap()); + } } - } - ''' + ''' + def loader = new GroovyClassLoader(this.class.classLoader) def cu = new JavaAwareCompilationUnit(config, loader) - cu.addSources([a, b] as File[]) + cu.addSources(a, b) cu.compile() } finally { parentDir.deleteDir() - config.targetDirectory?.deleteDir() + config.targetDirectory.deleteDir() } - } + @Test void testShouldAllowConstantInSwitch_memStub() { - def config = new CompilerConfiguration() - config.with { - targetDirectory = createTempDir() - jointCompilationOptions = [memStub: true] - } + def config = new CompilerConfiguration( + targetDirectory: File.createTempDir(), + jointCompilationOptions: [memStub: true] + ) - File parentDir = createTempDir() + def parentDir = File.createTempDir() try { def b = new File(parentDir, 'B.java') b.write ''' - public class B { - public static void main(String...args) { - int x = 4; - switch (x) { - case groovy.bugs.Groovy8962.Constants.constant: x=1; + public class B { + public static void main(String...args) { + int x = 4; + switch (x) { + case groovy.bugs.Groovy8962.Constants.constant: x=1; + } } } - } - ''' + ''' + def loader = new GroovyClassLoader(this.class.classLoader) addToClassPath(loader) def cu = new JavaAwareCompilationUnit(config, loader) - cu.addSources([b] as File[]) + cu.addSources(b) cu.compile() } finally { parentDir.deleteDir() @@ -164,14 +167,14 @@ class Groovy8962 extends GroovyTestCase { } } + @Test void testShouldAllowConstantInSwitchWithStubs_memStub() { - def config = new CompilerConfiguration() - config.with { - targetDirectory = createTempDir() - jointCompilationOptions = [memStub: true] - } + def config = new CompilerConfiguration( + targetDirectory: File.createTempDir(), + jointCompilationOptions: [memStub: true] + ) - File parentDir = createTempDir() + def parentDir = File.createTempDir() try { def a = new File(parentDir, 'A.groovy') a.write ''' @@ -181,19 +184,20 @@ class Groovy8962 extends GroovyTestCase { ''' def b = new File(parentDir, 'B.java') b.write ''' - public class B { - public static void main(String...args) { - int x = 4; - switch (x) { - case A.constant: x=1; + public class B { + public static void main(String...args) { + int x = 4; + switch (x) { + case A.constant: x=1; + } } } - } - ''' + ''' + def loader = new GroovyClassLoader(this.class.classLoader) addToClassPath(loader) def cu = new JavaAwareCompilationUnit(config, loader) - cu.addSources([a, b] as File[]) + cu.addSources(a, b) cu.compile() } finally { parentDir.deleteDir() @@ -201,36 +205,31 @@ class Groovy8962 extends GroovyTestCase { } } - static addToClassPath(GroovyClassLoader loader) { - loader.addURL(this.getProtectionDomain().getCodeSource().getLocation()) - loader.addURL(GroovyTestCase.class.getProtectionDomain().getCodeSource().getLocation()) - loader.addURL(TestCase.class.getProtectionDomain().getCodeSource().getLocation()) - } - + @Test void testShouldAllowCharConstantInSwitchWithoutStubs_memStub() { - def config = new CompilerConfiguration() - config.with { - targetDirectory = createTempDir() - jointCompilationOptions = [memStub: true] - } + def config = new CompilerConfiguration( + targetDirectory: File.createTempDir(), + jointCompilationOptions: [memStub: true] + ) - File parentDir = createTempDir() + def parentDir = File.createTempDir() try { def b = new File(parentDir, 'B.java') b.write ''' - public class B { - public static void main(String...args) { - char x = 'z'; - switch (x) { - case groovy.bugs.Groovy8962.Constants.FOOCHAR: x='y'; + public class B { + public static void main(String...args) { + char x = 'z'; + switch (x) { + case groovy.bugs.Groovy8962.Constants.FOOCHAR: x='y'; + } } } - } - ''' + ''' + def loader = new GroovyClassLoader(this.class.classLoader) config.setClasspathList([getClasspathElement(this.class), getClasspathElement(GroovyTestCase), getClasspathElement(TestCase)]) def cu = new JavaAwareCompilationUnit(config, loader) - cu.addSources([b] as File[]) + cu.addSources(b) cu.compile() } finally { parentDir.deleteDir() @@ -238,20 +237,14 @@ class Groovy8962 extends GroovyTestCase { } } - private static getClasspathElement(Class c) { - def codeSource = c.protectionDomain.codeSource - def file = new File(codeSource.getLocation().toURI()).getPath() - return file.toString() - } - + @Test void testShouldAllowCharConstantInSwitchWithStubs_memStub() { - def config = new CompilerConfiguration() - config.with { - targetDirectory = createTempDir() - jointCompilationOptions = [memStub: true] - } + def config = new CompilerConfiguration( + targetDirectory: File.createTempDir(), + jointCompilationOptions: [memStub: true] + ) - File parentDir = createTempDir() + def parentDir = File.createTempDir() try { def a = new File(parentDir, 'A.groovy') a.write ''' @@ -261,18 +254,19 @@ class Groovy8962 extends GroovyTestCase { ''' def b = new File(parentDir, 'B.java') b.write ''' - public class B { - public static void main(String...args) { - char x = 'z'; - switch (x) { - case A.constant: x='y'; + public class B { + public static void main(String...args) { + char x = 'z'; + switch (x) { + case A.constant: x='y'; + } } } - } - ''' + ''' + def loader = new GroovyClassLoader(this.class.classLoader) def cu = new JavaAwareCompilationUnit(config, loader) - cu.addSources([a, b] as File[]) + cu.addSources(a, b) cu.compile() } finally { parentDir.deleteDir() @@ -280,14 +274,14 @@ class Groovy8962 extends GroovyTestCase { } } + @Test void testAccessConstantStringFromJavaClass_memStub() { - def config = new CompilerConfiguration() - config.with { - targetDirectory = createTempDir() - jointCompilationOptions = [memStub: true] - } + def config = new CompilerConfiguration( + targetDirectory: File.createTempDir(), + jointCompilationOptions: [memStub: true] + ) - File parentDir = createTempDir() + def parentDir = File.createTempDir() try { def a = new File(parentDir, 'A.groovy') a.write ''' @@ -297,16 +291,18 @@ class Groovy8962 extends GroovyTestCase { ''' def b = new File(parentDir, 'B.java') b.write ''' - public class B { - public static void main(String...args) { - if (!"hello, world!".equals(A.CONSTANT)) throw new RuntimeException("Constant should not be: ["+A.CONSTANT+"]"); + public class B { + public static void main(String...args) { + if (!"hello, world!".equals(A.CONSTANT)) throw new RuntimeException("Constant should not be: ["+A.CONSTANT+"]"); + } } - } - ''' + ''' + def loader = new GroovyClassLoader(this.class.classLoader) def cu = new JavaAwareCompilationUnit(config, loader) - cu.addSources([a, b] as File[]) + cu.addSources(a, b) cu.compile() + Class clazz = loader.loadClass("B") clazz.newInstance().main() } finally { @@ -315,8 +311,17 @@ class Groovy8962 extends GroovyTestCase { } } - private static File createTempDir() { - File.createTempDir("groovyTest${System.currentTimeMillis()}", "") + //-------------------------------------------------------------------------- + + private static void addToClassPath(GroovyClassLoader loader) { + loader.addURL(this.protectionDomain.codeSource.location) + loader.addURL(GroovyTestCase.protectionDomain.codeSource.location) + loader.addURL(TestCase.protectionDomain.codeSource.location) + } + + private static String getClasspathElement(Class c) { + def codeSource = c.protectionDomain.codeSource + new File(codeSource.location.toURI()).path.toString() } static class Constants { diff --git a/src/test/groovy/bugs/Groovy9063.groovy b/src/test/groovy/bugs/Groovy8964.groovy similarity index 56% copy from src/test/groovy/bugs/Groovy9063.groovy copy to src/test/groovy/bugs/Groovy8964.groovy index 488e870..ec287e8 100644 --- a/src/test/groovy/bugs/Groovy9063.groovy +++ b/src/test/groovy/bugs/Groovy8964.groovy @@ -7,7 +7,7 @@ * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -18,27 +18,32 @@ */ package groovy.bugs -import groovy.transform.CompileStatic +import org.junit.Test -@CompileStatic -final class Groovy9063 extends GroovyTestCase { +import static groovy.test.GroovyAssert.assertScript - void testProtectedFieldAccessFromNestedClosure() { +final class Groovy8964 { + + @Test + void testInstanceVarargMethodNotMaskedByStaticMethodWithSameNumberOfArgs() { assertScript ''' - @groovy.transform.CompileStatic - class Groovy9063 { - protected String message = 'hello' - - int nestedClosures() { - { -> - { -> - message.length() - }.call() - }.call() + class Example { + + def method(String... args) { + 'vararg' + } + + static method(List<String> args, File workDirectory, Appendable out, Appendable err) { + 'multi' + } + + def execute() { + method("a", "b", "c", "d") } } - assert new Groovy9063().nestedClosures() == 5 + Example ex = new Example() + assert ex.execute() == 'vararg' ''' } } diff --git a/src/test/groovy/bugs/Groovy8964Bug.groovy b/src/test/groovy/bugs/Groovy8964Bug.groovy deleted file mode 100644 index 47b5109..0000000 --- a/src/test/groovy/bugs/Groovy8964Bug.groovy +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package groovy.bugs - -class Groovy8964Bug extends GroovyTestCase { - void testInstanceVarargMethodNotMaskedByStaticMethodWithSameNumberOfArgs() { - assertScript ''' - class Example { - - def method(String... args) { - 'vararg' - } - - static method(List<String> args, File workDirectory, Appendable out, Appendable err) { - 'multi' - } - - def execute() { - method("a", "b", "c", "d") - } - } - - Example ex = new Example() - assert ex.execute() == 'vararg' - ''' - } -} diff --git a/src/test/groovy/bugs/Groovy9007Bug.groovy b/src/test/groovy/bugs/Groovy9007.groovy similarity index 65% rename from src/test/groovy/bugs/Groovy9007Bug.groovy rename to src/test/groovy/bugs/Groovy9007.groovy index a75e452..307b2b3 100644 --- a/src/test/groovy/bugs/Groovy9007Bug.groovy +++ b/src/test/groovy/bugs/Groovy9007.groovy @@ -1,24 +1,30 @@ /* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. */ package groovy.bugs -class Groovy9007Bug extends GroovyTestCase { +import org.junit.Test + +import static groovy.test.GroovyAssert.assertScript + +final class Groovy9007 { + + @Test void testProtectedFieldInClosureInEnum() { assertScript ''' @groovy.transform.CompileStatic @@ -35,6 +41,7 @@ class Groovy9007Bug extends GroovyTestCase { ''' } + @Test void testPrivateFieldInClosureInEnum() { assertScript ''' @groovy.transform.CompileStatic @@ -51,7 +58,7 @@ class Groovy9007Bug extends GroovyTestCase { ''' } - // GROOVY-8978 + @Test // GROOVY-8978 void testProtectedFieldInChildWithExplicitThis() { assertScript ''' import groovy.transform.CompileStatic diff --git a/src/test/groovy/bugs/Groovy9153.groovy b/src/test/groovy/bugs/Groovy9010.groovy similarity index 69% copy from src/test/groovy/bugs/Groovy9153.groovy copy to src/test/groovy/bugs/Groovy9010.groovy index e28b629..f7ca70a 100644 --- a/src/test/groovy/bugs/Groovy9153.groovy +++ b/src/test/groovy/bugs/Groovy9010.groovy @@ -7,7 +7,7 @@ * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -19,18 +19,18 @@ package groovy.bugs import groovy.transform.CompileStatic -import org.codehaus.groovy.ast.expr.ConstantExpression +import org.junit.Test + +import static groovy.test.GroovyAssert.assertScript @CompileStatic -final class Groovy9153 extends GroovyTestCase { +final class Groovy9010 { - void testConstantExpressionNULL() { + @Test + void testASTTestWithNoSpacesInClosure() { assertScript ''' - @groovy.transform.CompileStatic - File tempDir() { - return File.createTempDir() - } + @groovy.transform.ASTTest({assert 1==1}) + def x ''' - assert ConstantExpression.NULL.getNodeMetaData().isEmpty() } } diff --git a/src/test/groovy/bugs/Groovy9010Bug.groovy b/src/test/groovy/bugs/Groovy9010Bug.groovy deleted file mode 100644 index d8b7045..0000000 --- a/src/test/groovy/bugs/Groovy9010Bug.groovy +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package groovy.bugs - -import gls.CompilableTestSupport - -class Groovy9010Bug extends CompilableTestSupport { - void testASTTestWithNoSpacesInClosure() { - shouldCompile ''' - @groovy.transform.ASTTest({assert 1==1}) - def x - ''' - } -} diff --git a/src/test/groovy/bugs/Groovy9063.groovy b/src/test/groovy/bugs/Groovy9063.groovy index 488e870..9bd5172 100644 --- a/src/test/groovy/bugs/Groovy9063.groovy +++ b/src/test/groovy/bugs/Groovy9063.groovy @@ -19,10 +19,14 @@ package groovy.bugs import groovy.transform.CompileStatic +import org.junit.Test + +import static groovy.test.GroovyAssert.assertScript @CompileStatic -final class Groovy9063 extends GroovyTestCase { +final class Groovy9063 { + @Test void testProtectedFieldAccessFromNestedClosure() { assertScript ''' @groovy.transform.CompileStatic diff --git a/src/test/groovy/bugs/Groovy9103.groovy b/src/test/groovy/bugs/Groovy9103.groovy new file mode 100644 index 0000000..28d6fcd --- /dev/null +++ b/src/test/groovy/bugs/Groovy9103.groovy @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package groovy.bugs + +import org.junit.Test + +import static groovy.test.GroovyAssert.assertScript + +// TODO: add JVM option `--illegal-access=deny` when all warnings fixed +final class Groovy9103 { + + @Test + void testProperties() { + String str = '' + assert str.properties + } + + @Test + void testBigIntegerMultiply() { + assert 2G * 1 + } + + @Test + void testClone() { + assertScript ''' + def broadcastSeq(Object value) { + value.clone() + } + + assert broadcastSeq(new Tuple1('abc')) + ''' + } + + @Test + void testClone2() { + assertScript ''' + class Value { + @Override + public Value clone() { + return new Value() + } + } + def broadcastSeq(Object value) { + value.clone() + } + + assert broadcastSeq(new Value()) + ''' + } + + @Test + void testClone3() { + Object obj = new Tuple1('abc') + assert obj.clone() + } +} diff --git a/src/test/groovy/bugs/Groovy9103Bug.groovy b/src/test/groovy/bugs/Groovy9103Bug.groovy deleted file mode 100644 index 322bd36..0000000 --- a/src/test/groovy/bugs/Groovy9103Bug.groovy +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package groovy.bugs - -// TODO add JVM option `--illegal-access=deny` when all warnings fixed -class Groovy9103Bug extends GroovyTestCase { - void testProperties() { - String str = '' - assert str.properties - } - - void testBigIntegerMultiply() { - assert 2G * 1 - } - - void testClone() { - assertScript ''' - def broadcastSeq(Object value) { - value.clone() - } - - assert broadcastSeq(new Tuple1('abc')) - ''' - } - - void testClone2() { - assertScript ''' - class Value { - @Override - public Value clone() { - return new Value() - } - } - def broadcastSeq(Object value) { - value.clone() - } - - assert broadcastSeq(new Value()) - ''' - } - - void testClone3() { - Object obj = new Tuple1('abc') - assert obj.clone() - } -} diff --git a/src/test/groovy/bugs/Groovy9115.groovy b/src/test/groovy/bugs/Groovy9115.groovy new file mode 100644 index 0000000..5393713 --- /dev/null +++ b/src/test/groovy/bugs/Groovy9115.groovy @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package groovy.bugs + +import groovy.transform.CompileStatic +import org.junit.Test + +import static groovy.test.GroovyAssert.assertScript + +@CompileStatic +final class Groovy9115 { + + @Test + void testSetPropertyInIfStmt() { + assertScript ''' + @groovy.transform.CompileStatic + class Derived { + def m() { + if (true) { + File file = File.createTempFile("hello${System.nanoTime()}", ".tmp") + file.text = 'Groovy9115Bug' + assert 'Groovy9115Bug' == file.text + } + + return null + } + } + + new Derived().m() + ''' + } + + @Test + void testSetProperty() { + assertScript ''' + @groovy.transform.CompileStatic + class Derived { + def m() { + File file = File.createTempFile("hello${System.nanoTime()}", ".tmp") + file.text = 'Groovy9115Bug' + assert 'Groovy9115Bug' == file.text + + return null + } + } + + new Derived().m() + ''' + } +} diff --git a/src/test/groovy/bugs/Groovy9115Bug.groovy b/src/test/groovy/bugs/Groovy9115Bug.groovy deleted file mode 100644 index 0c7026c..0000000 --- a/src/test/groovy/bugs/Groovy9115Bug.groovy +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package groovy.bugs - -import gls.CompilableTestSupport - -class Groovy9115Bug extends CompilableTestSupport { - void testSetPropertyInIfStmt() { - assertScript ''' - @groovy.transform.CompileStatic - class Derived { - def m() { - if (true) { - File file = File.createTempFile("hello${System.nanoTime()}", ".tmp") - file.text = 'Groovy9115Bug' - assert 'Groovy9115Bug' == file.text - } - - return null - } - } - - new Derived().m() - ''' - } - - void testSetProperty() { - assertScript ''' - @groovy.transform.CompileStatic - class Derived { - def m() { - File file = File.createTempFile("hello${System.nanoTime()}", ".tmp") - file.text = 'Groovy9115Bug' - assert 'Groovy9115Bug' == file.text - - return null - } - } - - new Derived().m() - ''' - } -} diff --git a/src/test/groovy/bugs/Groovy9127.groovy b/src/test/groovy/bugs/Groovy9127.groovy index 96a5efd..9f22acf 100644 --- a/src/test/groovy/bugs/Groovy9127.groovy +++ b/src/test/groovy/bugs/Groovy9127.groovy @@ -21,12 +21,16 @@ package groovy.bugs import groovy.transform.CompileStatic import org.codehaus.groovy.control.CompilationFailedException import org.codehaus.groovy.control.CompilationUnit +import org.junit.Test +import static groovy.test.GroovyAssert.assertScript +import static groovy.test.GroovyAssert.shouldFail import static org.codehaus.groovy.control.Phases.CLASS_GENERATION @CompileStatic -final class Groovy9127 extends GroovyTestCase { +final class Groovy9127 { + @Test void testReadOnlyPropertyAssignment1() { assertScript ''' @groovy.transform.CompileStatic @@ -48,6 +52,7 @@ final class Groovy9127 extends GroovyTestCase { ''' } + @Test void testReadOnlyPropertyAssignment2() { assertScript ''' @groovy.transform.CompileStatic @@ -69,6 +74,7 @@ final class Groovy9127 extends GroovyTestCase { ''' } + @Test void testReadOnlyPropertyAssignment3() { assertScript ''' @groovy.transform.CompileStatic @@ -90,6 +96,7 @@ final class Groovy9127 extends GroovyTestCase { ''' } + @Test void testReadOnlyPropertyAssignment4() { new CompilationUnit().with { addSource 'Foo.groovy', ''' @@ -122,6 +129,7 @@ final class Groovy9127 extends GroovyTestCase { } } + @Test void testReadOnlyPropertyAssignment5() { def err = shouldFail CompilationFailedException, ''' @groovy.transform.CompileStatic @@ -141,6 +149,7 @@ final class Groovy9127 extends GroovyTestCase { assert err =~ /\[Static type checking\] - Cannot set read-only property: field/ } + @Test void testAttributeAssignmentVariation() { assertScript ''' @groovy.transform.CompileStatic diff --git a/src/test/groovy/bugs/Groovy9136.groovy b/src/test/groovy/bugs/Groovy9136.groovy index f85aff2..b7da0b9 100644 --- a/src/test/groovy/bugs/Groovy9136.groovy +++ b/src/test/groovy/bugs/Groovy9136.groovy @@ -1,28 +1,32 @@ /* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. */ package groovy.bugs import groovy.transform.CompileStatic +import org.junit.Test + +import static groovy.test.GroovyAssert.assertScript @CompileStatic -final class Groovy9136 extends GroovyTestCase { +final class Groovy9136 { + @Test void testMethodParameterAccessFromClosure() { assertScript ''' @groovy.transform.CompileStatic diff --git a/src/test/groovy/bugs/Groovy9141.groovy b/src/test/groovy/bugs/Groovy9141.groovy index b3b6389..f836226 100644 --- a/src/test/groovy/bugs/Groovy9141.groovy +++ b/src/test/groovy/bugs/Groovy9141.groovy @@ -21,12 +21,15 @@ package groovy.bugs import groovy.transform.CompileStatic import org.codehaus.groovy.control.CompilationFailedException import org.codehaus.groovy.control.CompilerConfiguration +import org.junit.Test +import static groovy.test.GroovyAssert.shouldFail import static org.codehaus.groovy.control.ParserPluginFactory.antlr2 @CompileStatic -final class Groovy9141 extends GroovyTestCase { +final class Groovy9141 { + @Test void testAbstractMethodWithBodyInClass() { def err = shouldFail CompilationFailedException, ''' abstract class Main { @@ -36,7 +39,7 @@ final class Groovy9141 extends GroovyTestCase { assert err =~ / You defined an abstract method\[meth\] with a body. Try removing the method body @ line / } - // not a language requirement but script-level check takes precedence in current implementation + @Test // not a language requirement but script-level check takes precedence in current implementation void testAbstractMethodWithBodyInScript() { def err = shouldFail CompilationFailedException, ''' abstract void meth() {} @@ -44,6 +47,7 @@ final class Groovy9141 extends GroovyTestCase { assert err =~ / You cannot define an abstract method\[meth\] in the script. Try removing the 'abstract' / } + @Test void testAbstractMethodWithBodyInScript_oldParser() { def shell = new GroovyShell(new CompilerConfiguration(pluginFactory: antlr2())) diff --git a/src/test/groovy/bugs/Groovy9153.groovy b/src/test/groovy/bugs/Groovy9153.groovy index e28b629..6d6ae91 100644 --- a/src/test/groovy/bugs/Groovy9153.groovy +++ b/src/test/groovy/bugs/Groovy9153.groovy @@ -20,10 +20,14 @@ package groovy.bugs import groovy.transform.CompileStatic import org.codehaus.groovy.ast.expr.ConstantExpression +import org.junit.Test + +import static groovy.test.GroovyAssert.assertScript @CompileStatic -final class Groovy9153 extends GroovyTestCase { +final class Groovy9153 { + @Test void testConstantExpressionNULL() { assertScript ''' @groovy.transform.CompileStatic diff --git a/src/test/groovy/bugs/Groovy9170.groovy b/src/test/groovy/bugs/Groovy9170.groovy index 6ee0368..8d8ed19 100644 --- a/src/test/groovy/bugs/Groovy9170.groovy +++ b/src/test/groovy/bugs/Groovy9170.groovy @@ -19,10 +19,14 @@ package groovy.bugs import groovy.transform.CompileStatic +import org.junit.Test + +import static groovy.test.GroovyAssert.shouldFail @CompileStatic -final class Groovy9170 extends GroovyTestCase { +final class Groovy9170 { + @Test void testOverrideJavaLangObjectClone() { shouldFail CloneNotSupportedException, ''' class C implements Cloneable, Serializable { diff --git a/src/test/groovy/bugs/Groovy9176.groovy b/src/test/groovy/bugs/Groovy9176.groovy index 7d0a562..c2aad6b 100644 --- a/src/test/groovy/bugs/Groovy9176.groovy +++ b/src/test/groovy/bugs/Groovy9176.groovy @@ -20,10 +20,14 @@ package groovy.bugs import groovy.transform.CompileStatic import org.codehaus.groovy.control.CompilationFailedException +import org.junit.Test + +import static groovy.test.GroovyAssert.shouldFail @CompileStatic -final class Groovy9176 extends GroovyTestCase { +final class Groovy9176 { + @Test void testGroovyPropertyCovariantMethodCheck() { def err = shouldFail CompilationFailedException, ''' class Pojo { diff --git a/src/test/groovy/bugs/Groovy9184.groovy b/src/test/groovy/bugs/Groovy9184.groovy index 28c763d..6d4d34c 100644 --- a/src/test/groovy/bugs/Groovy9184.groovy +++ b/src/test/groovy/bugs/Groovy9184.groovy @@ -21,13 +21,10 @@ package groovy.bugs import groovy.transform.CompileStatic import org.codehaus.groovy.control.CompilerConfiguration import org.junit.Test -import org.junit.runner.RunWith -import org.junit.runners.JUnit4 import static org.codehaus.groovy.control.ParserPluginFactory.antlr2 @CompileStatic -@RunWith(JUnit4) final class Groovy9184 { @Test(timeout=1500L)
