sourceSets.test { java.srcDirs = ['source'] resources.srcDirs = [ 'data', project(':com.ibm.wala.core.testdata').compileTestJava, ] } import de.undercouch.gradle.tasks.download.Download 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 } task downloadAndroidSdk(type: 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 installAndroidPlatforms(type: Exec, dependsOn: unpackAndroidSdk) { def manager = "${unpackAndroidSdk.outputs.files[0]}/tools/bin/sdkmanager" ext.version = 'android-26' commandLine 'sh', '-ceu', "yes 2>/dev/null | $manager platforms\\;$version >/dev/null" inputs.dir "${unpackAndroidSdk.outputs.files[0]}/tools" outputs.dir "${unpackAndroidSdk.outputs.files[0]}/platforms" } task copyAndroidJar(type: Sync, dependsOn: installAndroidPlatforms) { from "${installAndroidPlatforms.outputs.files[0]}/${installAndroidPlatforms.version}/android.jar" 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 files("${copyAndroidJar.outputs.files[0]}/android.jar") } processTestResources { dependsOn cloneDroidBench from copyAndroidJar 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' }