aboutsummaryrefslogtreecommitdiff
path: root/buildSrc
diff options
context:
space:
mode:
authorJames Lemieux <jplemieux@google.com>2018-11-15 11:45:03 -0800
committerJames Lemieux <jplemieux@google.com>2018-11-20 15:34:26 -0800
commit292ab7fbe0f25581df5026c4cb52b20cf027ccae (patch)
treedd92a999d64ceae6927c63d31af83ade622dc82b /buildSrc
parent5a855d3384a6c91d944f42b97bcdee55a70dde85 (diff)
downloadrobolectric-shadows-292ab7fbe0f25581df5026c4cb52b20cf027ccae.tar.gz
Merge robolectric/master up to commit ee67bd2
Bug: 116278591 Test: make -j56 Run_all_robolectric_tests Change-Id: I0d1b044b7edd15774520985b1ff3c4301465c128
Diffstat (limited to 'buildSrc')
-rw-r--r--buildSrc/build.gradle7
-rw-r--r--buildSrc/src/main/groovy/CheckApiChangesPlugin.groovy33
-rw-r--r--buildSrc/src/main/groovy/RoboJavaModulePlugin.groovy10
-rw-r--r--buildSrc/src/main/groovy/ShadowsPlugin.groovy22
4 files changed, 47 insertions, 25 deletions
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index 7619b4cae..eede5417b 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -1,3 +1,4 @@
+apply plugin: "java-library"
apply plugin: "groovy"
repositories {
@@ -6,8 +7,8 @@ repositories {
}
dependencies {
- compile gradleApi()
- compile localGroovy()
+ implementation gradleApi()
+ implementation localGroovy()
- compile "org.ow2.asm:asm-tree:5.0.1"
+ implementation "org.ow2.asm:asm-tree:7.0"
}
diff --git a/buildSrc/src/main/groovy/CheckApiChangesPlugin.groovy b/buildSrc/src/main/groovy/CheckApiChangesPlugin.groovy
index b107f6512..c0671c598 100644
--- a/buildSrc/src/main/groovy/CheckApiChangesPlugin.groovy
+++ b/buildSrc/src/main/groovy/CheckApiChangesPlugin.groovy
@@ -9,6 +9,7 @@ import java.util.jar.JarEntry
import java.util.jar.JarInputStream
import java.util.regex.Pattern
+import static org.objectweb.asm.Opcodes.ACC_PRIVATE
import static org.objectweb.asm.Opcodes.ACC_PROTECTED
import static org.objectweb.asm.Opcodes.ACC_PUBLIC
import static org.objectweb.asm.Opcodes.ACC_SYNTHETIC
@@ -295,7 +296,7 @@ class CheckApiChangesPlugin implements Plugin<Project> {
case 'V': write('void'); break;
}
}
- "$methodAccessString $methodNode.name(${args.toString()}): ${returnType.toString()}"
+ "$methodAccessString ${isHiddenApi() ? "@HiddenApi " : ""}${isImplementation() ? "@Implementation " : ""}$methodNode.name(${args.toString()}): ${returnType.toString()}"
}
@Override
@@ -324,21 +325,31 @@ class CheckApiChangesPlugin implements Plugin<Project> {
containsAnnotation(methodNode.visibleAnnotations, "Ljava/lang/Deprecated;")
}
+ boolean isImplementation() {
+ containsAnnotation(methodNode.visibleAnnotations, "Lorg/robolectric/annotation/Implementation;")
+ }
+
+ boolean isHiddenApi() {
+ containsAnnotation(methodNode.visibleAnnotations, "Lorg/robolectric/annotation/HiddenApi;")
+ }
+
String getMethodAccessString() {
- if (bitSet(methodNode.access, ACC_PROTECTED)) {
- return "protected"
- }
- if (bitSet(methodNode.access, ACC_PUBLIC)) {
- return "public"
- }
+ return getAccessString(methodNode.access)
}
- String getClassAccessString() {
- if (bitSet(classNode.access, ACC_PROTECTED)) {
+ private String getClassAccessString() {
+ return getAccessString(classNode.access)
+ }
+
+ String getAccessString(int access) {
+ if (bitSet(access, ACC_PROTECTED)) {
return "protected"
- }
- if (bitSet(classNode.access, ACC_PUBLIC)) {
+ } else if (bitSet(access, ACC_PUBLIC)) {
return "public"
+ } else if (bitSet(access, ACC_PRIVATE)) {
+ return "private"
+ } else {
+ return "[package]"
}
}
diff --git a/buildSrc/src/main/groovy/RoboJavaModulePlugin.groovy b/buildSrc/src/main/groovy/RoboJavaModulePlugin.groovy
index b18ad6628..8a34039e5 100644
--- a/buildSrc/src/main/groovy/RoboJavaModulePlugin.groovy
+++ b/buildSrc/src/main/groovy/RoboJavaModulePlugin.groovy
@@ -9,10 +9,17 @@ class RoboJavaModulePlugin implements Plugin<Project> {
Boolean deploy = false;
Closure doApply = {
- apply plugin: "java"
+ apply plugin: "java-library"
+ apply plugin: "net.ltgt.errorprone"
+
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
+ project.dependencies {
+ errorprone("com.google.errorprone:error_prone_core:$errorproneVersion")
+ errorproneJavac("com.google.errorprone:javac:$errorproneJavacVersion")
+ }
+
tasks.withType(JavaCompile) { task ->
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
@@ -24,7 +31,6 @@ class RoboJavaModulePlugin implements Plugin<Project> {
}
compilerArgs << "-Xlint:-options" // Turn off "missing" bootclasspath warning
encoding = "utf-8" // Make sure source encoding is UTF-8
- incremental = true
}
def noRebuild = System.getenv('NO_REBUILD') == "true"
diff --git a/buildSrc/src/main/groovy/ShadowsPlugin.groovy b/buildSrc/src/main/groovy/ShadowsPlugin.groovy
index 5d38188ef..7374af682 100644
--- a/buildSrc/src/main/groovy/ShadowsPlugin.groovy
+++ b/buildSrc/src/main/groovy/ShadowsPlugin.groovy
@@ -8,28 +8,32 @@ import java.util.jar.JarFile
class ShadowsPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
- project.apply plugin: "net.ltgt.apt"
project.apply plugin: 'idea'
project.extensions.create("shadows", ShadowsPluginExtension)
project.dependencies {
- apt project.project(":processor")
+ annotationProcessor project.project(":processor")
}
def compileJavaTask = project.tasks["compileJava"]
+
+ // write generated Java into its own dir... see https://github.com/gradle/gradle/issues/4956
+ def generatedSrcRelPath = 'build/generated/src/apt/main'
+ def generatedSrcDir = project.file(generatedSrcRelPath)
+
+ project.sourceSets.main.java { srcDir generatedSrcRelPath }
+ project.mkdir(generatedSrcDir)
+ compileJavaTask.options.annotationProcessorGeneratedSourcesDirectory = generatedSrcDir
+ compileJavaTask.outputs.dir(generatedSrcDir)
+
compileJavaTask.doFirst {
options.compilerArgs.add("-Aorg.robolectric.annotation.processing.shadowPackage=${project.shadows.packageName}")
options.compilerArgs.add("-Aorg.robolectric.annotation.processing.sdkCheckMode=${project.shadows.sdkCheckMode}")
}
- // this doesn't seem to have any effect in IDEA yet, unfortunately...
- def aptGeneratedSrcDir = new File(project.buildDir, 'generated/source/apt/main')
- project.idea.module.generatedSourceDirs << aptGeneratedSrcDir
-
- // include generated sources in javadoc and source jars
- project.tasks['javadoc'].source(aptGeneratedSrcDir)
- project.tasks['sourcesJar'].from(project.fileTree(aptGeneratedSrcDir))
+ // include generated sources in javadoc jar
+ project.tasks['javadoc'].source(generatedSrcDir)
// verify that we have the apt-generated files in our javadoc and sources jars
project.tasks['javadocJar'].doLast { task ->