mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-17 15:50:53 +07:00
202 lines
8.1 KiB
Kotlin
202 lines
8.1 KiB
Kotlin
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
|
package org.jetbrains.plugins.gradle.importing
|
|
|
|
import com.intellij.openapi.projectRoots.JavaSdkVersion
|
|
import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess
|
|
import com.intellij.pom.java.LanguageLevel
|
|
import com.intellij.util.SystemProperties
|
|
import org.jetbrains.plugins.gradle.jvmcompat.GradleJvmSupportMatrix
|
|
import org.jetbrains.plugins.gradle.testFramework.util.importProject
|
|
import org.jetbrains.plugins.gradle.tooling.annotation.TargetVersions
|
|
import org.junit.Assume
|
|
import org.junit.Ignore
|
|
import org.junit.Test
|
|
|
|
class GradleJavaCompilerSettingsImportingTest : GradleJavaCompilerSettingsImportingTestCase() {
|
|
@Test
|
|
fun `test project-module compatibility replacing`() {
|
|
createJavaGradleSubProject(
|
|
projectSourceCompatibility = "1.6",
|
|
projectTargetCompatibility = "1.7"
|
|
)
|
|
importProject()
|
|
assertLanguageLevels(LanguageLevel.JDK_1_6, "project", "project.main", "project.test")
|
|
assertTargetBytecodeVersions("1.7", "project", "project.main", "project.test")
|
|
|
|
setProjectLanguageLevel(LanguageLevel.JDK_13)
|
|
setProjectTargetBytecodeVersion("13")
|
|
assertLanguageLevels(LanguageLevel.JDK_13, "project", "project.main", "project.test")
|
|
assertTargetBytecodeVersions("13", "project", "project.main", "project.test")
|
|
|
|
importProject()
|
|
assertLanguageLevels(LanguageLevel.JDK_1_6, "project", "project.main", "project.test")
|
|
assertTargetBytecodeVersions("1.7", "project", "project.main", "project.test")
|
|
}
|
|
|
|
@Test
|
|
fun `test maximum compiler settings dispersion`() {
|
|
createJavaGradleSubProject(
|
|
projectSourceCompatibility = "1.3",
|
|
projectTargetCompatibility = "1.4",
|
|
mainSourceCompatibility = "1.5",
|
|
mainTargetCompatibility = "1.6",
|
|
testSourceCompatibility = "1.7",
|
|
testTargetCompatibility = "1.8"
|
|
)
|
|
createJavaGradleSubProject(
|
|
"module",
|
|
projectSourceCompatibility = "1.8",
|
|
projectTargetCompatibility = "1.7",
|
|
mainSourceCompatibility = "1.6",
|
|
mainTargetCompatibility = "1.5",
|
|
testSourceCompatibility = "1.4",
|
|
testTargetCompatibility = "1.3"
|
|
)
|
|
createGradleSettingsFile("module")
|
|
importProject()
|
|
|
|
assertProjectLanguageLevel(LanguageLevel.JDK_1_3)
|
|
assertModuleLanguageLevel("project", LanguageLevel.JDK_1_3)
|
|
assertModuleLanguageLevel("project.main", LanguageLevel.JDK_1_5)
|
|
assertModuleLanguageLevel("project.test", LanguageLevel.JDK_1_7)
|
|
assertModuleLanguageLevel("project.module", LanguageLevel.JDK_1_8)
|
|
assertModuleLanguageLevel("project.module.main", LanguageLevel.JDK_1_6)
|
|
assertModuleLanguageLevel("project.module.test", LanguageLevel.JDK_1_4)
|
|
|
|
assertProjectTargetBytecodeVersion("1.4")
|
|
assertModuleTargetBytecodeVersion("project", "1.4")
|
|
assertModuleTargetBytecodeVersion("project.main", "1.6")
|
|
assertModuleTargetBytecodeVersion("project.test", "1.8")
|
|
assertModuleTargetBytecodeVersion("project.module", "1.7")
|
|
assertModuleTargetBytecodeVersion("project.module.main", "1.5")
|
|
assertModuleTargetBytecodeVersion("project.module.test", "1.3")
|
|
}
|
|
|
|
@Test
|
|
fun `test language level approximation`() {
|
|
val nonPreviewLevel = LanguageLevel.HIGHEST
|
|
val preview = LanguageLevel.values()[LanguageLevel.HIGHEST.ordinal + 1]
|
|
val javaVersion = nonPreviewLevel.toJavaVersion()
|
|
val feature = javaVersion.feature
|
|
|
|
Assume.assumeTrue(GradleJvmSupportMatrix.isSupported(currentGradleVersion, javaVersion))
|
|
|
|
createJavaGradleSubProject(
|
|
projectSourceCompatibility = "$feature",
|
|
mainSourceCompatibilityEnablePreview = true,
|
|
testSourceCompatibilityEnablePreview = true
|
|
)
|
|
importProject()
|
|
assertProjectLanguageLevel(preview)
|
|
assertModuleLanguageLevel("project", preview)
|
|
assertModuleLanguageLevel("project.main", preview)
|
|
assertModuleLanguageLevel("project.test", preview)
|
|
|
|
createJavaGradleSubProject(
|
|
"module",
|
|
projectSourceCompatibility = "$feature",
|
|
mainSourceCompatibilityEnablePreview = true,
|
|
testSourceCompatibilityEnablePreview = true
|
|
)
|
|
createGradleSettingsFile("module")
|
|
importProject()
|
|
assertProjectLanguageLevel(preview)
|
|
assertModuleLanguageLevel("project", preview)
|
|
assertModuleLanguageLevel("project.main", preview)
|
|
assertModuleLanguageLevel("project.test", preview)
|
|
assertModuleLanguageLevel("project.module", preview)
|
|
assertModuleLanguageLevel("project.module.main", preview)
|
|
assertModuleLanguageLevel("project.module.test", preview)
|
|
|
|
createJavaGradleSubProject(
|
|
"module1",
|
|
projectSourceCompatibility = "$feature",
|
|
mainSourceCompatibilityEnablePreview = true,
|
|
testSourceCompatibilityEnablePreview = false
|
|
)
|
|
createJavaGradleSubProject(
|
|
"module2",
|
|
projectSourceCompatibility = "$feature",
|
|
mainSourceCompatibilityEnablePreview = false,
|
|
testSourceCompatibilityEnablePreview = true
|
|
)
|
|
createJavaGradleSubProject(
|
|
"module3",
|
|
projectSourceCompatibility = "$feature",
|
|
mainSourceCompatibilityEnablePreview = false,
|
|
testSourceCompatibilityEnablePreview = false
|
|
)
|
|
createGradleSettingsFile("module", "module1", "module2", "module3", "module4")
|
|
importProject()
|
|
assertProjectLanguageLevel(nonPreviewLevel)
|
|
assertModuleLanguageLevel("project", preview)
|
|
assertModuleLanguageLevel("project.main", preview)
|
|
assertModuleLanguageLevel("project.test", preview)
|
|
assertModuleLanguageLevel("project.module", preview)
|
|
assertModuleLanguageLevel("project.module.main", preview)
|
|
assertModuleLanguageLevel("project.module.test", preview)
|
|
assertModuleLanguageLevel("project.module1", nonPreviewLevel)
|
|
assertModuleLanguageLevel("project.module1.main", preview)
|
|
assertModuleLanguageLevel("project.module1.test", nonPreviewLevel)
|
|
assertModuleLanguageLevel("project.module2", nonPreviewLevel)
|
|
assertModuleLanguageLevel("project.module2.main", nonPreviewLevel)
|
|
assertModuleLanguageLevel("project.module2.test", preview)
|
|
assertModuleLanguageLevel("project.module3", nonPreviewLevel)
|
|
assertModuleLanguageLevel("project.module3.main", nonPreviewLevel)
|
|
assertModuleLanguageLevel("project.module3.test", nonPreviewLevel)
|
|
}
|
|
|
|
@Test
|
|
@Ignore // the test is too slow: it downloads two JDKs. Proper stubs are TBD with Gradle.
|
|
@TargetVersions("6.7+")
|
|
fun `simple toolchain support`() {
|
|
VfsRootAccess.allowRootAccess(testRootDisposable, SystemProperties.getUserHome() + "/.gradle/jdks")
|
|
allowAccessToDirsIfExists()
|
|
importProject {
|
|
withJavaPlugin()
|
|
addPrefix("""
|
|
java.toolchain.languageVersion.set(JavaLanguageVersion.of(15))
|
|
compileJava {
|
|
javaCompiler = javaToolchains.compilerFor {
|
|
languageVersion = JavaLanguageVersion.of(13)
|
|
}
|
|
}
|
|
""".trimIndent())
|
|
}
|
|
assertModules("project", "project.main", "project.test")
|
|
assertModuleLanguageLevel("project.main", LanguageLevel.JDK_13)
|
|
assertModuleLanguageLevel("project.test", LanguageLevel.JDK_15)
|
|
assertModuleSdk("project.main", JavaSdkVersion.JDK_13)
|
|
assertModuleSdk("project.test", JavaSdkVersion.JDK_15)
|
|
}
|
|
|
|
|
|
@Test
|
|
@Ignore("The test is too slow: it downloads two JDKs. Proper stubs are TBD with Gradle.")
|
|
@TargetVersions("6.7+")
|
|
fun `update toolchain in build script should update it in IDEA`() {
|
|
VfsRootAccess.allowRootAccess(testRootDisposable, SystemProperties.getUserHome() + "/.gradle/jdks")
|
|
allowAccessToDirsIfExists()
|
|
importProject {
|
|
withJavaPlugin()
|
|
addPrefix("""
|
|
java.toolchain.languageVersion.set(JavaLanguageVersion.of(13))
|
|
""".trimIndent())
|
|
}
|
|
assertModules("project", "project.main", "project.test")
|
|
assertModuleLanguageLevel("project.main", LanguageLevel.JDK_13)
|
|
assertModuleSdk("project.main", JavaSdkVersion.JDK_13)
|
|
|
|
importProject {
|
|
withJavaPlugin()
|
|
addPrefix("""
|
|
java.toolchain.languageVersion.set(JavaLanguageVersion.of(15))
|
|
""".trimIndent())
|
|
}
|
|
|
|
assertModules("project", "project.main", "project.test")
|
|
assertModuleLanguageLevel("project.main", LanguageLevel.JDK_15)
|
|
assertModuleSdk("project.main", JavaSdkVersion.JDK_15)
|
|
}
|
|
|
|
} |