1package org.robolectric.gradle 2 3import org.gradle.api.Plugin 4import org.gradle.api.Project 5 6public class AndroidProjectConfigPlugin implements Plugin<Project> { 7 @Override 8 public void apply(Project project) { 9 project.android.testOptions.unitTests.all { 10 // TODO: DRY up code with RoboJavaModulePlugin... 11 testLogging { 12 exceptionFormat "full" 13 showCauses true 14 showExceptions true 15 showStackTraces true 16 showStandardStreams true 17 events = ["failed", "skipped"] 18 } 19 20 minHeapSize = "2048m" 21 maxHeapSize = "8192m" 22 23 if (System.env['GRADLE_MAX_PARALLEL_FORKS'] != null) { 24 maxParallelForks = Integer.parseInt(System.env['GRADLE_MAX_PARALLEL_FORKS']) 25 } 26 27 def forwardedSystemProperties = System.properties 28 .findAll { k,v -> k.startsWith("robolectric.") } 29 .collect { k,v -> "-D$k=$v" } 30 jvmArgs = forwardedSystemProperties 31 jvmArgs += [ 32 '--add-opens=java.base/java.lang=ALL-UNNAMED', 33 '--add-opens=java.base/java.lang.reflect=ALL-UNNAMED', 34 '--add-opens=java.base/java.io=ALL-UNNAMED', 35 '--add-opens=java.base/java.net=ALL-UNNAMED', 36 '--add-opens=java.base/java.security=ALL-UNNAMED', 37 '--add-opens=java.base/java.text=ALL-UNNAMED', 38 '--add-opens=java.base/java.util=ALL-UNNAMED', 39 '--add-opens=java.desktop/java.awt.font=ALL-UNNAMED', 40 '--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED', 41 '--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED', 42 '--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED', 43 ] 44 45 doFirst { 46 if (!forwardedSystemProperties.isEmpty()) { 47 println "Running tests with ${forwardedSystemProperties}" 48 } 49 } 50 } 51 52 project.task('provideBuildClasspath', type: ProvideBuildClasspathTask) { 53 File outDir = new File(project.buildDir, "generated/robolectric") 54 outFile = new File(outDir, 'robolectric-deps.properties') 55 56 project.android.sourceSets['test'].resources.srcDir(outDir) 57 } 58 59 project.afterEvaluate { 60 project.tasks.forEach { task -> 61 if (task.name.matches("process.*UnitTestJavaRes")) { 62 task.dependsOn "provideBuildClasspath" 63 } 64 } 65 } 66 } 67} 68