Misc changes to test setup and test in new gradle setup
Bug: b/270105162
Change-Id: Ib2835c91d5b208a38cefddc8c6771fdb8216c35b
diff --git a/d8_r8/main/build.gradle.kts b/d8_r8/main/build.gradle.kts
index 3bdf5e2..a262dc5 100644
--- a/d8_r8/main/build.gradle.kts
+++ b/d8_r8/main/build.gradle.kts
@@ -99,8 +99,12 @@
exclude("META-INF/proguard/**")
exclude("META-INF/services/**")
exclude("META-INF/versions/**")
+ exclude("**/*.xml")
+ exclude("com/android/version.properties")
exclude("NOTICE")
exclude("README.md")
+ exclude("javax/annotation/**")
+ exclude("wireless/**")
manifest {}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
archiveFileName.set("deps.jar")
@@ -127,6 +131,8 @@
"--map",
"com.android.resources->com.android.tools.r8.com.android.resources",
"--map",
+ "com.android.support->com.android.tools.r8.com.android.support",
+ "--map",
"com.google.common->com.android.tools.r8.com.google.common",
"--map",
"com.android.build.shrinker->com.android.tools.r8.resourceshrinker",
@@ -149,7 +155,11 @@
"--map",
"org.checkerframework->com.android.tools.r8.org.checkerframework",
"--map",
- "com.google.j2objc->com.android.tools.r8.com.google.j2objc"
+ "com.google.j2objc->com.android.tools.r8.com.google.j2objc",
+ "--map",
+ "com.google.protobuf->com.android.tools.r8.com.google.protobuf",
+ "--map",
+ "android.aapt->com.android.tools.r8.android.aaapt"
))
}
}
diff --git a/d8_r8/resourceshrinker/build.gradle.kts b/d8_r8/resourceshrinker/build.gradle.kts
index 22c85cd..205df05 100644
--- a/d8_r8/resourceshrinker/build.gradle.kts
+++ b/d8_r8/resourceshrinker/build.gradle.kts
@@ -25,6 +25,7 @@
.compileClasspath
.filter({ "$it".contains("third_party")
&& "$it".contains("dependencies")
+ && !"$it".contains("errorprone")
})
}
diff --git a/d8_r8/test_modules/tests_bootstrap/build.gradle.kts b/d8_r8/test_modules/tests_bootstrap/build.gradle.kts
index 2f5b681..12ff996 100644
--- a/d8_r8/test_modules/tests_bootstrap/build.gradle.kts
+++ b/d8_r8/test_modules/tests_bootstrap/build.gradle.kts
@@ -66,5 +66,9 @@
environment.put("USE_NEW_GRADLE_SETUP", "true")
dependsOn(mainR8RelocatedTask)
environment.put("R8_WITH_RELOCATED_DEPS", mainR8RelocatedTask.outputs.files.getSingleFile())
+ environment.put("R8_RUNTIME_PATH", mainR8RelocatedTask.outputs.files.getSingleFile())
+
+ // TODO(b/291198792): Remove this exclusion when desugared library runs correctly.
+ exclude("com/android/tools/r8/bootstrap/HelloWorldCompiledOnArtTest**")
}
}
diff --git a/src/test/bootstrap/com/android/tools/r8/bootstrap/BootstrapCurrentEqualityTest.java b/src/test/bootstrap/com/android/tools/r8/bootstrap/BootstrapCurrentEqualityTest.java
index 697e5e4..34c1623 100644
--- a/src/test/bootstrap/com/android/tools/r8/bootstrap/BootstrapCurrentEqualityTest.java
+++ b/src/test/bootstrap/com/android/tools/r8/bootstrap/BootstrapCurrentEqualityTest.java
@@ -14,6 +14,7 @@
import com.android.tools.r8.CompilationMode;
import com.android.tools.r8.ExternalR8TestCompileResult;
import com.android.tools.r8.JdkClassFileProvider;
+import com.android.tools.r8.R8TestBuilder;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
@@ -108,6 +109,8 @@
.addProgramFiles(ToolHelper.getR8WithRelocatedDeps())
.addLibraryProvider(JdkClassFileProvider.fromSystemJdk())
.addKeepRuleFiles(MAIN_KEEP)
+ // TODO(b/176783536, b/270105162): Get a hold of dependencies in new gradle setup.
+ .applyIf(ToolHelper.isNewGradleSetup(), R8TestBuilder::allowUnusedDontWarnPatterns)
.compile()
.apply(c -> FileUtils.writeTextFile(map, c.getProguardMap()))
.writeToZip(jar);
diff --git a/src/test/bootstrap/com/android/tools/r8/bootstrap/SanityCheck.java b/src/test/bootstrap/com/android/tools/r8/bootstrap/SanityCheck.java
index 22ef9f1..46a6379 100644
--- a/src/test/bootstrap/com/android/tools/r8/bootstrap/SanityCheck.java
+++ b/src/test/bootstrap/com/android/tools/r8/bootstrap/SanityCheck.java
@@ -6,6 +6,7 @@
import static org.hamcrest.CoreMatchers.startsWith;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -54,7 +55,13 @@
ZipEntry entry = entries.nextElement();
String name = entry.getName();
if (ZipUtils.isClassFile(name) || name.endsWith(".kotlin_builtins")) {
- assertThat(name, startsWith("com/android/tools/r8/"));
+ // TODO(b/155618698): This should be "com/android/tools/r8, however, we cannot relacate
+ // packages in that folder with the current handling of mappings.
+ assertThat(
+ name,
+ ToolHelper.isNewGradleSetup()
+ ? startsWith("com/android/")
+ : startsWith("com/android/tools/r8/"));
} else if (name.equals("META-INF/MANIFEST.MF")) {
// Allow.
} else if (name.equals("LICENSE")) {
@@ -71,7 +78,8 @@
}
}
assertTrue(apiDatabaseFiles.isEmpty());
- assertTrue("No LICENSE entry found in " + jar, licenseSeen);
+ // TODO(b/270105162): Add LICENSE file to r8 with deps.
+ assertEquals("No LICENSE entry found in " + jar, !ToolHelper.isNewGradleSetup(), licenseSeen);
}
private void checkLibJarContent(Path jar, Path map) throws Exception {
diff --git a/src/test/bootstrap/com/android/tools/r8/bootstrap/WhyAreYouKeepingAllTest.java b/src/test/bootstrap/com/android/tools/r8/bootstrap/WhyAreYouKeepingAllTest.java
index 281f897..f5155e6 100644
--- a/src/test/bootstrap/com/android/tools/r8/bootstrap/WhyAreYouKeepingAllTest.java
+++ b/src/test/bootstrap/com/android/tools/r8/bootstrap/WhyAreYouKeepingAllTest.java
@@ -7,6 +7,7 @@
import static org.hamcrest.CoreMatchers.not;
import com.android.tools.r8.JdkClassFileProvider;
+import com.android.tools.r8.R8TestBuilder;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
@@ -50,7 +51,11 @@
.addLibraryProvider(JdkClassFileProvider.fromSystemJdk())
.addKeepRuleFiles(MAIN_KEEP)
.addKeepRules(WHY_ARE_YOU_KEEPING_ALL)
- .collectStdout()
+ // Do not forward standard out since running with gradle will cause an error writing the
+ // results.
+ .collectStdoutWithoutForwarding()
+ // TODO(b/176783536, b/270105162): Get a hold of dependencies in new gradle setup.
+ .applyIf(ToolHelper.isNewGradleSetup(), R8TestBuilder::allowUnusedDontWarnPatterns)
.compile()
.assertStdoutThatMatches(containsString("referenced in keep rule"))
// TODO(b/124655065): We should always know the reason for keeping.
diff --git a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
index bd2e8cd..1bc4f03 100644
--- a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
+++ b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
@@ -84,6 +84,7 @@
private boolean optimizeMultidexForLinearAlloc = false;
private Consumer<InternalOptions> optionsConsumer = DEFAULT_OPTIONS;
private ByteArrayOutputStream stdout = null;
+ private boolean stdOutForwarding = true;
private PrintStream oldStdout = null;
private ByteArrayOutputStream stderr = null;
private PrintStream oldStderr = null;
@@ -304,7 +305,11 @@
try {
if (stdout != null) {
assertTrue(allowStdoutMessages);
- System.setOut(new PrintStream(new ForwardingOutputStream(stdout, System.out)));
+ if (stdOutForwarding) {
+ System.setOut(new PrintStream(new ForwardingOutputStream(stdout, System.out)));
+ } else {
+ System.setOut(new PrintStream(stdout));
+ }
} else if (!allowStdoutMessages) {
System.setOut(
new PrintStream(
@@ -528,6 +533,13 @@
return allowStdoutMessages();
}
+ public T collectStdoutWithoutForwarding() {
+ assert stdout == null;
+ stdout = new ByteArrayOutputStream();
+ stdOutForwarding = false;
+ return allowStdoutMessages();
+ }
+
/**
* If {@link #allowStdoutMessages} is false, then {@link System#out} will be replaced temporarily
* by a {@link ThrowingOutputStream}. To allow the testing infrastructure to print messages to the
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index da3d5b2..73236aa 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -215,8 +215,6 @@
Paths.get(ToolHelper.THIRD_PARTY_DIR, "gson", "gson-2.10.1", "gson.pro");
public static final Path GUAVA_JRE =
Paths.get(THIRD_PARTY_DIR, "guava", "guava-32.1.2-jre", "guava-32.1.2-jre.jar");
- public static final Path GUAVA_ANDROID =
- Paths.get(THIRD_PARTY_DIR, "guava", "guava-32.1.2-android", "guava-32.1.2-android.jar");
public static final String PROGUARD_SETTINGS_FOR_INTERNAL_APPS =
THIRD_PARTY_DIR + "proguardsettings/";
diff --git a/src/test/java/com/android/tools/r8/code/invokedynamic/CompileGuavaWithUnrepresentableRewritingTest.java b/src/test/java/com/android/tools/r8/code/invokedynamic/CompileGuavaWithUnrepresentableRewritingTest.java
index 459e8f5..4ac3e01 100644
--- a/src/test/java/com/android/tools/r8/code/invokedynamic/CompileGuavaWithUnrepresentableRewritingTest.java
+++ b/src/test/java/com/android/tools/r8/code/invokedynamic/CompileGuavaWithUnrepresentableRewritingTest.java
@@ -4,17 +4,15 @@
package com.android.tools.r8.code.invokedynamic;
-import static org.junit.Assert.assertThrows;
+import static org.hamcrest.CoreMatchers.anyOf;
-import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.DiagnosticsMatcher;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.dex.Marker.Backend;
-import com.android.tools.r8.errors.DexFileOverflowDiagnostic;
import com.android.tools.r8.errors.UnsupportedInvokeCustomDiagnostic;
+import com.android.tools.r8.errors.UnsupportedInvokePolymorphicMethodHandleDiagnostic;
import com.android.tools.r8.utils.AndroidApiLevel;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -34,24 +32,21 @@
}
@Test
- public void testD8DexNoDesugaring() {
- assertThrows(
- CompilationFailedException.class,
- () -> {
- testForD8(Backend.DEX)
- // DEPS contains all R8 dependencies, including guava, which extends the surface
- // of UnrepresentableRewriting.
- .addProgramFiles(ToolHelper.getDeps())
- .setMinApi(AndroidApiLevel.B)
- .disableDesugaring()
- .compileWithExpectedDiagnostics(
- diagnostics ->
- diagnostics
- .assertAllWarningsMatch(
- DiagnosticsMatcher.diagnosticType(
- UnsupportedInvokeCustomDiagnostic.class))
- .assertErrorThatMatches(
- DiagnosticsMatcher.diagnosticType(DexFileOverflowDiagnostic.class)));
- });
+ public void testD8DexNoDesugaring() throws Exception {
+ testForD8(Backend.DEX)
+ .addProgramFiles(ToolHelper.GUAVA_JRE)
+ .setMinApi(AndroidApiLevel.N)
+ .disableDesugaring()
+ .compileWithExpectedDiagnostics(
+ diagnostics ->
+ diagnostics
+ .assertHasWarnings()
+ .assertAllWarningsMatch(
+ anyOf(
+ DiagnosticsMatcher.diagnosticType(
+ UnsupportedInvokeCustomDiagnostic.class),
+ DiagnosticsMatcher.diagnosticType(
+ UnsupportedInvokePolymorphicMethodHandleDiagnostic.class)))
+ .assertNoErrors());
}
}