blob: 14bb1a62b06c3f7ec086d0ac8c6c4dc39a5509ae [file] [log] [blame]
package com.google.devtools.ksp.test
import Artifact
import org.gradle.testkit.runner.GradleRunner
import org.gradle.testkit.runner.TaskOutcome
import org.junit.Assert
import org.junit.Rule
import org.junit.Test
import java.io.File
class OutputDepsIt {
@Rule
@JvmField
val project: TemporaryTestProject = TemporaryTestProject("output-deps")
val src2Dirty = listOf(
"workload/src/main/java/p1/J1.java" to setOf(
"w: [ksp] p1/J1.java",
"w: [ksp] p1/K1.kt",
"w: [ksp] p1/K2.kt",
),
"workload/src/main/java/p1/J2.java" to setOf(
"w: [ksp] p1/J2.java",
),
"workload/src/main/kotlin/p1/K1.kt" to setOf(
"w: [ksp] p1/J1.java",
"w: [ksp] p1/K1.kt",
"w: [ksp] p1/K2.kt",
),
"workload/src/main/kotlin/p1/K2.kt" to setOf(
"w: [ksp] p1/J1.java",
"w: [ksp] p1/K1.kt",
"w: [ksp] p1/K2.kt",
),
)
@Test
fun testOutputDeps() {
val gradleRunner = GradleRunner.create().withProjectDir(project.root)
gradleRunner.withArguments("assemble").build().let { result ->
Assert.assertEquals(TaskOutcome.SUCCESS, result.task(":workload:assemble")?.outcome)
}
val cleanArtifact = Artifact(File(project.root, "workload/build/libs/workload-1.0-SNAPSHOT.jar"))
src2Dirty.forEach { (src, expectedDirties) ->
File(project.root, src).appendText("\n\n")
gradleRunner.withArguments("assemble").build().let { result ->
Assert.assertEquals(TaskOutcome.SUCCESS, result.task(":workload:kspKotlin")?.outcome)
val dirties = result.output.split("\n").filter { it.startsWith("w: [ksp]") }.toSet()
Assert.assertEquals(expectedDirties, dirties)
}
}
val incrementalArtifact = Artifact(File(project.root, "workload/build/libs/workload-1.0-SNAPSHOT.jar"))
Assert.assertEquals(cleanArtifact, incrementalArtifact)
}
}