Commit 615ba2ba authored by Ben Joyce's avatar Ben Joyce Committed by Commit Bot

Suppress warnings from robolectric.

The files are identical to the original, except it uses robolectric's
Logger instead of javax.annotation.processing.Messager so that the
messages are only seen when the logger is turned on.

Removes weapons such as:
warning: Couldn't find shadowed type for org.robolectric.shadows.ShadowPathParser.ShadowPathData
warning: Couldn't find shadowed type for org.robolectric.shadows.ShadowSharedPreferences.ShadowSharedPreferencesEditorImpl

...
[12/179] ACTION //third_party/robolectric:shadows_multidex_java__compile_java(//build/toolchain/android:android_clang_arm64)
../../third_party/robolectric/robolectric/shadows/multidex/src/main/java/org/robolectric/shadows/multidex/ShadowMultiDex.java:12: warning: No such class android.support.multidex.MultiDex for SDKs 19-19/21-21/25-29
  protected static void install(Context context)
...


Bug: 967664
Change-Id: I5bcddef368a8e3f527bdb03f445f7174118c7ed0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2209632
Commit-Queue: benjamin joyce <bjoyce@chromium.org>
Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Reviewed-by: default avatarPeter Wen <wnwen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#770686}
parent 6ff61ddc
......@@ -95,6 +95,7 @@ _BANNED_JAVA_IMPORTS = (
'net/android/javatests/src/org/chromium/net/'
'AndroidProxySelectorTest.java',
'components/cronet/',
'third_party/robolectric/local/',
),
),
)
......
......@@ -198,10 +198,14 @@ java_library("robolectric_annotations_java") {
}
java_annotation_processor("robolectric_processor") {
bypass_platform_checks = true
testonly = true
enable_bytecode_checks = false
deps = [
":robolectric_annotations_java",
# Added to use logger with local file.
":robolectric_utils_java",
":sdk_list_txt",
"//third_party/android_deps:com_google_code_gson_gson_java",
"//third_party/android_deps:com_google_guava_guava_java",
......@@ -218,6 +222,8 @@ java_annotation_processor("robolectric_processor") {
provider_configurations = [ "local/processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor" ]
main_class = "org.robolectric.annotation.processing.RobolectricProcessor"
sources = [
"local/processor/src/main/java/org/robolectric/annotation/processing/generator/JavadocJsonGenerator.java",
"local/processor/src/main/java/org/robolectric/annotation/processing/validator/SdkStore.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/DocumentedElement.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/DocumentedMethod.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/DocumentedPackage.java",
......@@ -226,7 +232,9 @@ java_annotation_processor("robolectric_processor") {
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/RobolectricModel.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/RobolectricProcessor.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/generator/Generator.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/generator/JavadocJsonGenerator.java",
# Provided locally to supress output warnings.
# "robolectric/processor/src/main/java/org/robolectric/annotation/processing/generator/JavadocJsonGenerator.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/generator/ServiceLoaderGenerator.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/generator/ShadowProviderGenerator.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/generator/package-info.java",
......@@ -236,7 +244,9 @@ java_annotation_processor("robolectric_processor") {
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/validator/ImplementsValidator.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/validator/RealObjectValidator.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/validator/ResetterValidator.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/validator/SdkStore.java",
# Provided locally to supress output warnings.
# "robolectric/processor/src/main/java/org/robolectric/annotation/processing/validator/SdkStore.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/validator/Validator.java",
"robolectric/processor/src/main/java/org/robolectric/annotation/processing/validator/package-info.java",
]
......
......@@ -17,6 +17,8 @@ Local Modifications:
for our own implementation of AsyncTask
- Added DefaultSdkProvider as a local file with Jellybean references removed.
- Removed non-compiling JDK9 class from UnsafeAccess.java.
- Changed SdkStore.java and JavadocJsonGenerator.java to put warnings in logger
rather than stout.
How To Update:
- Visit the migration guide to see which APIs changed and need updating.
http://robolectric.org/migrating/
......
package org.robolectric.annotation.processing.generator;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.robolectric.annotation.processing.DocumentedPackage;
import org.robolectric.annotation.processing.DocumentedType;
import org.robolectric.annotation.processing.RobolectricModel;
import org.robolectric.annotation.processing.RobolectricModel.ShadowInfo;
import org.robolectric.util.Logger;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.processing.Messager;
import javax.annotation.processing.ProcessingEnvironment;
import javax.tools.Diagnostic;
import javax.tools.Diagnostic.Kind;
public class JavadocJsonGenerator extends Generator {
private final RobolectricModel model;
private final Messager messager;
private final Gson gson;
private final File jsonDocsDir;
public JavadocJsonGenerator(
RobolectricModel model, ProcessingEnvironment environment, File jsonDocsDir) {
super();
this.model = model;
this.messager = environment.getMessager();
gson = new GsonBuilder().setPrettyPrinting().create();
this.jsonDocsDir = jsonDocsDir;
}
@Override
public void generate() {
Map<String, String> shadowedTypes = new HashMap<>();
for (ShadowInfo entry : model.getVisibleShadowTypes()) {
shadowedTypes.put(entry.getShadowName().replace('$', '.'), entry.getActualName());
}
for (Map.Entry<String, String> entry : model.getExtraShadowTypes().entrySet()) {
String shadowType = entry.getKey().replace('$', '.');
String shadowedType = entry.getValue();
shadowedTypes.put(shadowType, shadowedType);
}
for (DocumentedPackage documentedPackage : model.getDocumentedPackages()) {
for (DocumentedType documentedType : documentedPackage.getDocumentedTypes()) {
String shadowedType = shadowedTypes.get(documentedType.getName());
if (shadowedType == null) {
Logger.strict("Couldn't find shadowed type for " + documentedType.getName());
} else {
writeJson(documentedType, new File(jsonDocsDir, shadowedType + ".json"));
}
}
}
}
private void writeJson(Object object, File file) {
try {
file.getParentFile().mkdirs();
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
gson.toJson(object, writer);
}
} catch (IOException e) {
messager.printMessage(Diagnostic.Kind.ERROR, "Failed to write javadoc JSON file: " + e);
throw new RuntimeException(e);
}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment