MinimalBible/app-test/build.gradle
2014-11-21 18:01:35 -05:00

84 lines
2.3 KiB
Groovy

apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'jacoco'
apply plugin: 'com.github.kt3k.coveralls'
evaluationDependsOn(":app")
buildscript {
repositories {
mavenCentral()
}
dependencies {
// Version lock for https://github.com/kt3k/coveralls-gradle-plugin/issues/27
classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.0.1x'
}
}
repositories {
maven {
url 'http://repository.jetbrains.com/repo'
}
}
test {
testLogging {
exceptionFormat = 'full'
}
}
def androidModule = project(':app')
def firstVariant = androidModule.android.applicationVariants.toList().first()
dependencies {
compile androidModule
testCompile 'junit:junit:4.+'
testCompile 'org.robolectric:robolectric:+'
testCompile 'org.mockito:mockito-all:+'
testCompile 'com.jayway.awaitility:awaitility:+'
testCompile 'org.jetbrains.spek:spek:+'
testCompile firstVariant.javaCompile.classpath
testCompile firstVariant.javaCompile.outputs.files
testCompile files(androidModule.plugins.findPlugin("com.android.application").getBootClasspath())
}
jacocoTestReport {
/*
Alright, setting up Jacoco the right way is massively confusing.
Normally, you'd use something like additionalClassDirs to add the folders you need.
However, we want to exclude the android/ folder, and likely will need something else
in the future. In order to do this though, we need the doFirst block. See SO here:
http://stackoverflow.com/a/17411305/1454178
Additionally, to properly exclude, we need to run that code outside the doFirst block.
No clue why this is, but please don't change this without extensive testing.
*/
def jacocoExcludes = [
"android/**/*"
]
firstVariant.javaCompile.exclude(jacocoExcludes).outputs.files
doFirst {
sourceDirectories = files(androidModule.android.sourceSets.main.java.srcDirs)
classDirectories = firstVariant.javaCompile.outputs.files
}
// Back to your regularly scheduled Jacoco
reports {
xml.enabled true
csv.enabled false
html.destination "${buildDir}/jacocoHtml"
}
}
coveralls {
sourceDirs = files(androidModule.android.sourceSets.main.java.srcDirs).files.absolutePath
}
tasks.withType(Test) {
scanForTestClasses = false
include "**/*Test.class"
}