WALA/com.ibm.wala.dalvik.test/build.gradle

98 lines
3.1 KiB
Groovy

sourceSets.test {
java.srcDirs = ['source']
resources.srcDirs = [
'data',
project(':com.ibm.wala.core.testdata').compileTestJava,
]
}
task cloneDroidBench(type: Exec) {
// TODO: download to somewhere private to this build tree; update code that looks in "/tmp" accordingly
def destDir = file('/tmp/DroidBench')
inputs.property('repository', 'https://github.com/secure-software-engineering/DroidBench.git')
outputs.dirs destDir
doFirst { delete destDir }
commandLine 'git', 'clone', '--depth=1', inputs.properties.repository, destDir
// TODO: should check out a specific tag or hash
}
// TODO: can Gradle's dependency system manage this download for us?
task downloadAndroidJar(type: de.undercouch.gradle.tasks.download.Download) {
src 'http://central.maven.org/maven2/com/google/android/android/4.1.1.4/android-4.1.1.4.jar'
dest new File(temporaryDir, 'android.jar')
overwrite false
}
task verifyAndroidJar(type: VerifyWithStamp, dependsOn: downloadAndroidJar) {
src files(downloadAndroidJar)[0]
checksum '88be04f4d84d58fadee2e780a322fdb9'
}
task downloadAndroidSdk(type: de.undercouch.gradle.tasks.download.Download) {
src 'https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip'
dest temporaryDir
overwrite false
}
task verifyAndroidSdk(type: VerifyWithStamp, dependsOn: downloadAndroidSdk) {
src files(downloadAndroidSdk)[0]
algorithm 'SHA-256'
checksum '444e22ce8ca0f67353bda4b85175ed3731cae3ffa695ca18119cbacef1c1bea0'
}
task unpackAndroidSdk(type: Sync, dependsOn: verifyAndroidSdk) {
from zipTree(verifyAndroidSdk.src)
into temporaryDir
}
task installAndroidBuildTools(type: Exec, dependsOn: unpackAndroidSdk) {
def manager = "${unpackAndroidSdk.outputs.files[0]}/tools/bin/sdkmanager"
ext.version = '26.0.2'
commandLine 'sh', '-ceu', "yes 2>/dev/null | $manager build-tools\\;$version >/dev/null"
inputs.dir "${unpackAndroidSdk.outputs.files[0]}/tools"
outputs.dir "${unpackAndroidSdk.outputs.files[0]}/build-tools"
}
task copyDxJar(type: Sync, dependsOn: installAndroidBuildTools) {
from "${installAndroidBuildTools.outputs.files[0]}/${installAndroidBuildTools.version}/lib/dx.jar"
into 'lib'
}
clean.dependsOn cleanCopyDxJar
compileTestJava.dependsOn copyDxJar
dependencies {
testCompile(
'junit:junit:4.11',
'org.osgi:org.osgi.core:4.2.0',
files("${copyDxJar.outputs.files[0]}/dx.jar"),
project(':com.ibm.wala.core'),
project(':com.ibm.wala.dalvik'),
project(':com.ibm.wala.shrike'),
project(':com.ibm.wala.util'),
project(configuration: 'testArchives', path: ':com.ibm.wala.core.tests'),
)
testRuntime 'com.google.android:android:4.1.1.4'
}
processTestResources {
dependsOn cloneDroidBench
dependsOn verifyAndroidJar
from downloadAndroidJar
def testdata = project(':com.ibm.wala.core.testdata')
dependsOn testdata.verifyJavaCup
from testdata.collectJLex
from testdata.downloadJavaCup
}
test {
maxHeapSize = '800M'
// https://github.com/liblit/WALA/issues/5 and possibly https://github.com/wala/WALA/issues/268
exclude '**/DynamicDalvikComparisonJavaLibsTest.class'
exclude '**/DynamicDalvikComparisonTestForAndroidLibs.class'
}