• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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