169 lines
4.4 KiB
Groovy
169 lines
4.4 KiB
Groovy
sourceSets.test {
|
|
java.srcDirs = ['source']
|
|
resources.srcDirs = [
|
|
'data',
|
|
project(':com.ibm.wala.core.testdata').compileTestJava,
|
|
]
|
|
}
|
|
|
|
def osName = System.getProperty('os.name')
|
|
ext.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
|
|
}
|
|
|
|
class InstallAndroidSdkComponent extends DefaultTask {
|
|
@Input def component
|
|
@Input def version
|
|
@Internal def sdkRoot = project.files(project.tasks.unpackAndroidSdk).singleFile
|
|
|
|
@Internal getSdkFile(subpath) {
|
|
return new File(sdkRoot, subpath)
|
|
}
|
|
|
|
@InputDirectory getTools() {
|
|
return getSdkFile('tools')
|
|
}
|
|
|
|
@OutputDirectory getInstallationDirectory() {
|
|
return getSdkFile(component)
|
|
}
|
|
|
|
@TaskAction
|
|
install() {
|
|
def manager = new File(tools, 'bin/sdkmanager')
|
|
project.exec {
|
|
if (project.isWindows)
|
|
commandLine 'PowerShell', '-Command', "echo y | $manager $component`;$version >\$null"
|
|
else
|
|
commandLine 'sh', '-ceu', "yes 2>/dev/null | $manager $component\\;$version >/dev/null"
|
|
}
|
|
}
|
|
}
|
|
|
|
task installAndroidBuildTools(type: InstallAndroidSdkComponent, dependsOn: unpackAndroidSdk) {
|
|
component 'build-tools'
|
|
version '26.0.2'
|
|
}
|
|
|
|
task copyDxJar(type: Sync, dependsOn: installAndroidBuildTools) {
|
|
from "${files(installAndroidBuildTools).singleFile}/${installAndroidBuildTools.version}/lib/dx.jar"
|
|
into 'lib'
|
|
}
|
|
|
|
clean.dependsOn cleanCopyDxJar
|
|
|
|
compileTestJava.dependsOn copyDxJar
|
|
afterEclipseBuildshipImport.dependsOn copyDxJar
|
|
|
|
task installAndroidPlatforms(type: InstallAndroidSdkComponent, dependsOn: unpackAndroidSdk) {
|
|
component 'platforms'
|
|
version "android-${installAndroidBuildTools.version.tokenize('.')[0]}"
|
|
}
|
|
|
|
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'
|
|
}
|
|
|
|
clean.dependsOn cleanDownloadSampleCup
|
|
|
|
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 cleanDownloadSampleLex
|
|
|
|
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 {
|
|
from copyAndroidJar
|
|
from downloadSampleCup
|
|
from downloadSampleLex
|
|
|
|
def testdata = project(':com.ibm.wala.core.testdata')
|
|
from testdata.collectJLex
|
|
from testdata.collectTestDataA
|
|
from testdata.downloadJavaCup
|
|
}
|
|
|
|
if (isWindows)
|
|
test.exclude '**/droidbench/**'
|
|
else
|
|
processTestResources.dependsOn unpackDroidBench
|
|
|
|
test {
|
|
maxHeapSize = '800M'
|
|
}
|
|
|
|
task cleanTest(type: Delete) {
|
|
delete(
|
|
'parser.java',
|
|
'report',
|
|
'sym.java',
|
|
)
|
|
}
|
|
|
|
clean.dependsOn cleanTest
|