sourceSets.test { java.srcDirs = ['source'] resources.srcDirs = [ 'data', project(':com.ibm.wala.core.testdata').compileTestJava, ] } task downloadDroidBench(type: VerifiedDownload) { src 'https://codeload.github.com/secure-software-engineering/DroidBench/zip/DroidBench_2.0' dest "$temporaryDir/DroidBench_2.0.zip" checksum '16726a48329835140e14f18470a1b4a3' } task unpackDroidBench(type: Sync, dependsOn: downloadDroidBench) { from(zipTree(files(downloadDroidBench).singleFile)) { eachFile { relativePath new RelativePath(!directory, relativePath.segments[1..-1] as String[]) } } into '/tmp/DroidBench' includeEmptyDirs false } task downloadAndroidSdk(type: VerifiedDownload) { def sdkOs switch (System.getProperty('os.name')) { case ~/Linux/: sdkOs = 'linux' checksum '444e22ce8ca0f67353bda4b85175ed3731cae3ffa695ca18119cbacef1c1bea0' break case ~/Mac OS X/: sdkOs = 'darwin' checksum '4a81754a760fce88cba74d69c364b05b31c53d57b26f9f82355c61d5fe4b9df9' break case ~/Windows.*/: sdkOs = 'windows' checksum '7f6037d3a7d6789b4fdc06ee7af041e071e9860c51f66f7a4eb5913df9871fd2' break } def archive = "sdk-tools-$sdkOs-3859397.zip" src "https://dl.google.com/android/repository/$archive" dest "$temporaryDir/$archive" algorithm 'SHA-256' } task unpackAndroidSdk(type: Sync, dependsOn: downloadAndroidSdk) { from zipTree(files(downloadAndroidSdk).singleFile) into temporaryDir } // TODO: factor out common code in installAndroidBuildTools and installAndroidPlatforms task installAndroidBuildTools(type: Exec, dependsOn: unpackAndroidSdk) { def androidSdk = files(unpackAndroidSdk).singleFile def manager = "$androidSdk/tools/bin/sdkmanager" ext.version = '26.0.2' commandLine 'sh', '-ceu', "yes 2>/dev/null | $manager build-tools\\;$version >/dev/null" inputs.dir "$androidSdk/tools" outputs.dir "$androidSdk/build-tools" } task copyDxJar(type: Sync, dependsOn: installAndroidBuildTools) { from "${files(installAndroidBuildTools).singleFile}/${installAndroidBuildTools.version}/lib/dx.jar" into 'lib' } // TODO: factor out common code in installAndroidBuildTools and installAndroidPlatforms task installAndroidPlatforms(type: Exec, dependsOn: unpackAndroidSdk) { def manager = "${files(unpackAndroidSdk).singleFile}/tools/bin/sdkmanager" ext.version = "android-${installAndroidBuildTools.version.tokenize('.')[0]}" commandLine 'sh', '-ceu', "yes 2>/dev/null | $manager platforms\\;$version >/dev/null" def androidSdk = files(unpackAndroidSdk).singleFile inputs.dir "$androidSdk/tools" outputs.dir "$androidSdk/platforms" } task copyAndroidJar(type: Sync, dependsOn: installAndroidPlatforms) { from "${files(installAndroidPlatforms).singleFile}/${installAndroidPlatforms.version}/android.jar" into temporaryDir } task downloadSampleCup(type: VerifiedDownload) { src 'http://www.cc.gatech.edu/gvu/people/faculty/hudson/java_cup/classes.v0.9e/java_cup/parser.cup' dest 'data/sample.cup' checksum '76b549e7c6e802b811a374248175ecf4' } task downloadSampleLex(type: VerifiedDownload) { src 'https://www.cs.princeton.edu/~appel/modern/java/JLex/current/sample.lex' dest 'data/sample.lex' checksum 'ae887758b2657981d023a72a165da830' } clean.dependsOn cleanCopyDxJar compileTestJava.dependsOn copyDxJar dependencies { testCompile( 'junit:junit:4.11', 'org.osgi:org.osgi.core:4.2.0', files("${files(copyDxJar).singleFile}/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("${files(copyAndroidJar).singleFile}/android.jar") } processTestResources { dependsOn unpackDroidBench from copyAndroidJar from downloadSampleCup from downloadSampleLex def testdata = project(':com.ibm.wala.core.testdata') from testdata.collectJLex from testdata.collectTestDataA from testdata.downloadJavaCup } test { maxHeapSize = '800M' }