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 Workerplugins { 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 Workertasks.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 Workertasks.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 Workerdependencies { 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