xref: /aosp_15_r20/external/moshi/kotlin/tests/codegen-only/build.gradle.kts (revision 238ab3e782f339ab327592a602fa7df0a3f729ad)
1*238ab3e7SAndroid Build Coastguard Worker /*
2*238ab3e7SAndroid Build Coastguard Worker  * Copyright (C) 2021 Square, Inc.
3*238ab3e7SAndroid Build Coastguard Worker  *
4*238ab3e7SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*238ab3e7SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*238ab3e7SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*238ab3e7SAndroid Build Coastguard Worker  *
8*238ab3e7SAndroid Build Coastguard Worker  *    https://www.apache.org/licenses/LICENSE-2.0
9*238ab3e7SAndroid Build Coastguard Worker  *
10*238ab3e7SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*238ab3e7SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*238ab3e7SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*238ab3e7SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*238ab3e7SAndroid Build Coastguard Worker  * limitations under the License.
15*238ab3e7SAndroid Build Coastguard Worker  */
16*238ab3e7SAndroid Build Coastguard Worker 
17*238ab3e7SAndroid Build Coastguard Worker import Build_gradle.TestMode.KAPT
18*238ab3e7SAndroid Build Coastguard Worker import Build_gradle.TestMode.KSP
19*238ab3e7SAndroid Build Coastguard Worker import Build_gradle.TestMode.REFLECT
20*238ab3e7SAndroid Build Coastguard Worker import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
21*238ab3e7SAndroid Build Coastguard Worker 
<lambda>null22*238ab3e7SAndroid Build Coastguard Worker plugins {
23*238ab3e7SAndroid Build Coastguard Worker   kotlin("jvm")
24*238ab3e7SAndroid Build Coastguard Worker   kotlin("kapt") apply false
25*238ab3e7SAndroid Build Coastguard Worker   id("com.google.devtools.ksp") apply false
26*238ab3e7SAndroid Build Coastguard Worker }
27*238ab3e7SAndroid Build Coastguard Worker 
28*238ab3e7SAndroid Build Coastguard Worker enum class TestMode {
29*238ab3e7SAndroid Build Coastguard Worker   REFLECT, KAPT, KSP
30*238ab3e7SAndroid Build Coastguard Worker }
31*238ab3e7SAndroid Build Coastguard Worker 
32*238ab3e7SAndroid Build Coastguard Worker val testMode = findProperty("kotlinTestMode")?.toString()
33*238ab3e7SAndroid Build Coastguard Worker   ?.let(TestMode::valueOf)
34*238ab3e7SAndroid Build Coastguard Worker   ?: KSP
35*238ab3e7SAndroid Build Coastguard Worker 
36*238ab3e7SAndroid Build Coastguard Worker when (testMode) {
37*238ab3e7SAndroid Build Coastguard Worker   REFLECT -> {
38*238ab3e7SAndroid Build Coastguard Worker     // Default to KSP. This is a CI-only thing
39*238ab3e7SAndroid Build Coastguard Worker     apply(plugin = "com.google.devtools.ksp")
40*238ab3e7SAndroid Build Coastguard Worker   }
41*238ab3e7SAndroid Build Coastguard Worker   KAPT -> {
42*238ab3e7SAndroid Build Coastguard Worker     apply(plugin = "org.jetbrains.kotlin.kapt")
43*238ab3e7SAndroid Build Coastguard Worker   }
44*238ab3e7SAndroid Build Coastguard Worker   KSP -> {
45*238ab3e7SAndroid Build Coastguard Worker     apply(plugin = "com.google.devtools.ksp")
46*238ab3e7SAndroid Build Coastguard Worker   }
47*238ab3e7SAndroid Build Coastguard Worker }
48*238ab3e7SAndroid Build Coastguard Worker 
<lambda>null49*238ab3e7SAndroid Build Coastguard Worker tasks.withType<Test>().configureEach {
50*238ab3e7SAndroid Build Coastguard Worker   // ExtendsPlatformClassWithProtectedField tests a case where we set a protected ByteArrayOutputStream.buf field
51*238ab3e7SAndroid Build Coastguard Worker   jvmArgs("--add-opens=java.base/java.io=ALL-UNNAMED")
52*238ab3e7SAndroid Build Coastguard Worker }
53*238ab3e7SAndroid Build Coastguard Worker 
54*238ab3e7SAndroid Build Coastguard Worker val useWError = findProperty("kotlinLanguageVersion")?.toString()
55*238ab3e7SAndroid Build Coastguard Worker   ?.startsWith("1.5")
56*238ab3e7SAndroid Build Coastguard Worker   ?: false
<lambda>null57*238ab3e7SAndroid Build Coastguard Worker tasks.withType<KotlinCompile>().configureEach {
58*238ab3e7SAndroid Build Coastguard Worker   kotlinOptions {
59*238ab3e7SAndroid Build Coastguard Worker     allWarningsAsErrors = useWError
60*238ab3e7SAndroid Build Coastguard Worker     @Suppress("SuspiciousCollectionReassignment")
61*238ab3e7SAndroid Build Coastguard Worker     freeCompilerArgs += listOf(
62*238ab3e7SAndroid Build Coastguard Worker       "-opt-in=kotlin.ExperimentalStdlibApi"
63*238ab3e7SAndroid Build Coastguard Worker     )
64*238ab3e7SAndroid Build Coastguard Worker   }
65*238ab3e7SAndroid Build Coastguard Worker }
66*238ab3e7SAndroid Build Coastguard Worker 
<lambda>null67*238ab3e7SAndroid Build Coastguard Worker dependencies {
68*238ab3e7SAndroid Build Coastguard Worker   when (testMode) {
69*238ab3e7SAndroid Build Coastguard Worker     REFLECT -> {
70*238ab3e7SAndroid Build Coastguard Worker       // Default to KSP in this case, this is a CI-only thing
71*238ab3e7SAndroid Build Coastguard Worker       "kspTest"(project(":moshi-kotlin-codegen"))
72*238ab3e7SAndroid Build Coastguard Worker     }
73*238ab3e7SAndroid Build Coastguard Worker     KAPT -> {
74*238ab3e7SAndroid Build Coastguard Worker       "kaptTest"(project(":moshi-kotlin-codegen"))
75*238ab3e7SAndroid Build Coastguard Worker     }
76*238ab3e7SAndroid Build Coastguard Worker     KSP -> {
77*238ab3e7SAndroid Build Coastguard Worker       "kspTest"(project(":moshi-kotlin-codegen"))
78*238ab3e7SAndroid Build Coastguard Worker     }
79*238ab3e7SAndroid Build Coastguard Worker   }
80*238ab3e7SAndroid Build Coastguard Worker   testImplementation(project(":moshi"))
81*238ab3e7SAndroid Build Coastguard Worker   testImplementation(project(":moshi-kotlin"))
82*238ab3e7SAndroid Build Coastguard Worker   testImplementation(project(":kotlin:tests:extra-moshi-test-module"))
83*238ab3e7SAndroid Build Coastguard Worker   testImplementation(kotlin("reflect"))
84*238ab3e7SAndroid Build Coastguard Worker   testImplementation(libs.junit)
85*238ab3e7SAndroid Build Coastguard Worker   testImplementation(libs.assertj)
86*238ab3e7SAndroid Build Coastguard Worker   testImplementation(libs.truth)
87*238ab3e7SAndroid Build Coastguard Worker }
88