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

138 lines
4.2 KiB
Groovy
Raw Normal View History

sourceSets.test {
java.srcDirs = ['source']
resources.srcDirs = [
'data',
project(':com.ibm.wala.core.testdata').compileTestJava,
]
}
def osName = System.getProperty('os.name')
def isWindows = osName.startsWith('Windows ')
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 (osName) {
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 = new File(androidSdk, 'tools/bin/sdkmanager')
ext.version = '26.0.2'
if (isWindows)
commandLine 'PowerShell', '-Command', "echo y | $manager build-tools`;$version >\$null"
else
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 androidSdk = files(unpackAndroidSdk).singleFile
def manager = new File(androidSdk, 'tools/bin/sdkmanager')
ext.version = "android-${installAndroidBuildTools.version.tokenize('.')[0]}"
if (isWindows)
commandLine 'PowerShell', '-Command', "echo y | $manager platforms`;$version >\$null"
else
commandLine 'sh', '-ceu', "yes 2>/dev/null | $manager platforms\\;$version >/dev/null"
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'
}