net.twisterrob.gradle icon indicating copy to clipboard operation
net.twisterrob.gradle copied to clipboard

Serialize androidTest task execution in a better way

Open TWiStErRob opened this issue 4 years ago • 1 comments
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)
        }
    }
}

TWiStErRob avatar Apr 06 '21 13:04 TWiStErRob

Example usage TWiStErRob/net.twisterrob.colorfilters#39

TWiStErRob avatar Mar 07 '22 22:03 TWiStErRob