aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
0 files changed, 0 insertions, 0 deletions
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
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.4'
    }
}

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.apache.maven:maven-ant-tasks:2.1.3'
    testCompile ('org.robolectric:robolectric:2.4') {
        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)
}