aboutsummaryrefslogtreecommitdiff
path: root/gradle-plugin
diff options
context:
space:
mode:
authorMattia Iavarone <mat.iavarone@gmail.com>2021-09-04 19:18:19 +0200
committerlaszio <ting-yuan@users.noreply.github.com>2021-10-01 16:27:38 -0700
commit7ac6e8bbf3ed14e0b911df6b422c425332b346d5 (patch)
tree7642302008dc39bf10269c64f2ac5df8cbe09232 /gradle-plugin
parent90e89cfbecfdcb8809c6cb83c5da9ba98d9bed9c (diff)
downloadksp-7ac6e8bbf3ed14e0b911df6b422c425332b346d5.tar.gz
Add tests
Diffstat (limited to 'gradle-plugin')
-rw-r--r--gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/SourceSetConfigurationsTest.kt41
-rw-r--r--gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/testing/KspIntegrationTestRule.kt25
-rw-r--r--gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/testing/TestModule.kt13
3 files changed, 79 insertions, 0 deletions
diff --git a/gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/SourceSetConfigurationsTest.kt b/gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/SourceSetConfigurationsTest.kt
index 922adeae..5ca7d779 100644
--- a/gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/SourceSetConfigurationsTest.kt
+++ b/gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/SourceSetConfigurationsTest.kt
@@ -73,6 +73,47 @@ class SourceSetConfigurationsTest {
}
@Test
+ fun configurationsForMultiplatformApp() {
+ testRule.setupAppAsMultiplatformApp(
+ "jvm { }",
+ "android(name = \"foo\") { }",
+ "js { browser() }",
+ "androidNativeX86 { }",
+ "androidNativeX64(name = \"bar\") { }",
+ )
+ testRule.appModule.addMultiplatformSource("commonMain", "Foo.kt", "class Foo")
+ val result = testRule.runner()
+ .withArguments(":app:dependencies")
+ .build()
+
+ assertThat(result.output.lines()).containsAtLeast(
+ "ksp",
+ // jvm target:
+ "kspJvm",
+ "kspJvmTest",
+ // android target, named foo:
+ "kspFoo",
+ "kspFooAndroidTest",
+ "kspFooAndroidTestDebug",
+ "kspFooAndroidTestRelease",
+ "kspFooDebug",
+ "kspFooRelease",
+ "kspFooTest",
+ "kspFooTestDebug",
+ "kspFooTestRelease",
+ // js target:
+ "kspJs",
+ "kspJsTest",
+ // androidNativeX86 target:
+ "kspAndroidNativeX86",
+ "kspAndroidNativeX86Test",
+ // androidNative64 target, named bar:
+ "kspBar",
+ "kspBarTest"
+ )
+ }
+
+ @Test
fun registerJavaSourcesToAndroid() {
testRule.setupAppAsAndroidApp()
testRule.appModule.dependencies.addAll(
diff --git a/gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/testing/KspIntegrationTestRule.kt b/gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/testing/KspIntegrationTestRule.kt
index cfbcb778..c4bb35d5 100644
--- a/gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/testing/KspIntegrationTestRule.kt
+++ b/gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/testing/KspIntegrationTestRule.kt
@@ -102,6 +102,31 @@ class KspIntegrationTestRule(
PluginDeclaration.id("com.google.devtools.ksp", testConfig.kspVersion)
)
)
+ addAndroidBoilerplate()
+ }
+
+ /**
+ * Sets up the app module as a multiplatform app with the specified [targets], wrapped in a kotlin { } block.
+ */
+ fun setupAppAsMultiplatformApp(vararg targets: String) {
+ testProject.appModule.plugins.addAll(
+ listOf(
+ PluginDeclaration.id("com.android.application", testConfig.androidBaseVersion),
+ PluginDeclaration.kotlin("multiplatform", testConfig.kotlinBaseVersion),
+ PluginDeclaration.id("com.google.devtools.ksp", testConfig.kspVersion)
+ )
+ )
+ testProject.appModule.buildFileAdditions.add(
+ """
+ kotlin {
+ ${targets.joinToString(separator = "\n") { it.trimIndent()} }
+ }
+ """.trimIndent()
+ )
+ addAndroidBoilerplate()
+ }
+
+ private fun addAndroidBoilerplate() {
testProject.appModule.buildFileAdditions.add(
"""
android {
diff --git a/gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/testing/TestModule.kt b/gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/testing/TestModule.kt
index 87b0907f..293d1485 100644
--- a/gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/testing/TestModule.kt
+++ b/gradle-plugin/src/test/kotlin/com/google/devtools/ksp/gradle/testing/TestModule.kt
@@ -77,6 +77,19 @@ class TestModule(
srcDir.resolve(name).writeText(contents)
}
+ /**
+ * Adds the given source file to the given KotlinSourceSet in a multiplatform project.
+ */
+ fun addMultiplatformSource(sourceSet: String, name: String, contents: String) {
+ require(name.endsWith(".kt")) { "multiplatform source extension needs to be *.kt." }
+ val srcDir = multiplatformKotlinSourceDir(sourceSet)
+ srcDir.resolve(name).writeText(contents)
+ }
+
+ private fun multiplatformKotlinSourceDir(sourceSet: String) = moduleRoot.resolve("src/$sourceSet/kotlin").also {
+ it.mkdirs()
+ }
+
private val kotlinSourceDir
get() = moduleRoot.resolve("src/main/kotlin").also {
it.mkdirs()