• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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