From b88f54b31aa8573df39c5f3c954e96bba5d711e2 Mon Sep 17 00:00:00 2001 From: Andrey Zinovyev Date: Thu, 22 Apr 2021 12:54:34 +0300 Subject: [PATCH] [lombok] Add maven plugin integration test with kapt --- .../src/it/test-lombok-simple/verify.bsh | 8 +- .../src/it/test-lombok-with-kapt/pom.xml | 156 ++++++++++++++++++ .../src/main/java/lab2/JavaUsage.java | 16 ++ .../src/main/java/lab2/ManualPojo.java | 21 +++ .../src/main/java/lab2/SomeData.java | 10 ++ .../src/main/java/lab2/SomePojo.java | 17 ++ .../src/main/kotlin/lab2/KotlinUsage.kt | 29 ++++ .../src/main/kotlin/lab2/test.kt | 24 +++ .../src/it/test-lombok-with-kapt/verify.bsh | 7 + .../verify-common.bsh | 9 +- .../jetbrains/kotlin/lombok/LombokPlugin.kt | 8 +- 11 files changed, 298 insertions(+), 7 deletions(-) create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/pom.xml create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/JavaUsage.java create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/ManualPojo.java create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/SomeData.java create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/SomePojo.java create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/kotlin/lab2/KotlinUsage.kt create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/kotlin/lab2/test.kt create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/verify.bsh diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/verify.bsh b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/verify.bsh index fcc28b94650..ecea41a643b 100644 --- a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/verify.bsh +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-simple/verify.bsh @@ -1,6 +1,4 @@ -import java.io.*; +source(new File(basedir, "../../../verify-common.bsh").getAbsolutePath()); -File file = new File(basedir, "target/test-lombok-simple-1.0-SNAPSHOT.jar"); -if (!file.exists() || !file.isFile()) { - throw new FileNotFoundException("Could not find generated JAR: " + file); -} +assertBuildLogHasLineThatContains("Applied plugin: 'kotlin-lombok'"); +assertFileExists("target/test-lombok-simple-1.0-SNAPSHOT.jar"); diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/pom.xml new file mode 100644 index 00000000000..748ff87adde --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/pom.xml @@ -0,0 +1,156 @@ + + + 4.0.0 + + org.jetbrains.kotlin + test-lombok-with-kapt + 1.0-SNAPSHOT + + + UTF-8 + 1.8 + + 1.12.0 + 1.18.20 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + ${project.basedir}/src/main/java + ${project.basedir}/src/test/java + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + kotlin-lombok + + + + + kapt + + kapt + + + + ${project.basedir}/src/main/kotlin + ${project.basedir}/src/main/java + + + + com.squareup.moshi + moshi-kotlin-codegen + ${moshi.version} + + + + + + compile + + compile + + + + ${project.basedir}/src/main/kotlin + ${project.basedir}/src/main/java + + + + + test-compile + test-compile + + + ${project.basedir}/src/test/kotlin + ${project.basedir}/src/test/java + + + + + + + org.jetbrains.kotlin + kotlin-maven-lombok + ${kotlin.version} + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + org.projectlombok + lombok + ${lombok.version} + + + + + + + default-compile + none + + + + default-testCompile + none + + + java-compile + compile + + compile + + + + java-test-compile + test-compile + + testCompile + + + + + + + + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + com.squareup.moshi + moshi-kotlin + ${moshi.version} + + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/JavaUsage.java b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/JavaUsage.java new file mode 100644 index 00000000000..30a281908a3 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/JavaUsage.java @@ -0,0 +1,16 @@ +package lab2; + +public class JavaUsage { + + public static void main(String[] args) { + SomePojo obj = new SomePojo(); + obj.setAge(12); + boolean v = obj.isHuman(); + obj.setHuman(!v); + System.out.println(obj); + } + + public static void cycleUsage() { + new SomeKotlinClass().call(); + } +} diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/ManualPojo.java b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/ManualPojo.java new file mode 100644 index 00000000000..e619ddf9b63 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/ManualPojo.java @@ -0,0 +1,21 @@ +package lab2; + +import org.jetbrains.annotations.Nullable; + +public class ManualPojo { + + public String getFoo() { + return null; + } + +// @NotNull + public String getBar() { + return "234"; + } + + @Nullable + public Object someMethod() { + return null; + } + +} diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/SomeData.java b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/SomeData.java new file mode 100644 index 00000000000..c0cee2110cd --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/SomeData.java @@ -0,0 +1,10 @@ +package lab2; + +import lombok.Data; + +@Data +public class SomeData { + private String name; + private int age; + private boolean human; +} diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/SomePojo.java b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/SomePojo.java new file mode 100644 index 00000000000..6cf4e7b1013 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/java/lab2/SomePojo.java @@ -0,0 +1,17 @@ +package lab2; + +import lombok.Getter; +import lombok.NonNull; +import lombok.Setter; +import lombok.ToString; + +@Getter @Setter @ToString +public class SomePojo { + + @NonNull + private String name; + private int age; + + private boolean human; + +} diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/kotlin/lab2/KotlinUsage.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/kotlin/lab2/KotlinUsage.kt new file mode 100644 index 00000000000..337e9790813 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/kotlin/lab2/KotlinUsage.kt @@ -0,0 +1,29 @@ +package lab2 + +fun main() { + println("something") + val obj = SomePojo() + obj.name = "test" + val s: String = obj.name + obj.age = 12 + val v = obj.isHuman + obj.isHuman = !v + println(obj) +// +// val manualPojo = ManualPojo() +// +// val foo: String? = manualPojo.getFoo() +// val res: Any? = manualPojo.someMethod() +// + val ddd = SomeData() + + JavaUsage.cycleUsage() +} + +class SomeKotlinClass { + fun call() { + val ddd = SomeData() + ddd.age = 12 + println(ddd) + } +} diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/kotlin/lab2/test.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/kotlin/lab2/test.kt new file mode 100644 index 00000000000..993c84e10ca --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/src/main/kotlin/lab2/test.kt @@ -0,0 +1,24 @@ +package lab2 + +import com.squareup.moshi.JsonClass +import com.squareup.moshi.Moshi + +@JsonClass(generateAdapter = true) +data class SomeObj( + val hidden: Boolean, + val names: List +) + +fun main() { + + val json = """ + { + "hidden": true, + "names": ["a", "b"] + } + """.trimIndent() + + val moshi: Moshi = Moshi.Builder().build() + val adapter = moshi.adapter(SomeObj::class.java) + println(adapter.fromJson(json)) +} diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/verify.bsh b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/verify.bsh new file mode 100644 index 00000000000..d3d44bcd7d8 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-lombok-with-kapt/verify.bsh @@ -0,0 +1,7 @@ +source(new File(basedir, "../../../verify-common.bsh").getAbsolutePath()); + +assertBuildLogHasLineThatContains("Applied plugin: 'kotlin-lombok'"); +assertFileExists("target/test-lombok-with-kapt-1.0-SNAPSHOT.jar"); +assertFileExists("target/kaptStubs/compile/lab2/SomeObj.java"); +assertFileExists("target/generated-sources/kapt/compile/lab2/SomeObjJsonAdapter.kt"); + diff --git a/libraries/tools/kotlin-maven-plugin-test/verify-common.bsh b/libraries/tools/kotlin-maven-plugin-test/verify-common.bsh index ceb10449d21..9ce3f19bc8c 100644 --- a/libraries/tools/kotlin-maven-plugin-test/verify-common.bsh +++ b/libraries/tools/kotlin-maven-plugin-test/verify-common.bsh @@ -66,4 +66,11 @@ int findLineThatContains(String[] lines, String content) { } } return -1; -} \ No newline at end of file +} + +void assertFileExists(String relativePath) { + File file = new File(basedir, relativePath); + if (!file.exists() || !file.isFile()) { + throw new Exception("Expected file not found: " + relativePath); + } +} diff --git a/plugins/lombok/lombok-compiler-plugin/src/org/jetbrains/kotlin/lombok/LombokPlugin.kt b/plugins/lombok/lombok-compiler-plugin/src/org/jetbrains/kotlin/lombok/LombokPlugin.kt index 4551ca4712e..8a0351d4620 100644 --- a/plugins/lombok/lombok-compiler-plugin/src/org/jetbrains/kotlin/lombok/LombokPlugin.kt +++ b/plugins/lombok/lombok-compiler-plugin/src/org/jetbrains/kotlin/lombok/LombokPlugin.kt @@ -64,7 +64,13 @@ class LombokCommandLineProcessor : CommandLineProcessor { override fun processOption(option: AbstractCliOption, value: String, configuration: CompilerConfiguration) { when (option) { - CONFIG_FILE_OPTION -> configuration.put(CONFIG_FILE, File(value)) + CONFIG_FILE_OPTION -> { + val file = File(value) + if (!file.exists()) { + throw IllegalArgumentException("Config file not found ${file.absolutePath}") + } + configuration.put(CONFIG_FILE, file) + } else -> throw IllegalArgumentException("Unknown option $option") } }