aboutsummaryrefslogtreecommitdiff
path: root/integration-tests/src/test/kotlin/com/google/devtools/ksp/test/TemporaryTestProject.kt
blob: fea748f0b1e31713a275ca57fb5c55e16cee774a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.google.devtools.ksp.test

import org.junit.rules.TemporaryFolder
import java.io.File

class TemporaryTestProject(projectName: String, baseProject: String? = null) : TemporaryFolder() {
    private val testProjectSrc = File("src/test/resources", projectName)
    private val baseProjectSrc = baseProject?.let { File("src/test/resources", baseProject) }

    override fun before() {
        super.before()

        baseProjectSrc?.copyRecursively(root)
        testProjectSrc.copyRecursively(root, true)

        val kotlinVersion = System.getProperty("kotlinVersion")
        val kspVersion = System.getProperty("kspVersion")
        val agpVersion = System.getProperty("agpVersion")
        val testRepo = System.getProperty("testRepo").replace(File.separator, "/")
        val gradleProperties = File(root, "gradle.properties")
        gradleProperties.appendText("\nkotlinVersion=$kotlinVersion")
        gradleProperties.appendText("\nkspVersion=$kspVersion")
        gradleProperties.appendText("\nagpVersion=$agpVersion")
        gradleProperties.appendText("\ntestRepo=$testRepo")
        gradleProperties.appendText("\norg.gradle.unsafe.configuration-cache=true")
        gradleProperties.appendText("\nkotlin.jvm.target.validation.mode=warning")
        // Uncomment this to debug compiler and compiler plugin.
        // gradleProperties.appendText("\nsystemProp.kotlin.compiler.execution.strategy=in-process")
    }

    fun restore(file: String) {
        fun copySafe(src: File, dst: File) {
            if (src.exists())
                src.copyTo(dst, true)
        }
        baseProjectSrc?.let {
            copySafe(File(baseProjectSrc, file), File(root, file))
        }
        copySafe(File(testProjectSrc, file), File(root, file))
    }
}