[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 {