@@ -20,12 +20,14 @@ import java.net.HttpURLConnection
2020import java.net.URL
2121import java.security.MessageDigest
2222import java.util.regex.Pattern
23+ import javax.inject.Inject
2324import kotlin.time.Duration.Companion.seconds
2425import kotlin.time.DurationUnit
2526import kotlin.time.toDuration
2627import org.gradle.api.DefaultTask
2728import org.gradle.api.Task
2829import org.gradle.api.file.DirectoryProperty
30+ import org.gradle.api.file.FileSystemOperations
2931import org.gradle.api.file.RegularFileProperty
3032import org.gradle.api.provider.Property
3133import org.gradle.api.tasks.Input
@@ -34,6 +36,7 @@ import org.gradle.api.tasks.Internal
3436import org.gradle.api.tasks.Optional
3537import org.gradle.api.tasks.OutputFile
3638import org.gradle.api.tasks.TaskAction
39+ import org.gradle.process.ExecOperations
3740
3841abstract class DataConnectExecutableDownloadTask : DefaultTask () {
3942
@@ -47,6 +50,10 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
4750
4851 @get:OutputFile abstract val outputFile: RegularFileProperty
4952
53+ @get:Inject abstract val fileSystemOperations: FileSystemOperations
54+
55+ @get:Inject abstract val execOperations: ExecOperations
56+
5057 @TaskAction
5158 fun run () {
5259 val inputFile: File ? = inputFile.orNull?.asFile
@@ -62,7 +69,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
6269 logger.info(" outputFile: {}" , outputFile)
6370
6471 logger.info(" Deleting build directory: {}" , buildDirectory)
65- project .delete(buildDirectory)
72+ fileSystemOperations .delete { it.delete (buildDirectory) }
6673
6774 if (inputFile != = null && version != = null ) {
6875 throw DataConnectGradleException (
@@ -74,7 +81,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
7481 } else if (inputFile != = null ) {
7582 runWithFile(inputFile = inputFile, outputFile = outputFile)
7683 } else if (version != = null ) {
77- downloadDataConnectExecutable(version, operatingSystem, outputFile)
84+ downloadDataConnectExecutable(version, operatingSystem, outputFile, execOperations )
7885 verifyOutputFile(outputFile, operatingSystem, version)
7986 } else {
8087 throw DataConnectGradleException (
@@ -184,7 +191,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
184191 }
185192
186193 logger.info(" Copying {} to {}" , inputFile, outputFile)
187- project .copy {
194+ fileSystemOperations .copy {
188195 it.from(inputFile)
189196 it.into(outputFile.parentFile)
190197 it.rename(Pattern .quote(inputFile.name), Pattern .quote(outputFile.name))
@@ -195,7 +202,8 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
195202 fun Task.downloadDataConnectExecutable (
196203 version : String ,
197204 operatingSystem : OperatingSystem ,
198- outputFile : File
205+ outputFile : File ,
206+ execOperations : ExecOperations
199207 ) {
200208 val osName =
201209 when (operatingSystem) {
@@ -208,7 +216,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
208216 URL (" https://storage.googleapis.com/firemat-preview-drop/emulator/$downloadFileName " )
209217
210218 logger.info(" Downloading {} to {}" , url, outputFile)
211- project.mkdir( outputFile.parentFile)
219+ outputFile.parentFile.mkdirs( )
212220
213221 val connection = url.openConnection() as HttpURLConnection
214222 connection.requestMethod = " GET"
@@ -251,7 +259,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
251259 }
252260
253261 if (operatingSystem != OperatingSystem .Windows ) {
254- project .exec { execSpec ->
262+ execOperations .exec { execSpec ->
255263 execSpec.run {
256264 executable = " chmod"
257265 args = listOf (" a+x" , outputFile.absolutePath)
0 commit comments