diff --git a/.github/workflows/central-sync.yml b/.github/workflows/central-sync.yml index de8e0c58c..c7fe19a58 100644 --- a/.github/workflows/central-sync.yml +++ b/.github/workflows/central-sync.yml @@ -30,7 +30,7 @@ jobs: distribution: 'temurin' java-version: | 21 - 25 + 17 - name: Publish to Sonatype OSSRH env: SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index bf0e1fb72..e0441fa49 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: ['21', '25'] + java: ['21', '17'] env: DEVELOCITY_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} DEVELOCITY_CACHE_USERNAME: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USERNAME }} diff --git a/.github/workflows/publish-snapshot.yml b/.github/workflows/publish-snapshot.yml index 41c1b2d07..84883c5d3 100644 --- a/.github/workflows/publish-snapshot.yml +++ b/.github/workflows/publish-snapshot.yml @@ -28,7 +28,7 @@ jobs: distribution: 'temurin' java-version: | 21 - 25 + 17 - name: Publish to Sonatype Snapshots if: success() env: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 732914113..80940bc9a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,7 +29,7 @@ jobs: distribution: 'temurin' java-version: | 21 - 25 + 17 - name: Set the current release version id: release_version run: echo "release_version=${GITHUB_REF:11}" >> $GITHUB_OUTPUT diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts index b5a0fabf6..8deca1978 100644 --- a/build-logic/settings.gradle.kts +++ b/build-logic/settings.gradle.kts @@ -5,3 +5,4 @@ dependencyResolutionManagement { } } } +rootProject.name = "sourcegen-build-logic" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f8e1ee312..1b33c55ba 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 23449a2b5..d4081da47 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index adff685a0..23d15a936 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015 the original authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -114,6 +114,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac +CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -171,6 +172,7 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -210,6 +212,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" diff --git a/gradlew.bat b/gradlew.bat index c4bdd3ab8..db3a6ac20 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,10 +70,11 @@ goto fail :execute @rem Setup the command line +set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/sourcegen-generator-java/build.gradle.kts b/sourcegen-generator-java/build.gradle.kts index ebde8d800..c78c3a7a0 100644 --- a/sourcegen-generator-java/build.gradle.kts +++ b/sourcegen-generator-java/build.gradle.kts @@ -11,6 +11,9 @@ dependencies { testImplementation(libs.google.jimfs) testImplementation(mnTest.mockito.core) } +micronautBuild { + testFramework = io.micronaut.build.TestFramework.JUNIT5 +} tasks.withType { useJUnitPlatform() } diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/AbstractTypesTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/AbstractTypesTest.java index 9d9a04828..e2730d267 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/AbstractTypesTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/AbstractTypesTest.java @@ -17,7 +17,7 @@ import com.google.testing.compile.Compilation; import com.google.testing.compile.JavaFileObjects; -import org.junit.Test; +import org.junit.jupiter.api.Test; import javax.annotation.processing.AbstractProcessor; import javax.annotation.processing.RoundEnvironment; @@ -41,34 +41,35 @@ import static com.google.testing.compile.Compiler.javac; import static javax.lang.model.util.ElementFilter.fieldsIn; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; import static com.google.common.truth.Truth.assertThat; import static com.google.testing.compile.CompilationSubject.assertThat; public abstract class AbstractTypesTest { - protected abstract Elements getElements(); - protected abstract Types getTypes(); + protected abstract Elements getElements(CompilationRule compilation); + protected abstract Types getTypes(CompilationRule compilation); - private TypeElement getElement(Class clazz) { - return getElements().getTypeElement(clazz.getCanonicalName()); + private TypeElement getElement(Class clazz, CompilationRule compilation) { + return getElements(compilation).getTypeElement(clazz.getCanonicalName()); } - private TypeMirror getMirror(Class clazz) { - return getElement(clazz).asType(); + private TypeMirror getMirror(Class clazz, CompilationRule compilation) { + return getElement(clazz, compilation).asType(); } - @Test public void getBasicTypeMirror() { - assertThat(TypeName.get(getMirror(Object.class))) + @Test + public void getBasicTypeMirror(CompilationRule compilation) { + assertThat(TypeName.get(getMirror(Object.class, compilation))) .isEqualTo(ClassName.get(Object.class)); - assertThat(TypeName.get(getMirror(Charset.class))) + assertThat(TypeName.get(getMirror(Charset.class, compilation))) .isEqualTo(ClassName.get(Charset.class)); - assertThat(TypeName.get(getMirror(AbstractTypesTest.class))) + assertThat(TypeName.get(getMirror(AbstractTypesTest.class, compilation))) .isEqualTo(ClassName.get(AbstractTypesTest.class)); } - @Test public void getParameterizedTypeMirror() { + @Test public void getParameterizedTypeMirror(CompilationRule compilation) { DeclaredType setType = - getTypes().getDeclaredType(getElement(Set.class), getMirror(Object.class)); + getTypes(compilation).getDeclaredType(getElement(Set.class, compilation), getMirror(Object.class, compilation)); assertThat(TypeName.get(setType)) .isEqualTo(ParameterizedTypeName.get(ClassName.get(Set.class), ClassName.OBJECT)); } @@ -115,9 +116,9 @@ static class Parameterized< Intersection extends Number & Runnable, IntersectionOfInterfaces extends Runnable & Serializable> {} - @Test public void getTypeVariableTypeMirror() { + @Test public void getTypeVariableTypeMirror(CompilationRule compilation) { List typeVariables = - getElement(Parameterized.class).getTypeParameters(); + getElement(Parameterized.class, compilation).getTypeParameters(); // Members of converted types use ClassName and not Class. ClassName number = ClassName.get(Number.class); @@ -143,8 +144,8 @@ static class Parameterized< static class Recursive, Set>> {} @Test - public void getTypeVariableTypeMirrorRecursive() { - TypeMirror typeMirror = getElement(Recursive.class).asType(); + public void getTypeVariableTypeMirrorRecursive(CompilationRule compilation) { + TypeMirror typeMirror = getElement(Recursive.class, compilation).asType(); ParameterizedTypeName typeName = (ParameterizedTypeName) TypeName.get(typeMirror); String className = Recursive.class.getCanonicalName(); assertThat(typeName.toString()).isEqualTo(className + ""); @@ -162,38 +163,38 @@ public void getTypeVariableTypeMirrorRecursive() { .isEqualTo("[java.util.Map, java.util.Set>]"); } - @Test public void getPrimitiveTypeMirror() { - assertThat(TypeName.get(getTypes().getPrimitiveType(TypeKind.BOOLEAN))) + @Test public void getPrimitiveTypeMirror(CompilationRule compilation) { + assertThat(TypeName.get(getTypes(compilation).getPrimitiveType(TypeKind.BOOLEAN))) .isEqualTo(TypeName.BOOLEAN); - assertThat(TypeName.get(getTypes().getPrimitiveType(TypeKind.BYTE))) + assertThat(TypeName.get(getTypes(compilation).getPrimitiveType(TypeKind.BYTE))) .isEqualTo(TypeName.BYTE); - assertThat(TypeName.get(getTypes().getPrimitiveType(TypeKind.SHORT))) + assertThat(TypeName.get(getTypes(compilation).getPrimitiveType(TypeKind.SHORT))) .isEqualTo(TypeName.SHORT); - assertThat(TypeName.get(getTypes().getPrimitiveType(TypeKind.INT))) + assertThat(TypeName.get(getTypes(compilation).getPrimitiveType(TypeKind.INT))) .isEqualTo(TypeName.INT); - assertThat(TypeName.get(getTypes().getPrimitiveType(TypeKind.LONG))) + assertThat(TypeName.get(getTypes(compilation).getPrimitiveType(TypeKind.LONG))) .isEqualTo(TypeName.LONG); - assertThat(TypeName.get(getTypes().getPrimitiveType(TypeKind.CHAR))) + assertThat(TypeName.get(getTypes(compilation).getPrimitiveType(TypeKind.CHAR))) .isEqualTo(TypeName.CHAR); - assertThat(TypeName.get(getTypes().getPrimitiveType(TypeKind.FLOAT))) + assertThat(TypeName.get(getTypes(compilation).getPrimitiveType(TypeKind.FLOAT))) .isEqualTo(TypeName.FLOAT); - assertThat(TypeName.get(getTypes().getPrimitiveType(TypeKind.DOUBLE))) + assertThat(TypeName.get(getTypes(compilation).getPrimitiveType(TypeKind.DOUBLE))) .isEqualTo(TypeName.DOUBLE); } - @Test public void getArrayTypeMirror() { - assertThat(TypeName.get(getTypes().getArrayType(getMirror(Object.class)))) + @Test public void getArrayTypeMirror(CompilationRule compilation) { + assertThat(TypeName.get(getTypes(compilation).getArrayType(getMirror(Object.class, compilation)))) .isEqualTo(ArrayTypeName.of(ClassName.OBJECT)); } - @Test public void getVoidTypeMirror() { - assertThat(TypeName.get(getTypes().getNoType(TypeKind.VOID))) + @Test public void getVoidTypeMirror(CompilationRule compilation) { + assertThat(TypeName.get(getTypes(compilation).getNoType(TypeKind.VOID))) .isEqualTo(TypeName.VOID); } - @Test public void getNullTypeMirror() { + @Test public void getNullTypeMirror(CompilationRule compilation) { try { - TypeName.get(getTypes().getNullType()); + TypeName.get(getTypes(compilation).getNullType()); fail(); } catch (IllegalArgumentException expected) { } @@ -224,24 +225,24 @@ public void getTypeVariableTypeMirrorRecursive() { assertThat(type.toString()).isEqualTo("? super java.lang.String"); } - @Test public void wildcardMirrorNoBounds() throws Exception { - WildcardType wildcard = getTypes().getWildcardType(null, null); + @Test public void wildcardMirrorNoBounds(CompilationRule compilation) throws Exception { + WildcardType wildcard = getTypes(compilation).getWildcardType(null, null); TypeName type = TypeName.get(wildcard); assertThat(type.toString()).isEqualTo("?"); } - @Test public void wildcardMirrorExtendsType() throws Exception { - Types types = getTypes(); - Elements elements = getElements(); + @Test public void wildcardMirrorExtendsType(CompilationRule compilation) throws Exception { + Types types = getTypes(compilation); + Elements elements = getElements(compilation); TypeMirror charSequence = elements.getTypeElement(CharSequence.class.getName()).asType(); WildcardType wildcard = types.getWildcardType(charSequence, null); TypeName type = TypeName.get(wildcard); assertThat(type.toString()).isEqualTo("? extends java.lang.CharSequence"); } - @Test public void wildcardMirrorSuperType() throws Exception { - Types types = getTypes(); - Elements elements = getElements(); + @Test public void wildcardMirrorSuperType(CompilationRule compilation) throws Exception { + Types types = getTypes(compilation); + Elements elements = getElements(compilation); TypeMirror string = elements.getTypeElement(String.class.getName()).asType(); WildcardType wildcard = types.getWildcardType(null, string); TypeName type = TypeName.get(wildcard); diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/AnnotatedTypeNameTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/AnnotatedTypeNameTest.java index e9feef1d2..c4d38d0aa 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/AnnotatedTypeNameTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/AnnotatedTypeNameTest.java @@ -15,7 +15,7 @@ */ package io.micronaut.sourcegen.javapoet; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.lang.annotation.ElementType; import java.lang.annotation.Target; @@ -23,10 +23,11 @@ import java.util.Map; import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; public class AnnotatedTypeNameTest { @@ -43,12 +44,18 @@ public class AnnotatedTypeNameTest { public @interface TypeUseAnnotation {} - @Test(expected=NullPointerException.class) public void nullAnnotationArray() { - TypeName.BOOLEAN.annotated((AnnotationSpec[]) null); + @Test + void nullAnnotationArray() { + assertThrows(NullPointerException.class, () -> + TypeName.BOOLEAN.annotated((AnnotationSpec[]) null) + ); } - @Test(expected=NullPointerException.class) public void nullAnnotationList() { - TypeName.DOUBLE.annotated((List) null); + @Test + void nullAnnotationList() { + assertThrows(NullPointerException.class, () -> + TypeName.DOUBLE.annotated((List) null) + ); } @Test public void annotated() { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/AnnotationSpecTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/AnnotationSpecTest.java index bd41df909..d15e7a928 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/AnnotationSpecTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/AnnotationSpecTest.java @@ -15,10 +15,9 @@ */ package io.micronaut.sourcegen.javapoet; -import com.google.testing.compile.CompilationRule; import io.micronaut.sourcegen.javapoet.AnnotationSpec.CodeAnnotationValue; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import javax.lang.model.element.TypeElement; import java.lang.annotation.Annotation; @@ -28,8 +27,9 @@ import java.util.List; import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; +@ExtendWith(CompilationRule.class) public final class AnnotationSpecTest { @Retention(RetentionPolicy.RUNTIME) @@ -105,7 +105,6 @@ public class IsAnnotated { // empty } - @Rule public final CompilationRule compilation = new CompilationRule(); @Test void equalsAndHashCode() { @@ -120,7 +119,7 @@ void equalsAndHashCode() { } @Test - void defaultAnnotation() { + void defaultAnnotation(CompilationRule compilation) { String name = IsAnnotated.class.getCanonicalName(); TypeElement element = compilation.getElements().getTypeElement(name); AnnotationSpec annotation = AnnotationSpec.get(element.getAnnotationMirrors().get(0)); @@ -157,7 +156,7 @@ void defaultAnnotation() { } @Test - void defaultAnnotationWithImport() { + void defaultAnnotationWithImport(CompilationRule compilation) { String name = IsAnnotated.class.getCanonicalName(); TypeElement element = compilation.getElements().getTypeElement(name); AnnotationSpec annotation = AnnotationSpec.get(element.getAnnotationMirrors().get(0)); @@ -248,7 +247,7 @@ void dynamicArrayOfEnumConstants() { } @Test - void defaultAnnotationToBuilder() { + void defaultAnnotationToBuilder(CompilationRule compilation) { String name = IsAnnotated.class.getCanonicalName(); TypeElement element = compilation.getElements().getTypeElement(name); AnnotationSpec.Builder builder = AnnotationSpec.get(element.getAnnotationMirrors().get(0)) diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/ClassNameTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/ClassNameTest.java index fd3f692db..019d752d7 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/ClassNameTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/ClassNameTest.java @@ -15,12 +15,8 @@ */ package io.micronaut.sourcegen.javapoet; -import com.google.testing.compile.CompilationRule; -import org.junit.Ignore; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mockito; import javax.lang.model.element.TypeElement; @@ -28,14 +24,12 @@ import java.util.Map; import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.Mockito.when; -@RunWith(JUnit4.class) +@ExtendWith(CompilationRule.class) public final class ClassNameTest { - @Rule public CompilationRule compilationRule = new CompilationRule(); - @Test public void bestGuessForString_simpleClass() { assertThat(ClassName.bestGuess(String.class.getName())) .isEqualTo(ClassName.get("java.lang", "String")); @@ -104,7 +98,7 @@ static class $Outer { static class $Inner {} } - @Test public void classNameFromTypeElement() { + @Test public void classNameFromTypeElement(CompilationRule compilationRule) { Elements elements = compilationRule.getElements(); TypeElement object = elements.getTypeElement(Object.class.getCanonicalName()); assertThat(ClassName.get(object).toString()).isEqualTo("java.lang.Object"); @@ -118,8 +112,7 @@ static class $Inner {} * Buck builds with "source-based ABI generation" and those builds don't support * {@link TypeElement#getKind()}. Test to confirm that we don't use that API. */ - @Ignore("getKind NPE") - @Test public void classNameFromTypeElementDoesntUseGetKind() { + @Test public void classNameFromTypeElementDoesntUseGetKind(CompilationRule compilationRule) { Elements elements = compilationRule.getElements(); TypeElement object = elements.getTypeElement(Object.class.getCanonicalName()); assertThat(ClassName.get(preventGetKind(object)).toString()) diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/CodeBlockTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/CodeBlockTest.java index 5492faf4e..64247408a 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/CodeBlockTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/CodeBlockTest.java @@ -15,7 +15,7 @@ */ package io.micronaut.sourcegen.javapoet; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -25,7 +25,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; public final class CodeBlockTest { @Test public void equalsAndHashCode() { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/CodeWriterTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/CodeWriterTest.java index 566e806bf..3c90e9c0c 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/CodeWriterTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/CodeWriterTest.java @@ -1,6 +1,6 @@ package io.micronaut.sourcegen.javapoet; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/CompilationRule.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/CompilationRule.java new file mode 100644 index 000000000..f631bd236 --- /dev/null +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/CompilationRule.java @@ -0,0 +1,158 @@ +package io.micronaut.sourcegen.javapoet; + +import static com.google.common.base.Preconditions.checkState; +import static com.google.testing.compile.Compilation.Status.SUCCESS; +import static com.google.testing.compile.Compiler.javac; + +import com.google.common.collect.ImmutableSet; +import com.google.testing.compile.Compilation; +import com.google.testing.compile.JavaFileObjects; +import java.util.Set; +import javax.annotation.processing.AbstractProcessor; +import javax.annotation.processing.ProcessingEnvironment; +import javax.annotation.processing.RoundEnvironment; +import javax.lang.model.SourceVersion; +import javax.lang.model.element.TypeElement; +import javax.lang.model.util.Elements; +import javax.lang.model.util.Types; +import javax.tools.JavaFileObject; +import org.junit.jupiter.api.extension.AfterEachCallback; +import org.junit.jupiter.api.extension.BeforeEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.api.extension.InvocationInterceptor; +import org.junit.jupiter.api.extension.ParameterContext; +import org.junit.jupiter.api.extension.ParameterResolver; +import org.junit.jupiter.api.extension.ReflectiveInvocationContext; + +/** + * A JUnit 5 extension that executes tests such that instances of {@link Elements} and + * {@link Types} are available during execution. + * + *

