Skip to content

Instantly share code, notes, and snippets.

@Ghedeon
Created July 22, 2015 12:40
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Ghedeon/79db271a91283f5a7109 to your computer and use it in GitHub Desktop.
Save Ghedeon/79db271a91283f5a7109 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
}
@Ghedeon
Copy link
Author

Ghedeon commented Jul 22, 2015

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

@bundarachada
Copy link

Nice script =)

@azizbekian
Copy link

Works nice up until now with the latest Android APIs.

@Turnsole
Copy link

This is great. Working still for the Android Gradle plugin version 3.0.1.

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