mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-24 01:32:16 -05:00
121 lines
4.1 KiB
Groovy
121 lines
4.1 KiB
Groovy
buildscript {
|
|
repositories {
|
|
jcenter()
|
|
}
|
|
|
|
dependencies {
|
|
// NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information
|
|
classpath 'com.novoda:gradle-android-test-plugin:0.10.0'
|
|
}
|
|
}
|
|
|
|
apply plugin: 'java'
|
|
apply plugin: 'android-test'
|
|
apply plugin: 'jacoco'
|
|
|
|
dependencies {
|
|
testCompile 'junit:junit:4.11'
|
|
testCompile 'com.google.android:android:4.1.1.4'
|
|
testCompile('com.squareup:fest-android:1.0.8') { exclude module: 'support-v4' }
|
|
testCompile ('org.robolectric:robolectric:2.3') {
|
|
exclude module: 'classworlds'
|
|
exclude module: 'maven-artifact'
|
|
exclude module: 'maven-artifact-manager'
|
|
exclude module: 'maven-error-diagnostics'
|
|
exclude module: 'maven-model'
|
|
exclude module: 'maven-plugin-registry'
|
|
exclude module: 'maven-profile'
|
|
exclude module: 'maven-project'
|
|
exclude module: 'maven-settings'
|
|
exclude module: 'nekohtml'
|
|
exclude module: 'plexus-container-default'
|
|
exclude module: 'plexus-interpolation'
|
|
exclude module: 'plexus-utils'
|
|
exclude module: 'support-v4' // crazy but my android studio don't like this dependency and to fix it remove .idea and re import project
|
|
exclude module: 'wagon-file'
|
|
exclude module: 'wagon-http-lightweight'
|
|
exclude module: 'wagon-http-shared'
|
|
exclude module: 'wagon-provider-api'
|
|
}
|
|
}
|
|
|
|
test {
|
|
exclude '**/*$*'
|
|
}
|
|
|
|
android {
|
|
projectUnderTest ':OpenKeychain'
|
|
}
|
|
|
|
jacoco {
|
|
toolVersion = "0.7.2.201409121644"
|
|
}
|
|
|
|
|
|
def coverageSourceDirs = [
|
|
'../OpenKeychain/src/main/java',
|
|
'../OpenKeychain/src/gen',
|
|
'../OpenKeychain/build/source/apt/debug',
|
|
'../OpenKeychain/build/source/generated/buildConfig/debug',
|
|
'../OpenKeychain/build/source/generated/r/debug'
|
|
]
|
|
|
|
jacocoTestReport {
|
|
reports {
|
|
xml.enabled = true
|
|
html.destination "${buildDir}/jacocoHtml"
|
|
}
|
|
// class R is used, but usage will not be covered, so ignore this class from report
|
|
classDirectories = fileTree(dir: '../OpenKeychain/build/intermediates/classes/debug/org/sufficientlysecure/keychain', exclude: [ 'R*.class' ])
|
|
additionalSourceDirs = files(coverageSourceDirs)
|
|
executionData = files('build/jacoco/testDebug.exec')
|
|
}
|
|
|
|
// new workaround to force add custom output dirs for android studio
|
|
task addTest {
|
|
def file = file(project.name + ".iml")
|
|
doLast {
|
|
try {
|
|
def parsedXml = (new XmlParser()).parse(file)
|
|
def node = parsedXml.component[1]
|
|
def outputNode = parsedXml.component[1].output[0]
|
|
def outputTestNode = parsedXml.component[1].'output-test'[0]
|
|
def rewrite = false
|
|
|
|
new Node(node, 'sourceFolder', ['url': 'file://$MODULE_DIR$/' + "${it}", 'isTestSource': "true"])
|
|
|
|
if(outputNode == null) {
|
|
new Node(node, 'output', ['url': 'file://$MODULE_DIR$/build/resources/testDebug'])
|
|
} else {
|
|
if(outputNode.attributes['url'] != 'file://$MODULE_DIR$/build/resources/testDebug') {
|
|
outputNode.attributes = ['url': 'file://$MODULE_DIR$/build/resources/testDebug']
|
|
rewrite = true
|
|
}
|
|
}
|
|
|
|
if(outputTestNode == null) {
|
|
new Node(node, 'output-test', ['url': 'file://$MODULE_DIR$/build/test-classes/debug'])
|
|
} else {
|
|
if(outputTestNode.attributes['url'] != 'file://$MODULE_DIR$/build/test-classes/debug') {
|
|
outputTestNode.attributes = ['url': 'file://$MODULE_DIR$/build/test-classes/debug']
|
|
rewrite = true
|
|
}
|
|
}
|
|
|
|
if(rewrite) {
|
|
def writer = new StringWriter()
|
|
new XmlNodePrinter(new PrintWriter(writer)).print(parsedXml)
|
|
file.text = writer.toString()
|
|
}
|
|
} catch (FileNotFoundException e) {
|
|
// iml not found, common on command line only builds
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
// always do the addtest on prebuild
|
|
gradle.projectsEvaluated {
|
|
testDebugClasses.dependsOn(addTest)
|
|
}
|