net.twisterrob.gradle
net.twisterrob.gradle copied to clipboard
Serialize androidTest task execution in a better way
trafficstars
Curtesy of @lwasyl from https://androidstudygroup.slack.com/archives/C03KKLGC2/p1617712300160800
https://docs.gradle.org/current/userguide/build_services.html
// in project root module's build.gradle
tasks.register("connectedCheck").configure {
dependsOn(subprojects.collect { "${it.path}:connectedCheck" })
}
evaluationDependsOnChildren() // TODO somehow remove this
allprojects \
.collectMany { it.tasks.withType(com.android.build.gradle.internal.tasks.DeviceProviderInstrumentTestTask) } \
.inject { prev, curr -> curr.configure { it.mustRunAfter prev }; return prev }
abstract class ConnectedTaskLimiter : BuildService<BuildServiceParameters.None>
gradle.sharedServices.registerIfAbsent("connectedTaskLimiter", ConnectedTaskLimiter::class.java) {
maxParallelUsages.set(1)
}
allprojects {
tasks.configureEach {
if (name.startsWith("connected") && name.endsWith("AndroidTest")) {
usesService(gradle.sharedServices.registrations.getAt("connectedTaskLimiter").service)
}
}
}
Example usage TWiStErRob/net.twisterrob.colorfilters#39