1 package com.google.devtools.ksp.test 2 3 import org.junit.rules.TemporaryFolder 4 import java.io.File 5 6 class TemporaryTestProject(projectName: String, baseProject: String? = null) : TemporaryFolder() { 7 private val testProjectSrc = File("src/test/resources", projectName) <lambda>null8 private val baseProjectSrc = baseProject?.let { File("src/test/resources", baseProject) } 9 beforenull10 override fun before() { 11 super.before() 12 13 baseProjectSrc?.copyRecursively(root) 14 testProjectSrc.copyRecursively(root, true) 15 16 val kotlinVersion = System.getProperty("kotlinVersion") 17 val kspVersion = System.getProperty("kspVersion") 18 val agpVersion = System.getProperty("agpVersion") 19 val testRepo = System.getProperty("testRepo").replace(File.separator, "/") 20 val gradleProperties = File(root, "gradle.properties") 21 gradleProperties.appendText("\nkotlinVersion=$kotlinVersion") 22 gradleProperties.appendText("\nkspVersion=$kspVersion") 23 gradleProperties.appendText("\nagpVersion=$agpVersion") 24 gradleProperties.appendText("\ntestRepo=$testRepo") 25 gradleProperties.appendText("\norg.gradle.unsafe.configuration-cache=true") 26 gradleProperties.appendText("\nkotlin.jvm.target.validation.mode=warning") 27 // Uncomment this to debug compiler and compiler plugin. 28 // gradleProperties.appendText("\nsystemProp.kotlin.compiler.execution.strategy=in-process") 29 } 30 restorenull31 fun restore(file: String) { 32 fun copySafe(src: File, dst: File) { 33 if (src.exists()) 34 src.copyTo(dst, true) 35 } 36 baseProjectSrc?.let { 37 copySafe(File(baseProjectSrc, file), File(root, file)) 38 } 39 copySafe(File(testProjectSrc, file), File(root, file)) 40 } 41 } 42