Fix the Java 9 tests for the CF backend.
Change-Id: I7163192f1750439e5d010b74f6b228d0f5aaf90d
diff --git a/src/test/java/com/android/tools/r8/R8CFRunExamplesJava9Test.java b/src/test/java/com/android/tools/r8/R8CFRunExamplesJava9Test.java
index f0e758d..c710ed2 100644
--- a/src/test/java/com/android/tools/r8/R8CFRunExamplesJava9Test.java
+++ b/src/test/java/com/android/tools/r8/R8CFRunExamplesJava9Test.java
@@ -8,6 +8,7 @@
import static org.junit.Assert.assertEquals;
import com.android.tools.r8.ToolHelper.ProcessResult;
+import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
@@ -31,11 +32,24 @@
}
@Override
+ R8CFTestRunner withKeepAll() {
+ return withBuilderTransformation(
+ builder ->
+ builder
+ .setMode(CompilationMode.DEBUG)
+ .setDisableTreeShaking(true)
+ .setDisableMinification(true)
+ .addProguardConfiguration(
+ ImmutableList.of("-keepattributes *"), Origin.unknown()));
+ }
+
+ @Override
void build(Path inputFile, Path out) throws Throwable {
R8Command.Builder builder = R8Command.builder();
for (UnaryOperator<R8Command.Builder> transformation : builderTransformations) {
builder = transformation.apply(builder);
}
+ // TODO(b/124041175): We should not be linking against the Java 8 runtime for Java 9 inputs.
builder.addLibraryFiles(ToolHelper.getJava8RuntimeJar());
R8Command command =
builder.addProgramFiles(inputFile).setOutput(out, OutputMode.ClassFile).build();
@@ -67,7 +81,7 @@
}
}
- execute(testName, qualifiedMainClass, new Path[] {inputFile}, new Path[] {out});
+ execute(testName, qualifiedMainClass, new Path[] {inputFile}, new Path[] {out}, args);
if (expectedToThrow) {
System.out.println("Did not throw ApiLevelException as expected");
@@ -85,15 +99,23 @@
return new R8CFTestRunner(testName, packageName, mainClass);
}
- void execute(String testName, String qualifiedMainClass, Path[] inputJars, Path[] outputJars)
+ @Override
+ void execute(
+ String testName,
+ String qualifiedMainClass,
+ Path[] inputJars,
+ Path[] outputJars,
+ List<String> args)
throws IOException {
boolean expectedToFail = expectedToFailCf(testName);
if (expectedToFail) {
thrown.expect(Throwable.class);
}
- ProcessResult outputResult = ToolHelper.runJava(Arrays.asList(outputJars), qualifiedMainClass);
+ String[] mainAndArgs =
+ ImmutableList.builder().add(qualifiedMainClass).addAll(args).build().toArray(new String[0]);
+ ProcessResult outputResult = ToolHelper.runJava(Arrays.asList(outputJars), mainAndArgs);
ToolHelper.ProcessResult inputResult =
- ToolHelper.runJava(ImmutableList.copyOf(inputJars), qualifiedMainClass);
+ ToolHelper.runJava(ImmutableList.copyOf(inputJars), mainAndArgs);
assertEquals(inputResult.toString(), outputResult.toString());
if (inputResult.exitCode != 0) {
System.out.println(inputResult);
diff --git a/src/test/java/com/android/tools/r8/RunExamplesJava9Test.java b/src/test/java/com/android/tools/r8/RunExamplesJava9Test.java
index c95d8a6..f3f5339 100644
--- a/src/test/java/com/android/tools/r8/RunExamplesJava9Test.java
+++ b/src/test/java/com/android/tools/r8/RunExamplesJava9Test.java
@@ -10,6 +10,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeFalse;
import com.android.tools.r8.ToolHelper.DexVm;
import com.android.tools.r8.ir.desugar.InterfaceMethodRewriter;
@@ -274,6 +275,7 @@
@Test
public void desugaredPrivateInterfaceMethods() throws Throwable {
+ assumeFalse("CF backend does not desugar", this instanceof R8CFRunExamplesJava9Test);
final String iName = "privateinterfacemethods.I";
test("desugared-private-interface-methods",
"privateinterfacemethods", "PrivateInterfaceMethods")
@@ -297,6 +299,7 @@
public void varHandle() throws Throwable {
test("varhandle", "varhandle", "VarHandleTests")
.withMinApiLevel(AndroidApiLevel.P.getLevel())
+ .withKeepAll()
.run();
}