Add test of Kotlin Lombok project compilation
This test checks that the project with Lombok plugin will be compiled successfully after successful import (KTIJ-20506) #KTIJ-20641 Fixed
This commit is contained in:
committed by
Space
parent
2c3b2ccf6f
commit
0e0b3e6d75
@@ -77,6 +77,7 @@ dependencies {
|
|||||||
testRuntimeOnly(toolsJar())
|
testRuntimeOnly(toolsJar())
|
||||||
testRuntimeOnly(project(":kotlin-reflect"))
|
testRuntimeOnly(project(":kotlin-reflect"))
|
||||||
testRuntimeOnly(project(":kotlin-script-runtime"))
|
testRuntimeOnly(project(":kotlin-script-runtime"))
|
||||||
|
testImplementation("org.projectlombok:lombok:1.18.16")
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
|
|||||||
+4
@@ -47,6 +47,10 @@ abstract class AbstractKotlinJpsBuildTestCase : BaseKotlinJpsBuildTestCase() {
|
|||||||
return addDependency(KotlinJpsLibrary.JsStdLib)
|
return addDependency(KotlinJpsLibrary.JsStdLib)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected fun addKotlinLombokDependency(): JpsLibrary {
|
||||||
|
return addDependency(KotlinJpsLibrary.Lombok)
|
||||||
|
}
|
||||||
|
|
||||||
private fun addDependency(library: KotlinJpsLibrary): JpsLibrary {
|
private fun addDependency(library: KotlinJpsLibrary): JpsLibrary {
|
||||||
return addDependency(myProject, library)
|
return addDependency(myProject, library)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -957,6 +957,11 @@ open class KotlinJpsBuildTest : KotlinJpsBuildTestBase() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun testKotlinLombokProjectBuild() {
|
||||||
|
initProject(LOMBOK)
|
||||||
|
buildAllModules().assertSuccessful()
|
||||||
|
}
|
||||||
|
|
||||||
private fun BuildResult.checkErrors() {
|
private fun BuildResult.checkErrors() {
|
||||||
val actualErrors = getMessages(BuildMessage.Kind.ERROR)
|
val actualErrors = getMessages(BuildMessage.Kind.ERROR)
|
||||||
.map { it as CompilerMessage }
|
.map { it as CompilerMessage }
|
||||||
|
|||||||
+22
-1
@@ -12,10 +12,11 @@ import org.jetbrains.jps.model.java.JpsJavaExtensionService
|
|||||||
import org.jetbrains.jps.model.module.JpsModule
|
import org.jetbrains.jps.model.module.JpsModule
|
||||||
import org.jetbrains.jps.util.JpsPathUtil
|
import org.jetbrains.jps.util.JpsPathUtil
|
||||||
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
|
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
|
||||||
|
import org.jetbrains.kotlin.config.CompilerSettings
|
||||||
import org.jetbrains.kotlin.config.KotlinFacetSettings
|
import org.jetbrains.kotlin.config.KotlinFacetSettings
|
||||||
import org.jetbrains.kotlin.jps.model.JpsKotlinFacetModuleExtension
|
import org.jetbrains.kotlin.jps.model.JpsKotlinFacetModuleExtension
|
||||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||||
import org.jetbrains.kotlin.test.util.KtTestUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
|
|
||||||
@@ -62,6 +63,7 @@ abstract class KotlinJpsBuildTestBase : AbstractKotlinJpsBuildTestCase() {
|
|||||||
JVM_FULL_RUNTIME,
|
JVM_FULL_RUNTIME,
|
||||||
JS_STDLIB_WITHOUT_FACET,
|
JS_STDLIB_WITHOUT_FACET,
|
||||||
JS_STDLIB,
|
JS_STDLIB,
|
||||||
|
LOMBOK
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun initProject(libraryDependency: LibraryDependency = LibraryDependency.NONE) {
|
protected fun initProject(libraryDependency: LibraryDependency = LibraryDependency.NONE) {
|
||||||
@@ -77,6 +79,10 @@ abstract class KotlinJpsBuildTestBase : AbstractKotlinJpsBuildTestCase() {
|
|||||||
addKotlinJavaScriptStdlibDependency()
|
addKotlinJavaScriptStdlibDependency()
|
||||||
setupKotlinJSFacet()
|
setupKotlinJSFacet()
|
||||||
}
|
}
|
||||||
|
LibraryDependency.LOMBOK -> {
|
||||||
|
addKotlinLombokDependency()
|
||||||
|
setupKotlinLombokFacet()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,6 +99,21 @@ abstract class KotlinJpsBuildTestBase : AbstractKotlinJpsBuildTestCase() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupKotlinLombokFacet() {
|
||||||
|
myProject.modules.forEach {
|
||||||
|
val facet = KotlinFacetSettings()
|
||||||
|
facet.useProjectSettings = false
|
||||||
|
facet.compilerSettings = CompilerSettings().also {
|
||||||
|
it.additionalArguments = "-Xallow-no-source-files -Xplugin=${PathUtil.kotlinPathsForDistDirectory.lombokPluginJarPath}"
|
||||||
|
}
|
||||||
|
|
||||||
|
it.container.setChild(
|
||||||
|
JpsKotlinFacetModuleExtension.KIND,
|
||||||
|
JpsKotlinFacetModuleExtension(facet)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val JDK_NAME = "IDEA_JDK"
|
const val JDK_NAME = "IDEA_JDK"
|
||||||
const val PROJECT_NAME = "kotlinProject"
|
const val PROJECT_NAME = "kotlinProject"
|
||||||
|
|||||||
@@ -36,6 +36,11 @@ enum class KotlinJpsLibrary(val id: String, vararg val roots: File) {
|
|||||||
JsTest(
|
JsTest(
|
||||||
"KotlinJavaScriptTest",
|
"KotlinJavaScriptTest",
|
||||||
PathUtil.kotlinPathsForDistDirectory.jsKotlinTestJarPath
|
PathUtil.kotlinPathsForDistDirectory.jsKotlinTestJarPath
|
||||||
|
),
|
||||||
|
Lombok(
|
||||||
|
"lombok",
|
||||||
|
PathUtil.kotlinPathsForDistDirectory.stdlibPath,
|
||||||
|
File(lombok.Lombok::class.java.protectionDomain.codeSource.location.toURI().path)
|
||||||
);
|
);
|
||||||
|
|
||||||
fun create(project: JpsProject): JpsLibrary {
|
fun create(project: JpsProject): JpsLibrary {
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CompilerConfiguration">
|
||||||
|
<option name="DEFAULT_COMPILER" value="Javac" />
|
||||||
|
<annotationProcessing>
|
||||||
|
<profile default="true" name="Default" enabled="true" />
|
||||||
|
</annotationProcessing>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/kotlinProject.iml" filepath="$PROJECT_DIR$/kotlinProject.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="IDEA_JDK" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fun main() {
|
||||||
|
val obj = SomePojo()
|
||||||
|
obj.name = "test"
|
||||||
|
obj.age = 12
|
||||||
|
val v = obj.isHuman
|
||||||
|
obj.isHuman = !v
|
||||||
|
println(obj)
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
@Getter @Setter @ToString
|
||||||
|
public class SomePojo {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private int age;
|
||||||
|
private boolean human;
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user