From 6e51ada36b81e34bcae3740e92969b11213d1df5 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Fri, 9 Feb 2018 20:59:50 +0300 Subject: [PATCH] Override system-wide cache, simplify version checks, --- .../AbstractKotlinAndroidGradleTests.kt | 2 +- .../jetbrains/kotlin/gradle/BaseGradleIT.kt | 21 ++++++++++++------- .../IncrementalCompilationMultiProjectIT.kt | 7 ++++++- .../KotlinGradlePluginMultiVersionIT.kt | 17 +++++++-------- .../jetbrains/kotlin/gradle/UpToDatenessIT.kt | 2 +- 5 files changed, 30 insertions(+), 19 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt index ff99b4d5efe..c7f1f0335e2 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt @@ -276,7 +276,7 @@ fun getSomething() = 10 ":libAndroid:compileReleaseUnitTestKotlin" ) - val kotlinFolder = if (VersionNumber.parse(project.chooseWrapperVersionOrFinishTest()).major > 3) "kotlin" else "" + val kotlinFolder = if (project.testGradleVersionAtLeast("4.0")) "kotlin" else "" assertFileExists("lib/build/classes/$kotlinFolder/main/foo/PlatformClass.kotlin_metadata") assertFileExists("lib/build/classes/$kotlinFolder/test/foo/PlatformTest.kotlin_metadata") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt index faeb87d99af..e4cf8f05b13 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt @@ -443,18 +443,19 @@ abstract class BaseGradleIT { fun Project.resourcesDir(subproject: String? = null, sourceSet: String = "main"): String = (subproject?.plus("/") ?: "") + "build/" + - (if (GradleVersion.version(chooseWrapperVersionOrFinishTest()) < GradleVersion.version("4.0")) - "classes/" - else "resources/") + + (if (testGradleVersionBelow("4.0")) "classes/" else "resources/") + sourceSet + "/" fun Project.classesDir(subproject: String? = null, sourceSet: String = "main", language: String = "kotlin"): String = (subproject?.plus("/") ?: "") + "build/classes/" + - (if (GradleVersion.version(chooseWrapperVersionOrFinishTest()) >= GradleVersion.version("4.0")) - "$language/" - else "") + + (if (testGradleVersionAtLeast("4.0")) "$language/" else "") + sourceSet + "/" + fun Project.testGradleVersionAtLeast(version: String): Boolean = + GradleVersion.version(chooseWrapperVersionOrFinishTest()) >= GradleVersion.version(version) + + fun Project.testGradleVersionBelow(version: String): Boolean = !testGradleVersionAtLeast(version) + fun CompiledProject.kotlinClassesDir(subproject: String? = null, sourceSet: String = "main"): String = project.classesDir(subproject, sourceSet, language = "kotlin") @@ -494,7 +495,13 @@ abstract class BaseGradleIT { System.getProperty("maven.repo.local")?.let { add("-Dmaven.repo.local=$it") // TODO: proper escaping } - add(if (options.withBuildCache) "--build-cache" else "--no-build-cache") + + if (options.withBuildCache) { + add("--build-cache") + } else { + // Override possibly enabled system-wide caching: + add("-Dorg.gradle.caching=false") + } // Workaround: override a console type set in the user machine gradle.properties (since Gradle 4.3): add("--console=plain") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt index d4a63c41243..0f93e653873 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt @@ -95,6 +95,10 @@ open class A { assertSuccessful() } + if (project.testGradleVersionAtLeast("4.0")) { + File(project.projectDir, "lib/build.gradle").appendText("\nkotlin.copyClassesToJavaOutput = true") + } + project.build(":lib:clean", ":lib:build") { assertSuccessful() val affectedSources = File(project.projectDir, "lib").allKotlinFiles() @@ -139,7 +143,8 @@ open class A { // that is not JavaCompile or KotlinCompile @Test fun testCompileLibWithGroovy() { - val project = Project("incrementalMultiproject") + val gradleVersion = GradleVersionRequired.Exact("3.5") // With newer versions, Groovy uses separate classes dirs + val project = Project("incrementalMultiproject", gradleVersion) project.setupWorkingDir() val lib = File(project.projectDir, "lib") val libBuildGradle = File(lib, "build.gradle") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginMultiVersionIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginMultiVersionIT.kt index ea67fed2465..a978ac583a4 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginMultiVersionIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginMultiVersionIT.kt @@ -69,11 +69,11 @@ class KotlinGradlePluginMultiVersionIT : BaseMultiGradleVersionIT() { @Test fun testJavaIcCompatibility() { - val version = gradleVersionString.split(".").map(String::toInt) - val expectIncrementalCompilation = version.let { (major, minor) -> major > 2 || major == 2 && minor >= 14 } - val expectVerboseIncrementalLogs = version.let { (major, minor) -> major < 3 || major == 3 && minor < 4 } - val project = Project("kotlinJavaProject", gradleVersion) + + val expectIncrementalCompilation = project.testGradleVersionAtLeast("2.14") + val expectVerboseIncrementalLogs = project.testGradleVersionBelow("3.4") + project.setupWorkingDir() val buildScript = File(project.projectDir, "build.gradle") @@ -129,12 +129,11 @@ class KotlinGradlePluginMultiVersionIT : BaseMultiGradleVersionIT() { @Test fun testJavaLibraryCompatibility() { - Assume.assumeTrue("The java-library plugin is supported only in Gradle 3.4+ (current: $gradleVersion)", - gradleVersionString.split(".").map(String::toInt).let { (major, minor) -> - major > 3 || major == 3 && minor >= 4 - }) - val project = Project("javaLibraryProject", gradleVersion) + + Assume.assumeTrue("The java-library plugin is supported only in Gradle 3.4+ (current: $gradleVersion)", + project.testGradleVersionAtLeast("3.4")) + val compileKotlinTasks = listOf(":libA:compileKotlin", ":libB:compileKotlin", ":app:compileKotlin") project.build("build") { assertSuccessful() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/UpToDatenessIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/UpToDatenessIT.kt index e5b13c7371b..8d4ccdc0b91 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/UpToDatenessIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/UpToDatenessIT.kt @@ -121,7 +121,7 @@ class UpToDateIT : BaseGradleIT() { override fun mutateProject(project: Project) = with(project) { val kotlinOutputPath = - if (GradleVersion.version(project.chooseWrapperVersionOrFinishTest()) >= GradleVersion.version("4.0")) + if (testGradleVersionAtLeast("4.0")) project.classesDir() else // Before 4.0, we should delete the classes from the temporary dir to make compileKotlin rerun: "build/kotlin-classes/main/"