Run the compiled output in some of the Android O tests.
Bug: 123504206
Change-Id: I2978d8a0a9a602cc419239e63857ce4f822a8186
diff --git a/src/test/java/com/android/tools/r8/D8IncrementalRunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/D8IncrementalRunExamplesAndroidOTest.java
index 31a76ab..84b6675 100644
--- a/src/test/java/com/android/tools/r8/D8IncrementalRunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/D8IncrementalRunExamplesAndroidOTest.java
@@ -190,11 +190,11 @@
}
}
- ProgramResource mergeClassFiles(List<ProgramResource> dexFiles, Path out) throws Throwable {
+ AndroidApp mergeClassFiles(List<ProgramResource> dexFiles, Path out) throws Throwable {
return mergeClassFiles(dexFiles, out, OutputMode.DexIndexed);
}
- ProgramResource mergeClassFiles(
+ AndroidApp mergeClassFiles(
List<ProgramResource> dexFiles, Path outputPath, OutputMode outputMode) throws Throwable {
Builder builder = D8Command.builder();
for (ProgramResource dexFile : dexFiles) {
@@ -215,7 +215,7 @@
try {
AndroidApp app = ToolHelper.runD8(builder, this::combinedOptionConsumer);
assert app.getDexProgramResourcesForTesting().size() == 1;
- return app.getDexProgramResourcesForTesting().get(0);
+ return app;
} catch (Unimplemented | CompilationError | InternalCompilerError re) {
throw re;
} catch (RuntimeException re) {
@@ -249,13 +249,16 @@
Assert.assertArrayEquals(readResource(entry.getValue()), readResource(otherResource));
}
- ProgramResource mergedFromCompiledSeparately =
+ AndroidApp mergedFromCompiledSeparately =
test.mergeClassFiles(Lists.newArrayList(compiledSeparately.values()), null);
- ProgramResource mergedFromCompiledTogether =
+ AndroidApp mergedFromCompiledTogether =
test.mergeClassFiles(Lists.newArrayList(compiledTogether.values()), null);
+
+ // TODO(b/123504206): Add a main method and test the output runs.
+
Assert.assertArrayEquals(
- readResource(mergedFromCompiledSeparately),
- readResource(mergedFromCompiledTogether));
+ readResource(mergedFromCompiledSeparately.getDexProgramResourcesForTesting().get(0)),
+ readResource(mergedFromCompiledTogether.getDexProgramResourcesForTesting().get(0)));
}
@Test
@@ -269,16 +272,24 @@
D8IncrementalTestRunner test = test(testName, testPackage, mainClass);
test.withInterfaceMethodDesugaring(OffOrAuto.Auto);
- ProgramResource mergedFromCompiledSeparately =
+ AndroidApp mergedFromCompiledSeparately =
test.mergeClassFiles(
Lists.newArrayList(test.compileClassesSeparately(inputJarFile).values()), null);
- ProgramResource mergedFromCompiledTogether =
+ AndroidApp mergedFromCompiledTogether =
test.mergeClassFiles(
Lists.newArrayList(test.compileClassesTogether(inputJarFile, null).values()), null);
+ Path out1 = temp.newFolder().toPath().resolve("out-together.zip");
+ mergedFromCompiledTogether.writeToZip(out1, OutputMode.DexIndexed);
+ ToolHelper.runArtNoVerificationErrors(out1.toString(), testPackage + "." + mainClass);
+
+ Path out2 = temp.newFolder().toPath().resolve("out-separate.zip");
+ mergedFromCompiledSeparately.writeToZip(out2, OutputMode.DexIndexed);
+ ToolHelper.runArtNoVerificationErrors(out2.toString(), testPackage + "." + mainClass);
+
Assert.assertArrayEquals(
- readResource(mergedFromCompiledSeparately),
- readResource(mergedFromCompiledTogether));
+ readResource(mergedFromCompiledSeparately.getDexProgramResourcesForTesting().get(0)),
+ readResource(mergedFromCompiledTogether.getDexProgramResourcesForTesting().get(0)));
}
@Test
@@ -292,16 +303,19 @@
D8IncrementalTestRunner test = test(testName, testPackage, mainClass);
test.withInterfaceMethodDesugaring(OffOrAuto.Auto);
- ProgramResource mergedFromCompiledSeparately =
+ AndroidApp mergedFromCompiledSeparately =
test.mergeClassFiles(
Lists.newArrayList(test.compileClassesSeparately(inputJarFile).values()), null);
- ProgramResource mergedFromCompiledTogether =
+ AndroidApp mergedFromCompiledTogether =
test.mergeClassFiles(
Lists.newArrayList(test.compileClassesTogether(inputJarFile, null).values()), null);
+ // TODO(b/123504206): This test throws an index out of bounds exception.
+ // Re-write or verify running fails in the expected way.
+
Assert.assertArrayEquals(
- readResource(mergedFromCompiledSeparately),
- readResource(mergedFromCompiledTogether));
+ readResource(mergedFromCompiledSeparately.getDexProgramResourcesForTesting().get(0)),
+ readResource(mergedFromCompiledTogether.getDexProgramResourcesForTesting().get(0)));
}
@Test