To use this extension in a test, add the following to your test class:

+ * + *
{@code
+ * @ExtendWith(CompilationRule.class)
+ * class MyTest {
+ *
+ *   @Test
+ *   void usesElements(CompilationRule compilation) {
+ *     Elements elements = compilation.getElements();
+ *     Types types = compilation.getTypes();
+ *     // ...
+ *   }
+ * }
+ * }
+ */ +public final class CompilationRule implements BeforeEachCallback, + AfterEachCallback, InvocationInterceptor, ParameterResolver { + + private static final JavaFileObject DUMMY = + JavaFileObjects.forSourceLines("Dummy", "final class Dummy {}"); + + private Elements elements; + private Types types; + + @Override + public void beforeEach(ExtensionContext context) { + elements = null; + types = null; + } + + @Override + public void afterEach(ExtensionContext context) { + elements = null; + types = null; + } + + @Override + public void interceptTestMethod(Invocation invocation, + ReflectiveInvocationContext reflectiveContext, + ExtensionContext extensionContext) throws Throwable { + + EvaluatingProcessor evaluatingProcessor = new EvaluatingProcessor(invocation); + Compilation compilation = javac().withProcessors(evaluatingProcessor).compile(DUMMY); + checkState(compilation.status().equals(SUCCESS), compilation); + evaluatingProcessor.throwIfStatementThrew(); + } + + /** + * Returns the {@link Elements} instance associated with the current execution of the extension. + * + * @throws IllegalStateException if this method is invoked outside the execution of the + * extension. + */ + public Elements getElements() { + checkState(elements != null, "Not running within the rule"); + return elements; + } + + /** + * Returns the {@link Types} instance associated with the current execution of the extension. + * + * @throws IllegalStateException if this method is invoked outside the execution of the + * extension. + */ + public Types getTypes() { + checkState(types != null, "Not running within the rule"); + return types; + } + + @Override + public boolean supportsParameter(ParameterContext parameterContext, + ExtensionContext extensionContext) { + return parameterContext.getParameter().getType() == CompilationRule.class; + } + + @Override + public Object resolveParameter(ParameterContext parameterContext, + ExtensionContext extensionContext) { + return this; + } + + final class EvaluatingProcessor extends AbstractProcessor { + + private final Invocation invocation; + private Throwable thrown; + + EvaluatingProcessor(Invocation invocation) { + this.invocation = invocation; + } + + @Override + public SourceVersion getSupportedSourceVersion() { + return SourceVersion.latest(); + } + + @Override + public Set getSupportedAnnotationTypes() { + return ImmutableSet.of("*"); + } + + @Override + public synchronized void init(ProcessingEnvironment processingEnv) { + super.init(processingEnv); + elements = processingEnv.getElementUtils(); + types = processingEnv.getTypeUtils(); + } + + @Override + public boolean process(Set annotations, RoundEnvironment roundEnv) { + // just run the test on the last round after compilation is over + if (roundEnv.processingOver()) { + try { + invocation.proceed(); + } catch (Throwable e) { + thrown = e; + } + } + return false; + } + + /** Throws what the test invocation threw, if anything. */ + void throwIfStatementThrew() throws Throwable { + if (thrown != null) { + throw thrown; + } + } + } +} diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/FieldSpecTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/FieldSpecTest.java index 2ccbdcbb9..eaa84cddc 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/FieldSpecTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/FieldSpecTest.java @@ -15,12 +15,12 @@ */ package io.micronaut.sourcegen.javapoet; -import org.junit.Test; +import org.junit.jupiter.api.Test; import javax.lang.model.element.Modifier; import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; public class FieldSpecTest { @Test public void equalsAndHashCode() { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/FileReadingTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/FileReadingTest.java index d9d1d224b..66ddf46ac 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/FileReadingTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/FileReadingTest.java @@ -16,11 +16,7 @@ package io.micronaut.sourcegen.javapoet; import com.google.common.io.ByteStreams; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; import javax.lang.model.element.Modifier; import javax.tools.Diagnostic; @@ -34,6 +30,8 @@ import javax.tools.ToolProvider; import java.io.IOException; import java.net.URI; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Collections; import java.util.List; import java.util.Locale; @@ -42,12 +40,8 @@ import static com.google.common.truth.Truth.assertThat; import static java.nio.charset.StandardCharsets.UTF_8; -@RunWith(JUnit4.class) public class FileReadingTest { - // Used for storing compilation output. - @Rule public final TemporaryFolder temporaryFolder = new TemporaryFolder(); - @Test public void javaFileObjectUri() { TypeSpec type = TypeSpec.classBuilder("Test").build(); assertThat(JavaFile.builder("", type).build().toJavaFileObject().toUri()) @@ -103,8 +97,10 @@ public class FileReadingTest { DiagnosticCollector diagnosticCollector = new DiagnosticCollector<>(); StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnosticCollector, Locale.getDefault(), UTF_8); + + Path tempDir = Files.createTempDirectory("javafile-compile"); fileManager.setLocation(StandardLocation.CLASS_OUTPUT, - Collections.singleton(temporaryFolder.newFolder())); + Collections.singleton(tempDir.toFile())); CompilationTask task = compiler.getTask(null, fileManager, diagnosticCollector, diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/FileWritingTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/FileWritingTest.java index e68959afd..5456f6a55 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/FileWritingTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/FileWritingTest.java @@ -17,11 +17,7 @@ import com.google.common.jimfs.Configuration; import com.google.common.jimfs.Jimfs; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; import org.mockito.Mockito; import javax.lang.model.element.Element; @@ -31,16 +27,23 @@ import java.nio.file.FileSystem; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Date; import static com.google.common.truth.Truth.assertThat; import static java.nio.charset.StandardCharsets.UTF_8; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; -@RunWith(JUnit4.class) public final class FileWritingTest { // Used for testing java.io File behavior. - @Rule public final TemporaryFolder tmp = new TemporaryFolder(); + private Path tmp; + + Path getTmp() throws IOException { + if (this.tmp == null) { + this.tmp = Files.createTempDirectory("filewritingtest-"); + } + return this.tmp; + } // Used for testing java.nio.file Path behavior. private final FileSystem fs = Jimfs.newFileSystem(Configuration.unix()); @@ -66,7 +69,7 @@ public final class FileWritingTest { @Test public void fileNotDirectory() throws IOException { TypeSpec type = TypeSpec.classBuilder("Test").build(); JavaFile javaFile = JavaFile.builder("example", type).build(); - File file = new File(tmp.newFolder("foo"), "bar"); + File file = new File(Files.createTempDirectory(getTmp(), "foo").toFile(), "bar"); file.createNewFile(); try { javaFile.writeTo(file); @@ -87,9 +90,9 @@ public final class FileWritingTest { @Test public void fileDefaultPackage() throws IOException { TypeSpec type = TypeSpec.classBuilder("Test").build(); - JavaFile.builder("", type).build().writeTo(tmp.getRoot()); + JavaFile.builder("", type).build().writeTo(getTmp().toFile()); - File testFile = new File(tmp.getRoot(), "Test.java"); + File testFile = getTmp().resolve("Test.java").toFile(); assertThat(testFile.exists()).isTrue(); } @@ -117,11 +120,11 @@ public final class FileWritingTest { @Test public void fileNestedClasses() throws IOException { TypeSpec type = TypeSpec.classBuilder("Test").build(); - JavaFile.builder("foo", type).build().writeTo(tmp.getRoot()); - JavaFile.builder("foo.bar", type).build().writeTo(tmp.getRoot()); - JavaFile.builder("foo.bar.baz", type).build().writeTo(tmp.getRoot()); + JavaFile.builder("foo", type).build().writeTo(getTmp().toFile()); + JavaFile.builder("foo.bar", type).build().writeTo(getTmp().toFile()); + JavaFile.builder("foo.bar.baz", type).build().writeTo(getTmp().toFile()); - File fooDir = new File(tmp.getRoot(), "foo"); + File fooDir = getTmp().resolve("foo").toFile(); File fooFile = new File(fooDir, "Test.java"); File barDir = new File(fooDir, "bar"); File barFile = new File(barDir, "Test.java"); diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/JavaFileTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/JavaFileTest.java index 68c0399d5..73b582ea1 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/JavaFileTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/JavaFileTest.java @@ -15,12 +15,10 @@ */ package io.micronaut.sourcegen.javapoet; -import com.google.testing.compile.CompilationRule; -import org.junit.Ignore; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import io.micronaut.sourcegen.javapoet.CompilationRule; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import javax.lang.model.element.Modifier; import javax.lang.model.element.TypeElement; @@ -35,12 +33,10 @@ import static com.google.common.truth.Truth.assertThat; -@RunWith(JUnit4.class) +@ExtendWith(CompilationRule.class) public final class JavaFileTest { - @Rule public final CompilationRule compilation = new CompilationRule(); - - private TypeElement getElement(Class clazz) { + private TypeElement getElement(Class clazz, CompilationRule compilation) { return compilation.getElements().getTypeElement(clazz.getCanonicalName()); } @@ -149,7 +145,7 @@ private TypeElement getElement(Class clazz) { + "}\n"); } - @Ignore("addStaticImport doesn't support members with $L") + @Disabled("addStaticImport doesn't support members with $L") @Test public void importStaticDynamic() { JavaFile source = JavaFile.builder("com.squareup.tacos", TypeSpec.classBuilder("Taco") @@ -756,7 +752,7 @@ private TypeSpec importStaticTypeSpec(String name) { + "}\n"); } - @Test public void avoidClashesWithNestedClasses_viaTypeElement() { + @Test public void avoidClashesWithNestedClasses_viaTypeElement(CompilationRule compilation) { String source = JavaFile.builder("com.squareup.tacos", TypeSpec.classBuilder("Taco") // These two should get qualified @@ -766,7 +762,7 @@ private TypeSpec importStaticTypeSpec(String name) { .addField(ClassName.get("other", "NestedTypeC"), "nestedC") // This one shouldn't since we only look at nested types .addField(ClassName.get("other", "Foo"), "foo") - .avoidClashesWithNestedClasses(getElement(Foo.class)) + .avoidClashesWithNestedClasses(getElement(Foo.class, compilation)) .build()) .build() .toString(); @@ -877,9 +873,9 @@ public void avoidClashes_parentChild_superclass_type() { } @Test - public void avoidClashes_parentChild_superclass_typeMirror() { + public void avoidClashes_parentChild_superclass_typeMirror(CompilationRule compilation) { String source = JavaFile.builder("io.micronaut.sourcegen.javapoet", - childTypeBuilder().superclass(getElement(Parent.class).asType()).build()) + childTypeBuilder().superclass(getElement(Parent.class, compilation).asType()).build()) .build() .toString(); assertThat(source).isEqualTo("package io.micronaut.sourcegen.javapoet;\n" @@ -920,9 +916,9 @@ public void avoidClashes_parentChild_superinterface_type() { } @Test - public void avoidClashes_parentChild_superinterface_typeMirror() { + public void avoidClashes_parentChild_superinterface_typeMirror(CompilationRule compilation) { String source = JavaFile.builder("io.micronaut.sourcegen.javapoet", - childTypeBuilder().addSuperinterface(getElement(ParentInterface.class).asType()).build()) + childTypeBuilder().addSuperinterface(getElement(ParentInterface.class, compilation).asType()).build()) .build() .toString(); assertThat(source).isEqualTo("package io.micronaut.sourcegen.javapoet;\n" diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/LineWrapperTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/LineWrapperTest.java index dedd8078f..36d7de460 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/LineWrapperTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/LineWrapperTest.java @@ -15,13 +15,10 @@ */ package io.micronaut.sourcegen.javapoet; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; import static com.google.common.truth.Truth.assertThat; -@RunWith(JUnit4.class) public final class LineWrapperTest { @Test public void wrap() throws Exception { StringBuffer out = new StringBuffer(); diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/MethodSpecTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/MethodSpecTest.java index da2a5a761..a99cb64eb 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/MethodSpecTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/MethodSpecTest.java @@ -16,10 +16,11 @@ package io.micronaut.sourcegen.javapoet; import com.google.testing.compile.Compilation; -import com.google.testing.compile.CompilationRule; +import io.micronaut.sourcegen.javapoet.CompilationRule; import org.junit.Before; import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.Modifier; @@ -46,21 +47,21 @@ import static com.google.testing.compile.Compiler.javac; import static io.micronaut.sourcegen.javapoet.TestUtil.findFirst; import static javax.lang.model.util.ElementFilter.methodsIn; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; +@ExtendWith(CompilationRule.class) public final class MethodSpecTest { - @Rule public final CompilationRule compilation = new CompilationRule(); - private Elements elements; - private Types types; + private Elements getElements(CompilationRule compilation) { + return compilation.getElements(); + } - @Before public void setUp() { - elements = compilation.getElements(); - types = compilation.getTypes(); - } + private Types getTypes(CompilationRule compilation) { + return compilation.getTypes(); + } - private TypeElement getElement(Class clazz) { - return elements.getTypeElement(clazz.getCanonicalName()); + private TypeElement getElement(Class clazz, CompilationRule compilation) { + return getElements(compilation).getTypeElement(clazz.getCanonicalName()); } @Test public void nullAnnotationsAddition() { @@ -145,8 +146,8 @@ static void staticMethod() { } } - @Test public void overrideEverything() { - TypeElement classElement = getElement(Everything.class); + @Test public void overrideEverything(CompilationRule compilation) { + TypeElement classElement = getElement(Everything.class, compilation); ExecutableElement methodElement = getOnlyElement(methodsIn(classElement.getEnclosedElements())); MethodSpec method = MethodSpec.overriding(methodElement).build(); assertThat(method.toString()).isEqualTo("@java.lang.Override\n" @@ -156,8 +157,8 @@ static void staticMethod() { + "}\n"); } - @Test public void overrideGenerics() { - TypeElement classElement = getElement(Generics.class); + @Test public void overrideGenerics(CompilationRule compilation) { + TypeElement classElement = getElement(Generics.class, compilation); ExecutableElement methodElement = getOnlyElement(methodsIn(classElement.getEnclosedElements())); MethodSpec method = MethodSpec.overriding(methodElement) .addStatement("return null") @@ -168,8 +169,8 @@ static void staticMethod() { + "}\n"); } - @Test public void overrideDoesNotCopyOverrideAnnotation() { - TypeElement classElement = getElement(HasAnnotation.class); + @Test public void overrideDoesNotCopyOverrideAnnotation(CompilationRule compilation) { + TypeElement classElement = getElement(HasAnnotation.class, compilation); ExecutableElement exec = getOnlyElement(methodsIn(classElement.getEnclosedElements())); MethodSpec method = MethodSpec.overriding(exec).build(); assertThat(method.toString()).isEqualTo("@java.lang.Override\n" @@ -177,41 +178,41 @@ static void staticMethod() { + "}\n"); } - @Test public void overrideDoesNotCopyDefaultModifier() { - TypeElement classElement = getElement(ExtendsIterableWithDefaultMethods.class); + @Test public void overrideDoesNotCopyDefaultModifier(CompilationRule compilation) { + TypeElement classElement = getElement(ExtendsIterableWithDefaultMethods.class, compilation); DeclaredType classType = (DeclaredType) classElement.asType(); - List methods = methodsIn(elements.getAllMembers(classElement)); + List methods = methodsIn(getElements(compilation).getAllMembers(classElement)); ExecutableElement exec = findFirst(methods, "spliterator"); - MethodSpec method = MethodSpec.overriding(exec, classType, types).build(); + MethodSpec method = MethodSpec.overriding(exec, classType, getTypes(compilation)).build(); assertThat(method.toString()).isEqualTo("@java.lang.Override\n" + "public java.util.Spliterator spliterator() {\n" + "}\n"); } - @Test public void overrideExtendsOthersWorksWithActualTypeParameters() { - TypeElement classElement = getElement(ExtendsOthers.class); + @Test public void overrideExtendsOthersWorksWithActualTypeParameters(CompilationRule compilation) { + TypeElement classElement = getElement(ExtendsOthers.class, compilation); DeclaredType classType = (DeclaredType) classElement.asType(); - List methods = methodsIn(elements.getAllMembers(classElement)); + List methods = methodsIn(getElements(compilation).getAllMembers(classElement)); ExecutableElement exec = findFirst(methods, "call"); - MethodSpec method = MethodSpec.overriding(exec, classType, types).build(); + MethodSpec method = MethodSpec.overriding(exec, classType, getTypes(compilation)).build(); assertThat(method.toString()).isEqualTo("@java.lang.Override\n" + "public java.lang.Integer call() throws java.lang.Exception {\n" + "}\n"); exec = findFirst(methods, "compareTo"); - method = MethodSpec.overriding(exec, classType, types).build(); + method = MethodSpec.overriding(exec, classType, getTypes(compilation)).build(); assertThat(method.toString()).isEqualTo("@java.lang.Override\n" + "public int compareTo(" + ExtendsOthers.class.getCanonicalName() + " arg0) {\n" + "}\n"); exec = findFirst(methods, "fail"); - method = MethodSpec.overriding(exec, classType, types).build(); + method = MethodSpec.overriding(exec, classType, getTypes(compilation)).build(); assertThat(method.toString()).isEqualTo("@java.lang.Override\n" + "public void fail() throws java.lang.IllegalStateException {\n" + "}\n"); } - @Test public void overrideFinalClassMethod() { - TypeElement classElement = getElement(FinalClass.class); - List methods = methodsIn(elements.getAllMembers(classElement)); + @Test public void overrideFinalClassMethod(CompilationRule compilation) { + TypeElement classElement = getElement(FinalClass.class, compilation); + List methods = methodsIn(getElements(compilation).getAllMembers(classElement)); try { MethodSpec.overriding(findFirst(methods, "method")); fail(); @@ -221,9 +222,9 @@ static void staticMethod() { } } - @Test public void overrideInvalidModifiers() { - TypeElement classElement = getElement(InvalidOverrideMethods.class); - List methods = methodsIn(elements.getAllMembers(classElement)); + @Test public void overrideInvalidModifiers(CompilationRule compilation) { + TypeElement classElement = getElement(InvalidOverrideMethods.class, compilation); + List methods = methodsIn(getElements(compilation).getAllMembers(classElement)); try { MethodSpec.overriding(findFirst(methods, "finalMethod")); fail(); @@ -251,8 +252,8 @@ abstract static class AbstractClassWithPrivateAnnotation { abstract void foo(@PrivateAnnotation final String bar); } - @Test public void overrideDoesNotCopyParameterAnnotations() { - TypeElement abstractTypeElement = getElement(AbstractClassWithPrivateAnnotation.class); + @Test public void overrideDoesNotCopyParameterAnnotations(CompilationRule compilation) { + TypeElement abstractTypeElement = getElement(AbstractClassWithPrivateAnnotation.class, compilation); ExecutableElement fooElement = ElementFilter.methodsIn(abstractTypeElement.getEnclosedElements()).get(0); ClassName implClassName = ClassName.get("io.micronaut.sourcegen.javapoet", "Impl"); TypeSpec type = TypeSpec.classBuilder(implClassName) @@ -260,11 +261,11 @@ abstract static class AbstractClassWithPrivateAnnotation { .addMethod(MethodSpec.overriding(fooElement).build()) .build(); JavaFileObject jfo = JavaFile.builder(implClassName.packageName, type).build().toJavaFileObject(); - Compilation compilation = javac().compile(jfo); - assertThat(compilation).succeeded(); + Compilation comp = javac().compile(jfo); + assertThat(comp).succeeded(); } - @Test public void equalsAndHashCode() { + @Test public void equalsAndHashCode(CompilationRule compilation) { MethodSpec a = MethodSpec.constructorBuilder().build(); MethodSpec b = MethodSpec.constructorBuilder().build(); assertThat(a.equals(b)).isTrue(); @@ -273,7 +274,7 @@ abstract static class AbstractClassWithPrivateAnnotation { b = MethodSpec.methodBuilder("taco").build(); assertThat(a.equals(b)).isTrue(); assertThat(a.hashCode()).isEqualTo(b.hashCode()); - TypeElement classElement = getElement(Everything.class); + TypeElement classElement = getElement(Everything.class, compilation); ExecutableElement methodElement = getOnlyElement(methodsIn(classElement.getEnclosedElements())); a = MethodSpec.overriding(methodElement).build(); b = MethodSpec.overriding(methodElement).build(); diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/NameAllocatorTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/NameAllocatorTest.java index be1e204c9..dd09efef3 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/NameAllocatorTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/NameAllocatorTest.java @@ -15,10 +15,10 @@ */ package io.micronaut.sourcegen.javapoet; -import org.junit.Test; +import org.junit.jupiter.api.Test; import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; public final class NameAllocatorTest { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/ParameterSpecTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/ParameterSpecTest.java index 52d5e2c1e..2c7a36bfe 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/ParameterSpecTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/ParameterSpecTest.java @@ -15,10 +15,8 @@ */ package io.micronaut.sourcegen.javapoet; -import com.google.testing.compile.CompilationRule; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import javax.annotation.Nullable; import javax.lang.model.element.ExecutableElement; @@ -33,19 +31,16 @@ import static io.micronaut.sourcegen.javapoet.TestUtil.findFirst; import static javax.lang.model.util.ElementFilter.fieldsIn; import static javax.lang.model.util.ElementFilter.methodsIn; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; +@ExtendWith(CompilationRule.class) public class ParameterSpecTest { - @Rule public final CompilationRule compilation = new CompilationRule(); - - private Elements elements; - - @Before public void setUp() { - elements = compilation.getElements(); - } + private Elements getElements(CompilationRule compilation) { + return compilation.getElements(); + } - private TypeElement getElement(Class clazz) { - return elements.getTypeElement(clazz.getCanonicalName()); + private TypeElement getElement(Class clazz, CompilationRule compilation) { + return getElements(compilation).getTypeElement(clazz.getCanonicalName()); } @Test public void equalsAndHashCode() { @@ -94,9 +89,9 @@ final class VariableElementFieldClass { String name; } - @Test public void fieldVariableElement() { - TypeElement classElement = getElement(VariableElementFieldClass.class); - List methods = fieldsIn(elements.getAllMembers(classElement)); + @Test public void fieldVariableElement(CompilationRule compilation) { + TypeElement classElement = getElement(VariableElementFieldClass.class, compilation); + List methods = fieldsIn(getElements(compilation).getAllMembers(classElement)); VariableElement element = findFirst(methods, "name"); try { @@ -112,9 +107,9 @@ public void foo(@Nullable final String bar) { } } - @Test public void parameterVariableElement() { - TypeElement classElement = getElement(VariableElementParameterClass.class); - List methods = methodsIn(elements.getAllMembers(classElement)); + @Test public void parameterVariableElement(CompilationRule compilation) { + TypeElement classElement = getElement(VariableElementParameterClass.class, compilation); + List methods = methodsIn(getElements(compilation).getAllMembers(classElement)); ExecutableElement element = findFirst(methods, "foo"); VariableElement parameterElement = element.getParameters().get(0); diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/StaticInitializationBlockTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/StaticInitializationBlockTest.java index 4c1f2cc0c..a1fe3e963 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/StaticInitializationBlockTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/StaticInitializationBlockTest.java @@ -2,13 +2,13 @@ import io.micronaut.sourcegen.javapoet.write.AbstractWriteTest; import io.micronaut.sourcegen.model.*; -import org.junit.Test; +import org.junit.jupiter.api.Test; import javax.lang.model.element.Modifier; import java.io.IOException; import java.util.List; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class StaticInitializationBlockTest extends AbstractWriteTest { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/TypeNameTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/TypeNameTest.java index b5ec52929..3411ea576 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/TypeNameTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/TypeNameTest.java @@ -15,7 +15,7 @@ */ package io.micronaut.sourcegen.javapoet; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.io.Serializable; import java.lang.reflect.Method; @@ -25,7 +25,7 @@ import java.util.UUID; import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.Assert.assertNotEquals; public class TypeNameTest { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/TypeSpecTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/TypeSpecTest.java index c32b05280..00d394dfa 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/TypeSpecTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/TypeSpecTest.java @@ -16,17 +16,15 @@ package io.micronaut.sourcegen.javapoet; import com.google.common.collect.ImmutableMap; -import com.google.testing.compile.CompilationRule; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mockito; import javax.lang.model.element.Element; import javax.lang.model.element.Modifier; import javax.lang.model.element.TypeElement; import javax.lang.model.type.TypeMirror; +import javax.lang.model.util.Elements; import java.io.File; import java.io.IOException; import java.io.Serializable; @@ -44,17 +42,15 @@ import java.util.concurrent.Callable; import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; -@RunWith(JUnit4.class) +@ExtendWith(CompilationRule.class) public final class TypeSpecTest { private final String tacosPackage = "com.squareup.tacos"; private static final String donutsPackage = "com.squareup.donuts"; - @Rule public final CompilationRule compilation = new CompilationRule(); - - private TypeElement getElement(Class clazz) { + private TypeElement getElement(Class clazz, CompilationRule compilation) { return compilation.getElements().getTypeElement(clazz.getCanonicalName()); } @@ -2263,13 +2259,13 @@ private String toString(TypeSpec typeSpec) { assertThat(CodeBlock.of("$T", typeName).toString()).isEqualTo("java.lang.String"); } - @Test public void typeFromTypeMirror() { - TypeMirror mirror = getElement(String.class).asType(); + @Test public void typeFromTypeMirror(CompilationRule compilation) { + TypeMirror mirror = getElement(String.class, compilation).asType(); assertThat(CodeBlock.of("$T", mirror).toString()).isEqualTo("java.lang.String"); } - @Test public void typeFromTypeElement() { - TypeElement element = getElement(String.class); + @Test public void typeFromTypeElement(CompilationRule compilation) { + TypeElement element = getElement(String.class, compilation); assertThat(CodeBlock.of("$T", element).toString()).isEqualTo("java.lang.String"); } @@ -2277,7 +2273,7 @@ private String toString(TypeSpec typeSpec) { assertThat(CodeBlock.of("$T", String.class).toString()).isEqualTo("java.lang.String"); } - @Test public void typeFromUnsupportedType() { + @Test public void typeFromUnsupportedType(CompilationRule compilation) { try { CodeBlock.builder().add("$T", "java.lang.String"); fail(); @@ -2412,6 +2408,7 @@ private String toString(TypeSpec typeSpec) { .addStatement("foo = $S", "FOO") .build()) .build(); + assertThat(toString(taco)).isEqualTo("package com.squareup.tacos;\n" + "\n" + "import java.lang.Override;\n" @@ -2440,9 +2437,9 @@ private String toString(TypeSpec typeSpec) { + "}\n"); } - @Test public void initializersToBuilder() { + @Test public void initializersToBuilder(CompilationRule compilation) { // Tests if toBuilder() contains correct static and instance initializers - Element originatingElement = getElement(TypeSpecTest.class); + Element originatingElement = getElement(TypeSpecTest.class, compilation); TypeSpec taco = TypeSpec.classBuilder("Taco") .addField(String.class, "foo", Modifier.PRIVATE) .addField(String.class, "FOO", Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL) diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/TypesTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/TypesTest.java index d68f94324..0b75bc038 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/TypesTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/TypesTest.java @@ -15,25 +15,21 @@ */ package io.micronaut.sourcegen.javapoet; -import com.google.testing.compile.CompilationRule; -import org.junit.Rule; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.extension.ExtendWith; import javax.lang.model.util.Elements; import javax.lang.model.util.Types; -@RunWith(JUnit4.class) +@ExtendWith(CompilationRule.class) public final class TypesTest extends AbstractTypesTest { - @Rule public final CompilationRule compilation = new CompilationRule(); @Override - protected Elements getElements() { + protected Elements getElements(CompilationRule compilation) { return compilation.getElements(); } @Override - protected Types getTypes() { + protected Types getTypes(CompilationRule compilation) { return compilation.getTypes(); } } diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/UtilTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/UtilTest.java index bc7363d42..55cd02369 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/UtilTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/UtilTest.java @@ -15,9 +15,9 @@ */ package io.micronaut.sourcegen.javapoet; -import org.junit.Test; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class UtilTest { @Test public void characterLiteral() { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/AbstractWriteTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/AbstractWriteTest.java index 4dc8cc320..0a4c6d53a 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/AbstractWriteTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/AbstractWriteTest.java @@ -16,7 +16,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; public abstract class AbstractWriteTest { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/AnnotationClassWriteTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/AnnotationClassWriteTest.java index df0bf5c63..6512c7f89 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/AnnotationClassWriteTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/AnnotationClassWriteTest.java @@ -4,15 +4,15 @@ import io.micronaut.sourcegen.custom.visitor.GenerateAnnotationClassVisitor; import io.micronaut.sourcegen.model.AnnotationObjectDef; import io.micronaut.sourcegen.model.ObjectDef; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.io.StringWriter; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; public class AnnotationClassWriteTest { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/ConstructorWriteTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/ConstructorWriteTest.java index bd1cc0a65..257d374c9 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/ConstructorWriteTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/ConstructorWriteTest.java @@ -4,13 +4,13 @@ import io.micronaut.sourcegen.model.ParameterDef; import io.micronaut.sourcegen.model.PropertyDef; import io.micronaut.sourcegen.model.TypeDef; -import org.junit.Test; +import org.junit.jupiter.api.Test; import javax.lang.model.element.Modifier; import java.io.IOException; import java.util.List; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class ConstructorWriteTest extends AbstractWriteTest { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/EnumWriteTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/EnumWriteTest.java index b3d450d80..ac7b11875 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/EnumWriteTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/EnumWriteTest.java @@ -9,7 +9,7 @@ import io.micronaut.sourcegen.model.PropertyDef; import io.micronaut.sourcegen.model.StatementDef; import io.micronaut.sourcegen.model.TypeDef; -import org.junit.Test; +import org.junit.jupiter.api.Test; import javax.lang.model.element.Modifier; import java.io.IOException; @@ -17,9 +17,9 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.Assert.assertThrows; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; public class EnumWriteTest { @Test diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/ExpressionWriteTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/ExpressionWriteTest.java index 7f3380439..5ed40db5d 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/ExpressionWriteTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/ExpressionWriteTest.java @@ -8,7 +8,7 @@ import io.micronaut.sourcegen.model.MethodDef; import io.micronaut.sourcegen.model.TypeDef; import io.micronaut.sourcegen.model.VariableDef; -import org.junit.Test; +import org.junit.jupiter.api.Test; import javax.lang.model.element.Modifier; import java.io.IOException; @@ -32,7 +32,7 @@ import static io.micronaut.sourcegen.model.ExpressionDef.MathBinaryOperation.OpType.MULTIPLICATION; import static io.micronaut.sourcegen.model.ExpressionDef.MathBinaryOperation.OpType.SUBTRACTION; import static io.micronaut.sourcegen.model.ExpressionDef.MathUnaryOperation.OpType.NEGATE; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class ExpressionWriteTest extends AbstractWriteTest { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/FieldDefTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/FieldDefTest.java index 1237dca81..0415358a0 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/FieldDefTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/FieldDefTest.java @@ -7,14 +7,14 @@ import io.micronaut.sourcegen.model.PropertyDef; import io.micronaut.sourcegen.model.RecordDef; import io.micronaut.sourcegen.model.TypeDef; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.io.StringWriter; import java.util.List; import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class FieldDefTest extends AbstractWriteTest { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/InnerTypesTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/InnerTypesTest.java index 44904d57f..89084e9a4 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/InnerTypesTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/InnerTypesTest.java @@ -8,12 +8,12 @@ import io.micronaut.sourcegen.model.PropertyDef; import io.micronaut.sourcegen.model.RecordDef; import io.micronaut.sourcegen.model.TypeDef; -import org.junit.Test; +import org.junit.jupiter.api.Test; import javax.lang.model.element.Modifier; import java.io.IOException; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class InnerTypesTest extends AbstractWriteTest { /** ----------------------------------------------------------- diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/RecordWriteTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/RecordWriteTest.java index 5de955210..673d77c1f 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/RecordWriteTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/RecordWriteTest.java @@ -5,15 +5,15 @@ import io.micronaut.sourcegen.model.ClassTypeDef; import io.micronaut.sourcegen.model.PropertyDef; import io.micronaut.sourcegen.model.RecordDef; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.io.StringWriter; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; public class RecordWriteTest { diff --git a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/TypeDefTest.java b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/TypeDefTest.java index c1ae0b098..437b66868 100644 --- a/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/TypeDefTest.java +++ b/sourcegen-generator-java/src/test/java/io/micronaut/sourcegen/javapoet/write/TypeDefTest.java @@ -4,14 +4,14 @@ import io.micronaut.inject.ast.ClassElement; import io.micronaut.sourcegen.model.ClassTypeDef; import io.micronaut.sourcegen.model.FieldDef; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class TypeDefTest extends AbstractWriteTest { diff --git a/sourcegen-generator-kotlin/build.gradle.kts b/sourcegen-generator-kotlin/build.gradle.kts index 5a6ba0600..1f27039d1 100644 --- a/sourcegen-generator-kotlin/build.gradle.kts +++ b/sourcegen-generator-kotlin/build.gradle.kts @@ -16,3 +16,8 @@ dependencies { tasks.test { develocity.predictiveTestSelection.enabled = false } +kotlin { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 + } +} diff --git a/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/AnnotationTest.kt b/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/AnnotationTest.kt index da04de8ad..859a6829c 100644 --- a/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/AnnotationTest.kt +++ b/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/AnnotationTest.kt @@ -2,8 +2,8 @@ package io.micronaut.sourcegen import io.micronaut.core.annotation.Introspected import io.micronaut.sourcegen.model.* -import org.junit.Assert -import org.junit.Test +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test import java.io.IOException import java.io.StringWriter @@ -22,7 +22,7 @@ class AnnotationTest { @Introspected public class SimpleClass """.trimIndent() - Assert.assertEquals(expected.trim(), result.trim()) + Assertions.assertEquals(expected.trim(), result.trim()) } @Test @@ -44,7 +44,7 @@ class AnnotationTest { public var str: String } """.trimIndent() - Assert.assertEquals(expected.trim(), result.trim()) + Assertions.assertEquals(expected.trim(), result.trim()) } @Test @@ -62,7 +62,7 @@ class AnnotationTest { 3]) public class SimpleClass """.trimIndent() - Assert.assertEquals(expected.trim(), result.trim()) + Assertions.assertEquals(expected.trim(), result.trim()) } @Test @@ -80,7 +80,7 @@ class AnnotationTest { com.fasterxml.jackson.`annotation`.JsonSubTypes.Type(value = String::class, name = "Fish")]) public class SimpleClass """.trimIndent() - Assert.assertEquals(expected.trim(), result.trim()) + Assertions.assertEquals(expected.trim(), result.trim()) } private fun getSimpleAnn(): AnnotationDef { diff --git a/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/EnumWriteTest.kt b/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/EnumWriteTest.kt index 7d9c75dde..5e4b4e295 100644 --- a/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/EnumWriteTest.kt +++ b/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/EnumWriteTest.kt @@ -1,8 +1,8 @@ package io.micronaut.sourcegen import io.micronaut.sourcegen.model.* -import org.junit.Assert -import org.junit.Test +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test import java.io.IOException import java.io.StringWriter import java.util.regex.Pattern @@ -29,15 +29,15 @@ class EnumWriteTest { } """.trimIndent() - Assert.assertEquals(expected.trim(), result.trim()) + Assertions.assertEquals(expected.trim(), result.trim()) } @Test fun testExceptions() { - Assert.assertThrows( + Assertions.assertThrows( IllegalArgumentException::class.java ) { EnumDef.builder("test.Status").addEnumConstant("active").build() } - Assert.assertThrows( + Assertions.assertThrows( IllegalArgumentException::class.java ) { EnumDef.builder("test.Status").addEnumConstant("9in progress", ExpressionDef.constant(1)).build() } } @@ -72,7 +72,7 @@ class EnumWriteTest { } } """.trimIndent() - Assert.assertEquals(expected.trim(), result.trim()) + Assertions.assertEquals(expected.trim(), result.trim()) } @Test @@ -110,7 +110,7 @@ class EnumWriteTest { } } """.trimIndent() - Assert.assertEquals(expected.trim(), result.trim()) + Assertions.assertEquals(expected.trim(), result.trim()) } @Test @@ -143,7 +143,7 @@ class EnumWriteTest { ; } """.trimIndent() - Assert.assertEquals(expected.trim(), result.trim()) + Assertions.assertEquals(expected.trim(), result.trim()) } @Test @@ -182,7 +182,7 @@ class EnumWriteTest { } } """.trimIndent() - Assert.assertEquals(expected.trim(), result.trim()) + Assertions.assertEquals(expected.trim(), result.trim()) } @@ -202,7 +202,7 @@ class EnumWriteTest { ) val matcher = ENUM_REGEX.matcher(result) if (!matcher.matches()) { - Assert.fail("Expected enum to match regex: \n$ENUM_REGEX\nbut is: \n$result") + throw RuntimeException("Expected enum to match regex: \n$ENUM_REGEX\nbut is: \n$result") } return matcher.group(0) } diff --git a/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/InnerTypesWriteTest.kt b/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/InnerTypesWriteTest.kt index 12f2ddbb8..edfe74735 100644 --- a/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/InnerTypesWriteTest.kt +++ b/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/InnerTypesWriteTest.kt @@ -5,8 +5,8 @@ import io.micronaut.sourcegen.model.ClassDef.ClassDefBuilder import io.micronaut.sourcegen.model.EnumDef.EnumDefBuilder import io.micronaut.sourcegen.model.InterfaceDef.InterfaceDefBuilder import io.micronaut.sourcegen.model.RecordDef.RecordDefBuilder -import org.junit.Assert -import org.junit.Test +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test import java.io.IOException import java.io.StringWriter import java.util.regex.Pattern @@ -38,7 +38,7 @@ class InnerTypesWriteTest { ) val matcher = CLASS_REGEX.matcher(result) if (!matcher.matches()) { - Assert.fail("Expected class to match regex: \n$CLASS_REGEX\nbut is: \n$result") + throw RuntimeException("Expected class to match regex: \n$CLASS_REGEX\nbut is: \n$result") } return matcher.group(0).trim { it <= ' ' } } @@ -99,7 +99,7 @@ class InnerTypesWriteTest { val classBuilder: EnumDefBuilder = getEnumDefBuilderWith(enumDef) val actual = writeClass(classBuilder.build(), "enum") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -126,7 +126,7 @@ class InnerTypesWriteTest { val classBuilder: EnumDefBuilder = getEnumDefBuilderWith(recordBuilder.build()) val actual = writeClass(classBuilder.build(), "enum") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -147,7 +147,7 @@ class InnerTypesWriteTest { val classBuilder: EnumDefBuilder = getEnumDefBuilderWith(innerClassBuilder.build()) val actual = writeClass(classBuilder.build(), "enum") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -168,7 +168,7 @@ class InnerTypesWriteTest { val classBuilder: EnumDefBuilder = getEnumDefBuilderWith(interfaceBuilder.build()) val actual = writeClass(classBuilder.build(), "enum") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } /** ----------------------------------------------------------- @@ -193,7 +193,7 @@ class InnerTypesWriteTest { val classBuilder: ClassDefBuilder = getClassDefBuilderWith(enumDef) val actual = writeClass(classBuilder.build(), "class") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -216,7 +216,7 @@ class InnerTypesWriteTest { val classBuilder: ClassDefBuilder = getClassDefBuilderWith(recordBuilder.build()) val actual = writeClass(classBuilder.build(), "class") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -233,7 +233,7 @@ class InnerTypesWriteTest { val classBuilder: ClassDefBuilder = getClassDefBuilderWith(innerClassBuilder.build()) val actual = writeClass(classBuilder.build(), "class") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -264,7 +264,7 @@ class InnerTypesWriteTest { val classBuilder: ClassDefBuilder = getClassDefBuilderWith(innerClassBuilder.build()) val actual = writeClass(classBuilder.build(), "class") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -281,7 +281,7 @@ class InnerTypesWriteTest { val classBuilder: ClassDefBuilder = getClassDefBuilderWith(interfaceBuilder.build()) val actual = writeClass(classBuilder.build(), "class") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } /** ----------------------------------------------------------- @@ -307,7 +307,7 @@ class InnerTypesWriteTest { val classBuilder: RecordDefBuilder = getRecordDefBuilderWith(enumDef) val actual = writeClass(classBuilder.build(), "record") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -330,7 +330,7 @@ class InnerTypesWriteTest { val classBuilder: RecordDefBuilder = getRecordDefBuilderWith(recordBuilder.build()) val actual = writeClass(classBuilder.build(), "record") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -347,7 +347,7 @@ class InnerTypesWriteTest { val classBuilder: RecordDefBuilder = getRecordDefBuilderWith(innerClassBuilder.build()) val actual = writeClass(classBuilder.build(), "record") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -364,7 +364,7 @@ class InnerTypesWriteTest { val classBuilder: RecordDefBuilder = getRecordDefBuilderWith(interfaceBuilder.build()) val actual = writeClass(classBuilder.build(), "record") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } /** ----------------------------------------------------------- @@ -390,7 +390,7 @@ class InnerTypesWriteTest { val classBuilder: InterfaceDefBuilder = getInterfaceDefBuilderWith(enumDef) val actual = writeClass(classBuilder.build(), "interface") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -413,7 +413,7 @@ class InnerTypesWriteTest { val classBuilder: InterfaceDefBuilder = getInterfaceDefBuilderWith(recordBuilder.build()) val actual = writeClass(classBuilder.build(), "interface") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -430,7 +430,7 @@ class InnerTypesWriteTest { val classBuilder: InterfaceDefBuilder = getInterfaceDefBuilderWith(innerClassBuilder.build()) val actual = writeClass(classBuilder.build(), "interface") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -447,7 +447,7 @@ class InnerTypesWriteTest { val classBuilder: InterfaceDefBuilder = getInterfaceDefBuilderWith(interfaceBuilder.build()) val actual = writeClass(classBuilder.build(), "interface") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } } diff --git a/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/SuperCallTest.kt b/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/SuperCallTest.kt index 2040da829..3ceac854a 100644 --- a/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/SuperCallTest.kt +++ b/sourcegen-generator-kotlin/src/test/kotlin/io/micronaut/sourcegen/SuperCallTest.kt @@ -1,8 +1,8 @@ package io.micronaut.sourcegen import io.micronaut.sourcegen.model.* -import org.junit.Assert -import org.junit.Test +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test import java.io.IOException import java.io.StringWriter import java.util.regex.Pattern @@ -52,7 +52,7 @@ class SuperCallTest { .addModifiers(Modifier.PUBLIC) .addMethod(method) val actual = writeClass(classBuilder.build(), "class") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -80,7 +80,7 @@ class SuperCallTest { .superclass(specificParentType) .addMethod(superMethod) val actual = writeClass(classBuilder.build(), "class") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -101,7 +101,7 @@ class SuperCallTest { .superclass(parentType) .addMethod(constructor) val actual = writeClass(classBuilder.build(), "class") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } @Test @@ -135,6 +135,6 @@ class SuperCallTest { .superclass(parentType) .addMethod(childConstructor) val actual = writeClass(classBuilder.build(), "class") - Assert.assertEquals(expectedString.trim(), actual) + Assertions.assertEquals(expectedString.trim(), actual) } } diff --git a/test-suite-bytecode/src/test/java/io/micronaut/sourcegen/example/MyEnum1Test.java b/test-suite-bytecode/src/test/java/io/micronaut/sourcegen/example/MyEnum1Test.java index e53d6eaa0..f4d53d8a2 100644 --- a/test-suite-bytecode/src/test/java/io/micronaut/sourcegen/example/MyEnum1Test.java +++ b/test-suite-bytecode/src/test/java/io/micronaut/sourcegen/example/MyEnum1Test.java @@ -17,7 +17,7 @@ import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; class MyEnum1Test { @Test diff --git a/test-suite-bytecode/src/test/java/io/micronaut/sourcegen/example/MyEnum2Test.java b/test-suite-bytecode/src/test/java/io/micronaut/sourcegen/example/MyEnum2Test.java index c5a07a0ac..f1eae27be 100644 --- a/test-suite-bytecode/src/test/java/io/micronaut/sourcegen/example/MyEnum2Test.java +++ b/test-suite-bytecode/src/test/java/io/micronaut/sourcegen/example/MyEnum2Test.java @@ -17,7 +17,7 @@ import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; class MyEnum2Test { diff --git a/test-suite-kotlin/build.gradle.kts b/test-suite-kotlin/build.gradle.kts index f43114c0d..5f311342b 100644 --- a/test-suite-kotlin/build.gradle.kts +++ b/test-suite-kotlin/build.gradle.kts @@ -22,7 +22,10 @@ dependencies { testRuntimeOnly(mnTest.junit.jupiter.engine) } - -//kotlin { +kotlin { // kotlinDaemonJvmArgs = listOf("-Xdebug","-Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y") -//} + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 + } +} +