diff --git a/.github/workflows/dataconnect.yml b/.github/workflows/dataconnect.yml index 3f324773e97..aef25709b06 100644 --- a/.github/workflows/dataconnect.yml +++ b/.github/workflows/dataconnect.yml @@ -134,6 +134,7 @@ jobs: ./gradlew \ --profile \ + --warning-mode all \ ${{ (inputs.gradleInfoLog && '--info') || '' }} \ :firebase-dataconnect:assembleDebugAndroidTest @@ -222,7 +223,7 @@ jobs: emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: true script: | - set -eux && ./gradlew ${{ (inputs.gradleInfoLog && '--info') || '' }} :firebase-dataconnect:connectedCheck :firebase-dataconnect:connectors:connectedCheck + set -eux && ./gradlew --warning-mode all ${{ (inputs.gradleInfoLog && '--info') || '' }} :firebase-dataconnect:connectedCheck :firebase-dataconnect:connectors:connectedCheck - name: Upload Log Files uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 diff --git a/.github/workflows/dataconnect_demo_app.yml b/.github/workflows/dataconnect_demo_app.yml index 6cbae77ac11..7aeed0c0b90 100644 --- a/.github/workflows/dataconnect_demo_app.yml +++ b/.github/workflows/dataconnect_demo_app.yml @@ -108,6 +108,7 @@ jobs: --project-dir firebase-dataconnect/demo \ ${{ (inputs.gradleInfoLog && '--info') || '' }} \ --profile \ + --warning-mode all \ -PdataConnect.demo.firebaseCommand=${{ env.FDC_FIREBASE_COMMAND }} \ assemble test @@ -115,6 +116,7 @@ jobs: run: | set -x firebase-dataconnect/demo/gradlew \ + --warning-mode all \ --project-dir firebase-dataconnect/demo \ ${{ (inputs.gradleInfoLog && '--info') || '' }} \ dokkaGeneratePublicationHtml @@ -176,6 +178,7 @@ jobs: run: | set -x firebase-dataconnect/demo/gradlew \ + --warning-mode all \ --project-dir firebase-dataconnect/demo \ --no-daemon \ ${{ (inputs.gradleInfoLog && '--info') || '' }} \ diff --git a/firebase-dataconnect/androidTestutil/androidTestutil.gradle.kts b/firebase-dataconnect/androidTestutil/androidTestutil.gradle.kts index 973ae52ad16..f0ce9b28538 100644 --- a/firebase-dataconnect/androidTestutil/androidTestutil.gradle.kts +++ b/firebase-dataconnect/androidTestutil/androidTestutil.gradle.kts @@ -14,7 +14,7 @@ * limitations under the License. */ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id("com.android.library") @@ -31,14 +31,16 @@ android { compileSdk = compileSdkVersion defaultConfig { minSdk = minSdkVersion - targetSdk = targetSdkVersion testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - kotlinOptions { jvmTarget = "1.8" } + + @Suppress("UnstableApiUsage") testOptions { targetSdk = targetSdkVersion } + + lint { targetSdk = targetSdkVersion } packaging { resources { @@ -48,6 +50,13 @@ android { } } +kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_1_8 + optIn.add("kotlin.RequiresOptIn") + } +} + dependencies { implementation(project(":firebase-dataconnect")) implementation(project(":firebase-dataconnect:testutil")) @@ -66,7 +75,3 @@ dependencies { implementation(libs.truth) implementation(libs.turbine) } - -tasks.withType().all { - kotlinOptions { freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn") } -} diff --git a/firebase-dataconnect/connectors/connectors.gradle.kts b/firebase-dataconnect/connectors/connectors.gradle.kts index 82b46f040f1..3244c8a39f3 100644 --- a/firebase-dataconnect/connectors/connectors.gradle.kts +++ b/firebase-dataconnect/connectors/connectors.gradle.kts @@ -15,7 +15,9 @@ */ import com.google.firebase.dataconnect.gradle.plugin.UpdateDataConnectExecutableVersionsTask -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.gradle.kotlin.dsl.withType +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile plugins { id("com.android.library") @@ -33,23 +35,24 @@ android { compileSdk = compileSdkVersion defaultConfig { minSdk = minSdkVersion - targetSdk = targetSdkVersion testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - kotlinOptions { jvmTarget = "1.8" } @Suppress("UnstableApiUsage") testOptions { + targetSdk = targetSdkVersion unitTests { isIncludeAndroidResources = true isReturnDefaultValues = true } } + lint { targetSdk = targetSdkVersion } + packaging { resources { excludes.add("META-INF/LICENSE.md") @@ -63,6 +66,13 @@ android { } } +kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_1_8 + optIn.add("kotlin.RequiresOptIn") + } +} + dependencies { implementation(project(":firebase-dataconnect")) implementation(libs.kotlinx.coroutines.core) @@ -92,21 +102,15 @@ dependencies { androidTestImplementation(libs.turbine) } -tasks.withType().all { - kotlinOptions { freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn") } -} - // Enable Kotlin "Explicit API Mode". This causes the Kotlin compiler to fail if any // classes, methods, or properties have implicit `public` visibility. This check helps // avoid accidentally leaking elements into the public API, requiring that any public // element be explicitly declared as `public`. // https://github.com/Kotlin/KEEP/blob/master/proposals/explicit-api-mode.md // https://chao2zhang.medium.com/explicit-api-mode-for-kotlin-on-android-b8264fdd76d1 -tasks.withType().all { +tasks.withType().configureEach { if (!name.contains("test", ignoreCase = true)) { - if (!kotlinOptions.freeCompilerArgs.contains("-Xexplicit-api=strict")) { - kotlinOptions.freeCompilerArgs += "-Xexplicit-api=strict" - } + compilerOptions.freeCompilerArgs.add("-Xexplicit-api=strict") } } diff --git a/firebase-dataconnect/demo/build.gradle.kts b/firebase-dataconnect/demo/build.gradle.kts index 8b192735038..6ea3cea50fc 100644 --- a/firebase-dataconnect/demo/build.gradle.kts +++ b/firebase-dataconnect/demo/build.gradle.kts @@ -16,6 +16,7 @@ import com.android.build.api.variant.ApplicationAndroidComponentsExtension import java.nio.charset.StandardCharsets +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { // Use whichever versions of these dependencies suit your application. @@ -83,7 +84,13 @@ android { isCoreLibraryDesugaringEnabled = true } buildFeatures.viewBinding = true - kotlinOptions.jvmTarget = "1.8" +} + +kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_1_8 + optIn.add("kotlin.RequiresOptIn") + } } spotless { @@ -115,7 +122,7 @@ spotless { target("**/*.xml") targetExclude("build/") trimTrailingWhitespace() - indentWithSpaces(2) + leadingTabsToSpaces(2) endWithNewline() } } diff --git a/firebase-dataconnect/firebase-dataconnect.gradle.kts b/firebase-dataconnect/firebase-dataconnect.gradle.kts index c4f115bece9..68413d88cb5 100644 --- a/firebase-dataconnect/firebase-dataconnect.gradle.kts +++ b/firebase-dataconnect/firebase-dataconnect.gradle.kts @@ -14,7 +14,9 @@ * limitations under the License. */ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.gradle.kotlin.dsl.withType +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile plugins { id("firebase-library") @@ -43,7 +45,6 @@ android { compileSdk = compileSdkVersion defaultConfig { minSdk = minSdkVersion - targetSdk = targetSdkVersion multiDexEnabled = true testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -51,7 +52,6 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - kotlinOptions { jvmTarget = "1.8" } @Suppress("UnstableApiUsage") testOptions { @@ -72,6 +72,13 @@ android { } } +kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_1_8 + optIn.add("kotlin.RequiresOptIn") + } +} + protobuf { protoc { artifact = "${libs.protoc.get()}" } plugins { @@ -144,20 +151,14 @@ dependencies { androidTestImplementation(libs.turbine) } -tasks.withType().all { - kotlinOptions { freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn") } -} - // Enable Kotlin "Explicit API Mode". This causes the Kotlin compiler to fail if any // classes, methods, or properties have implicit `public` visibility. This check helps // avoid accidentally leaking elements into the public API, requiring that any public // element be explicitly declared as `public`. // https://github.com/Kotlin/KEEP/blob/master/proposals/explicit-api-mode.md // https://chao2zhang.medium.com/explicit-api-mode-for-kotlin-on-android-b8264fdd76d1 -tasks.withType().all { +tasks.withType().configureEach { if (!name.contains("test", ignoreCase = true)) { - if (!kotlinOptions.freeCompilerArgs.contains("-Xexplicit-api=strict")) { - kotlinOptions.freeCompilerArgs += "-Xexplicit-api=strict" - } + compilerOptions.freeCompilerArgs.add("-Xexplicit-api=strict") } } diff --git a/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectExecutableDownloadTask.kt b/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectExecutableDownloadTask.kt index ca15458e4c0..10e71c5303c 100644 --- a/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectExecutableDownloadTask.kt +++ b/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectExecutableDownloadTask.kt @@ -20,12 +20,14 @@ import java.net.HttpURLConnection import java.net.URL import java.security.MessageDigest import java.util.regex.Pattern +import javax.inject.Inject import kotlin.time.Duration.Companion.seconds import kotlin.time.DurationUnit import kotlin.time.toDuration import org.gradle.api.DefaultTask import org.gradle.api.Task import org.gradle.api.file.DirectoryProperty +import org.gradle.api.file.FileSystemOperations import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Input @@ -34,6 +36,7 @@ import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Optional import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction +import org.gradle.process.ExecOperations abstract class DataConnectExecutableDownloadTask : DefaultTask() { @@ -47,6 +50,10 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() { @get:OutputFile abstract val outputFile: RegularFileProperty + @get:Inject abstract val fileSystemOperations: FileSystemOperations + + @get:Inject abstract val execOperations: ExecOperations + @TaskAction fun run() { val inputFile: File? = inputFile.orNull?.asFile @@ -62,7 +69,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() { logger.info("outputFile: {}", outputFile) logger.info("Deleting build directory: {}", buildDirectory) - project.delete(buildDirectory) + fileSystemOperations.delete { it.delete(buildDirectory) } if (inputFile !== null && version !== null) { throw DataConnectGradleException( @@ -74,7 +81,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() { } else if (inputFile !== null) { runWithFile(inputFile = inputFile, outputFile = outputFile) } else if (version !== null) { - downloadDataConnectExecutable(version, operatingSystem, outputFile) + downloadDataConnectExecutable(version, operatingSystem, outputFile, execOperations) verifyOutputFile(outputFile, operatingSystem, version) } else { throw DataConnectGradleException( @@ -184,7 +191,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() { } logger.info("Copying {} to {}", inputFile, outputFile) - project.copy { + fileSystemOperations.copy { it.from(inputFile) it.into(outputFile.parentFile) it.rename(Pattern.quote(inputFile.name), Pattern.quote(outputFile.name)) @@ -195,7 +202,8 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() { fun Task.downloadDataConnectExecutable( version: String, operatingSystem: OperatingSystem, - outputFile: File + outputFile: File, + execOperations: ExecOperations ) { val osName = when (operatingSystem) { @@ -208,7 +216,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() { URL("https://storage.googleapis.com/firemat-preview-drop/emulator/$downloadFileName") logger.info("Downloading {} to {}", url, outputFile) - project.mkdir(outputFile.parentFile) + outputFile.parentFile.mkdirs() val connection = url.openConnection() as HttpURLConnection connection.requestMethod = "GET" @@ -251,7 +259,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() { } if (operatingSystem != OperatingSystem.Windows) { - project.exec { execSpec -> + execOperations.exec { execSpec -> execSpec.run { executable = "chmod" args = listOf("a+x", outputFile.absolutePath) diff --git a/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectExecutableLauncher.kt b/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectExecutableLauncher.kt index 5d77007c830..fb5c521a5cf 100644 --- a/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectExecutableLauncher.kt +++ b/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectExecutableLauncher.kt @@ -17,6 +17,7 @@ package com.google.firebase.dataconnect.gradle.plugin import java.io.File import org.gradle.api.Task +import org.gradle.process.ExecOperations interface DataConnectExecutableConfig { var outputDirectory: File? @@ -33,6 +34,7 @@ fun Task.runDataConnectExecutable( dataConnectExecutable: File, subCommand: List, configDirectory: File, + execOperations: ExecOperations, configure: DataConnectExecutableConfig.() -> Unit, ) { val config = @@ -48,11 +50,11 @@ fun Task.runDataConnectExecutable( } .apply(configure) - val logFile = config.logFile?.also { project.mkdir(it.parentFile) } + val logFile = config.logFile?.also { it.parentFile.mkdirs() } val logFileStream = logFile?.outputStream() try { - project.exec { execSpec -> + execOperations.exec { execSpec -> execSpec.run { executable(dataConnectExecutable) isIgnoreExitValue = false diff --git a/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectGenerateCodeTask.kt b/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectGenerateCodeTask.kt index c25ae04bd0c..0dc2c66d702 100644 --- a/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectGenerateCodeTask.kt +++ b/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectGenerateCodeTask.kt @@ -81,11 +81,6 @@ abstract class DataConnectGenerateCodeTask : DefaultTask() { logger.info("outputDirectory={}", outputDirectory.absolutePath) logger.info("ktfmtJarFile={}", ktfmtJarFile?.absolutePath) - if (outputDirectory.exists()) { - logger.info("Deleting directory: $outputDirectory") - project.delete(outputDirectory) - } - if (configDirectory === null) { logger.info("No Data Connect config directories found; nothing to do") return @@ -101,6 +96,7 @@ abstract class DataConnectGenerateCodeTask : DefaultTask() { dataConnectExecutable = dataConnectExecutable, subCommand = subCommand, configDirectory = configDirectory, + execOperations = execOperations, ) { when (dataConnectExecutableCallingConvention) { CallingConvention.GRADLE -> this.connectors = connectors @@ -131,11 +127,11 @@ private fun DataConnectGenerateCodeTask.runKtfmt( directory: File, logFile: File, ) { - project.mkdir(logFile.parentFile) + logFile.parentFile.mkdirs() val logFileStream = logFile.outputStream() try { - project.javaexec { execSpec -> + execOperations.javaexec { execSpec -> execSpec.run { classpath(ktfmtJarFile) mainClass.set("com.facebook.ktfmt.cli.Main") diff --git a/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectMergeConfigDirectoriesTask.kt b/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectMergeConfigDirectoriesTask.kt index fd07c5f735e..7c8d359cd3c 100644 --- a/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectMergeConfigDirectoriesTask.kt +++ b/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectMergeConfigDirectoriesTask.kt @@ -17,10 +17,12 @@ package com.google.firebase.dataconnect.gradle.plugin import java.io.File import java.util.Locale +import javax.inject.Inject import org.gradle.api.DefaultTask import org.gradle.api.file.Directory import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.DuplicatesStrategy +import org.gradle.api.file.FileSystemOperations import org.gradle.api.provider.ListProperty import org.gradle.api.tasks.InputFiles import org.gradle.api.tasks.Internal @@ -38,6 +40,8 @@ abstract class DataConnectMergeConfigDirectoriesTask : DefaultTask() { @get:OutputDirectory @get:Optional abstract val mergedDirectory: DirectoryProperty + @get:Inject abstract val fileSystemOperations: FileSystemOperations + @TaskAction fun run() { val defaultConfigDirectories: List = @@ -52,14 +56,14 @@ abstract class DataConnectMergeConfigDirectoriesTask : DefaultTask() { logger.info( "defaultConfigDirectories ({}): {}", defaultConfigDirectories.size, - defaultConfigDirectories.map { it.absolutePath }.joinToString(", ") + defaultConfigDirectories.joinToString(", ") { it.absolutePath } ) logger.info("customConfigDirectory: {}", customConfigDirectory?.absolutePath) logger.info("buildDirectory: {}", buildDirectory.absolutePath) logger.info("mergedDirectory: {}", mergedDirectory?.absolutePath) logger.info("Deleting build directory: {}", buildDirectory) - project.delete(buildDirectory) + fileSystemOperations.delete { it.delete(buildDirectory) } val configDirectories = buildList { @@ -110,7 +114,7 @@ abstract class DataConnectMergeConfigDirectoriesTask : DefaultTask() { existingConfigDirectories.joinToString(", ") { it.absolutePath }, mergedDirectory.absolutePath ) - project.copy { + fileSystemOperations.copy { it.from(existingConfigDirectories) it.into(mergedDirectory) it.duplicatesStrategy = DuplicatesStrategy.FAIL diff --git a/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectRunEmulatorTask.kt b/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectRunEmulatorTask.kt index 04148624e87..d96bd30c182 100644 --- a/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectRunEmulatorTask.kt +++ b/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectRunEmulatorTask.kt @@ -16,6 +16,7 @@ package com.google.firebase.dataconnect.gradle.plugin import java.io.File +import javax.inject.Inject import org.gradle.api.DefaultTask import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.RegularFileProperty @@ -26,6 +27,7 @@ import org.gradle.api.tasks.InputFile import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Optional import org.gradle.api.tasks.TaskAction +import org.gradle.process.ExecOperations abstract class DataConnectRunEmulatorTask : DefaultTask() { @@ -39,6 +41,8 @@ abstract class DataConnectRunEmulatorTask : DefaultTask() { @get:Internal abstract val buildDirectory: DirectoryProperty + @get:Inject abstract val execOperations: ExecOperations + @TaskAction fun run() { val dataConnectExecutable: File = dataConnectExecutable.get().asFile @@ -57,6 +61,7 @@ abstract class DataConnectRunEmulatorTask : DefaultTask() { dataConnectExecutable = dataConnectExecutable, subCommand = listOf("dev"), configDirectory = configDirectory, + execOperations = execOperations, ) { this.listen = "127.0.0.1:9399" this.localConnectionString = postgresConnectionUrl diff --git a/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/UpdateDataConnectExecutableVersionsTask.kt b/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/UpdateDataConnectExecutableVersionsTask.kt index 27f1eb300a4..099324fbc04 100644 --- a/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/UpdateDataConnectExecutableVersionsTask.kt +++ b/firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/UpdateDataConnectExecutableVersionsTask.kt @@ -19,6 +19,7 @@ package com.google.firebase.dataconnect.gradle.plugin import com.google.firebase.dataconnect.gradle.plugin.DataConnectExecutableDownloadTask.Companion.downloadDataConnectExecutable import com.google.firebase.dataconnect.gradle.plugin.DataConnectExecutableDownloadTask.FileInfo import java.io.File +import javax.inject.Inject import kotlin.random.Random import org.gradle.api.DefaultTask import org.gradle.api.file.DirectoryProperty @@ -30,6 +31,7 @@ import org.gradle.api.tasks.InputFile import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Optional import org.gradle.api.tasks.TaskAction +import org.gradle.process.ExecOperations @Suppress("unused") abstract class UpdateDataConnectExecutableVersionsTask : DefaultTask() { @@ -44,6 +46,8 @@ abstract class UpdateDataConnectExecutableVersionsTask : DefaultTask() { @get:Internal abstract val workDirectory: DirectoryProperty + @get:Inject abstract val execOperations: ExecOperations + @TaskAction fun run() { val jsonFile: File = jsonFile.get().asFile @@ -149,7 +153,7 @@ abstract class UpdateDataConnectExecutableVersionsTask : DefaultTask() { val outputFile = File(outputDirectory, "DataConnectToolkit_${version}_${operatingSystem}_$randomId") - downloadDataConnectExecutable(version, operatingSystem, outputFile) + downloadDataConnectExecutable(version, operatingSystem, outputFile, execOperations) logger.info("Calculating SHA512 hash of file: {}", outputFile.absolutePath) val fileInfo = FileInfo.forFile(outputFile) diff --git a/firebase-dataconnect/testutil/testutil.gradle.kts b/firebase-dataconnect/testutil/testutil.gradle.kts index 143da241267..10313cd277a 100644 --- a/firebase-dataconnect/testutil/testutil.gradle.kts +++ b/firebase-dataconnect/testutil/testutil.gradle.kts @@ -14,7 +14,7 @@ * limitations under the License. */ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id("com.android.library") @@ -31,14 +31,16 @@ android { compileSdk = compileSdkVersion defaultConfig { minSdk = minSdkVersion - targetSdk = targetSdkVersion testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - kotlinOptions { jvmTarget = "1.8" } + + @Suppress("UnstableApiUsage") testOptions { targetSdk = targetSdkVersion } + + lint { targetSdk = targetSdkVersion } packaging { resources { @@ -48,6 +50,13 @@ android { } } +kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_1_8 + optIn.add("kotlin.RequiresOptIn") + } +} + dependencies { implementation(project(":firebase-dataconnect")) @@ -68,7 +77,3 @@ dependencies { implementation(libs.testonly.three.ten.abp) implementation(libs.truth) } - -tasks.withType().all { - kotlinOptions { freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn") } -}