diff options
author | James Lemieux <jplemieux@google.com> | 2018-11-15 11:45:03 -0800 |
---|---|---|
committer | James Lemieux <jplemieux@google.com> | 2018-11-20 15:34:26 -0800 |
commit | 292ab7fbe0f25581df5026c4cb52b20cf027ccae (patch) | |
tree | dd92a999d64ceae6927c63d31af83ade622dc82b /buildSrc | |
parent | 5a855d3384a6c91d944f42b97bcdee55a70dde85 (diff) | |
download | robolectric-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.gradle | 7 | ||||
-rw-r--r-- | buildSrc/src/main/groovy/CheckApiChangesPlugin.groovy | 33 | ||||
-rw-r--r-- | buildSrc/src/main/groovy/RoboJavaModulePlugin.groovy | 10 | ||||
-rw-r--r-- | buildSrc/src/main/groovy/ShadowsPlugin.groovy | 22 |
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 -> |