Skip to content

Instantly share code, notes, and snippets.

@WarrenFaith
Forked from Ghedeon/filter_devices.groovy
Created February 3, 2016 13:51
Show Gist options
  • Save WarrenFaith/e0384a045361b795d4f4 to your computer and use it in GitHub Desktop.
Save WarrenFaith/e0384a045361b795d4f4 to your computer and use it in GitHub Desktop.
Android Gradle (1.3.0-beta4). Filter multiple devices
project.afterEvaluate {
project.("connectedDebugAndroidTest").doFirst {
def originalProvider = deviceProvider
deviceProvider = [
getName : { originalProvider.getName() },
init : { originalProvider.init() },
terminate : { originalProvider.terminate() },
getDevices : { filterDevices(originalProvider.getDevices()) },
getTimeoutInMs: { originalProvider.getTimeoutInMs() },
isConfigured : { originalProvider.isConfigured() },
getMaxThreads : { originalProvider.getMaxThreads() }
] as com.android.builder.testing.api.DeviceProvider
}
}
def filterDevices(connectedDevices) {
def DEVICES_PROPERTY = "devices"
def devices = connectedDevices
if (project.hasProperty(DEVICES_PROPERTY)) {
def devicesSerials = project.getProperties().get(DEVICES_PROPERTY).split(/,/)
devices = connectedDevices.findAll { devicesSerials.contains(it.serialNumber) }
println "[testy] ${!devices.empty ? "Execute on: ${devices.collect { it.serialNumber }}" : "Devices not found"}"
}
devices
}
@WarrenFaith
Copy link
Author

Usage: ./gradlew connectedAndroidTest -Pdevices=<serial_number1>,<serial_number2>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment