[Build] Make :kotlin-annotation-processing-cli:test tests cacheable ^KT-85453: Fixed
diff --git a/plugins/kapt/kapt-cli/build.gradle.kts b/plugins/kapt/kapt-cli/build.gradle.kts index 49d97a0..d4e1997 100644 --- a/plugins/kapt/kapt-cli/build.gradle.kts +++ b/plugins/kapt/kapt-cli/build.gradle.kts
@@ -2,6 +2,7 @@ kotlin("jvm") id("java-test-fixtures") id("project-tests-convention") + id("test-inputs-check") } dependencies { @@ -29,8 +30,6 @@ projectTests { testTask(jUnitMode = JUnitMode.JUnit5, defineJDKEnvVariables = listOf(JdkMajorVersion.JDK_1_8)) { - workingDir = rootDir - dependsOn(":dist") val jdkHome = project.getToolchainJdkHomeFor(JdkMajorVersion.JDK_1_8) doFirst { environment("JAVA_HOME", jdkHome.get()) @@ -40,4 +39,9 @@ testGenerator("org.jetbrains.kotlin.kapt.cli.test.TestGeneratorKt") withJvmStdlibAndReflect() + + @OptIn(KotlinCompilerDistUsage::class) + withDist() + + testData(project(":kotlin-annotation-processing-cli").isolated, "testData") }
diff --git a/plugins/kapt/kapt-cli/testFixtures/org/jetbrains/kotlin/kapt/cli/test/AbstractArgumentParsingTest.kt b/plugins/kapt/kapt-cli/testFixtures/org/jetbrains/kotlin/kapt/cli/test/AbstractArgumentParsingTest.kt index b6a75a8..726143a 100644 --- a/plugins/kapt/kapt-cli/testFixtures/org/jetbrains/kotlin/kapt/cli/test/AbstractArgumentParsingTest.kt +++ b/plugins/kapt/kapt-cli/testFixtures/org/jetbrains/kotlin/kapt/cli/test/AbstractArgumentParsingTest.kt
@@ -5,13 +5,13 @@ package org.jetbrains.kotlin.kapt.cli.test import org.jetbrains.kotlin.cli.common.messages.MessageCollectorImpl +import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime import org.jetbrains.kotlin.kapt.cli.transformArgs import org.jetbrains.kotlin.test.services.JUnit5Assertions -import java.io.File abstract class AbstractArgumentParsingTest { fun runTest(filePath: String) { - val testFile = File(filePath) + val testFile = ForTestCompileRuntime.transformTestDataPath(filePath) val sections = Section.parse(testFile) val before = sections.single { it.name == "before" }
diff --git a/plugins/kapt/kapt-cli/testFixtures/org/jetbrains/kotlin/kapt/cli/test/AbstractKaptToolIntegrationTest.kt b/plugins/kapt/kapt-cli/testFixtures/org/jetbrains/kotlin/kapt/cli/test/AbstractKaptToolIntegrationTest.kt index 1dca3b6..1289500 100644 --- a/plugins/kapt/kapt-cli/testFixtures/org/jetbrains/kotlin/kapt/cli/test/AbstractKaptToolIntegrationTest.kt +++ b/plugins/kapt/kapt-cli/testFixtures/org/jetbrains/kotlin/kapt/cli/test/AbstractKaptToolIntegrationTest.kt
@@ -8,6 +8,7 @@ import com.intellij.openapi.util.SystemInfo import com.intellij.openapi.util.text.StringUtil.convertLineSeparators import org.jetbrains.kotlin.cli.common.arguments.readArgumentsFromArgFile +import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime import org.jetbrains.kotlin.test.services.JUnit5Assertions import org.jetbrains.kotlin.test.util.KtTestUtil import org.junit.jupiter.api.BeforeEach @@ -31,7 +32,7 @@ } fun runTest(filePath: String) { - val testDir = File(filePath) + val testDir = ForTestCompileRuntime.transformTestDataPath(filePath) val testFile = File(testDir, "build.txt") assert(testFile.isFile) { "build.txt doesn't exist" } @@ -88,7 +89,7 @@ private fun runKotlinDistBinary(name: String, args: List<String>) { val executableName = if (SystemInfo.isWindows) "$name.bat" else name - val executablePath = File("dist/kotlinc/bin/$executableName").absolutePath + val executablePath = File(ForTestCompileRuntime.distKotlincForTests(), "bin/$executableName").absolutePath runProcess(executablePath, args) } @@ -132,8 +133,8 @@ private fun transformArguments(args: List<String>): List<String> { return args.map { val arg = it - .replace("%KOTLIN_STDLIB%", File("dist/kotlinc/lib/kotlin-stdlib.jar").absolutePath) - .replace("%KOTLIN_COMPILER%", File("dist/kotlinc/lib/kotlin-compiler.jar").absolutePath) + .replace("%KOTLIN_STDLIB%", File(ForTestCompileRuntime.distKotlincForTests(), "lib/kotlin-stdlib.jar").absolutePath) + .replace("%KOTLIN_COMPILER%", File(ForTestCompileRuntime.distKotlincForTests(), "lib/kotlin-compiler.jar").absolutePath) if (SystemInfo.isWindows && (arg.contains("=") || arg.contains(":") || arg.contains(";"))) { "\"" + arg + "\"" } else {
diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/common-configuration.gradle.kts b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/common-configuration.gradle.kts index fded87f..4651700 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/common-configuration.gradle.kts +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/common-configuration.gradle.kts
@@ -334,7 +334,6 @@ ":jps:jps-plugin", ":kotlin-annotation-processing", ":kotlin-annotation-processing-base", - ":kotlin-annotation-processing-cli", ":kotlin-atomicfu-compiler-plugin", ":kotlin-build-common", ":kotlin-compiler-client-embeddable",
diff --git a/repo/gradle-build-conventions/project-tests-convention/src/main/kotlin/test-inputs-check.gradle.kts b/repo/gradle-build-conventions/project-tests-convention/src/main/kotlin/test-inputs-check.gradle.kts index ac973b5..efe2496 100644 --- a/repo/gradle-build-conventions/project-tests-convention/src/main/kotlin/test-inputs-check.gradle.kts +++ b/repo/gradle-build-conventions/project-tests-convention/src/main/kotlin/test-inputs-check.gradle.kts
@@ -123,14 +123,18 @@ val inputPermissions: Set<String> = inputs.files.flatMapTo(HashSet()) { file -> if (file.isDirectory) { addedDirs.add(file) - listOf( - """permission java.io.FilePermission "${file.absolutePath}/", "read";""", - """permission java.io.FilePermission "${file.absolutePath}/-", "read${ + buildList { + add("""permission java.io.FilePermission "${file.absolutePath}/", "read";""") + if (file.canonicalPath.contains("/testData")) { // We write to the testData folder from tests... - if (file.canonicalPath.contains("/testData")) ",write,delete" - else "" - }";""", - ) + add("""permission java.io.FilePermission "${file.absolutePath}/-", "read,write,delete";""") + } else { + add("""permission java.io.FilePermission "${file.absolutePath}/-", "read";""") + } + if (file.canonicalPath.endsWith("dist")) { + add("""permission java.io.FilePermission "${file.resolve("kotlinc").resolve("bin")}/-", "read,execute";""") + } + } } else if (file.extension == "class") { listOfNotNull( """permission java.io.FilePermission "${file.parentFile.absolutePath}/-", "read";""".takeIf {