Add runtime to test result Change-Id: I94ed3b81cd88897c5c27fa3cdc378716fab55014
diff --git a/src/test/java/com/android/tools/r8/D8TestCompileResult.java b/src/test/java/com/android/tools/r8/D8TestCompileResult.java index e4ea07c..117ca7b 100644 --- a/src/test/java/com/android/tools/r8/D8TestCompileResult.java +++ b/src/test/java/com/android/tools/r8/D8TestCompileResult.java
@@ -24,7 +24,7 @@ } @Override - public D8TestRunResult createRunResult(ProcessResult result) { - return new D8TestRunResult(app, result); + public D8TestRunResult createRunResult(TestRuntime runtime, ProcessResult result) { + return new D8TestRunResult(app, runtime, result); } }
diff --git a/src/test/java/com/android/tools/r8/D8TestRunResult.java b/src/test/java/com/android/tools/r8/D8TestRunResult.java index 1aa095a..cd4b663 100644 --- a/src/test/java/com/android/tools/r8/D8TestRunResult.java +++ b/src/test/java/com/android/tools/r8/D8TestRunResult.java
@@ -9,8 +9,8 @@ public class D8TestRunResult extends TestRunResult<D8TestRunResult> { - public D8TestRunResult(AndroidApp app, ProcessResult result) { - super(app, result); + public D8TestRunResult(AndroidApp app, TestRuntime runtime, ProcessResult result) { + super(app, runtime, result); } @Override
diff --git a/src/test/java/com/android/tools/r8/DXTestCompileResult.java b/src/test/java/com/android/tools/r8/DXTestCompileResult.java index 4313211..3cf9b73 100644 --- a/src/test/java/com/android/tools/r8/DXTestCompileResult.java +++ b/src/test/java/com/android/tools/r8/DXTestCompileResult.java
@@ -23,7 +23,7 @@ } @Override - public DXTestRunResult createRunResult(ProcessResult result) { - return new DXTestRunResult(app, result); + public DXTestRunResult createRunResult(TestRuntime runtime, ProcessResult result) { + return new DXTestRunResult(app, runtime, result); } }
diff --git a/src/test/java/com/android/tools/r8/DXTestRunResult.java b/src/test/java/com/android/tools/r8/DXTestRunResult.java index 830cbd8..bcec2f3 100644 --- a/src/test/java/com/android/tools/r8/DXTestRunResult.java +++ b/src/test/java/com/android/tools/r8/DXTestRunResult.java
@@ -9,8 +9,8 @@ public class DXTestRunResult extends TestRunResult<DXTestRunResult> { - public DXTestRunResult(AndroidApp app, ProcessResult result) { - super(app, result); + public DXTestRunResult(AndroidApp app, TestRuntime runtime, ProcessResult result) { + super(app, runtime, result); } @Override
diff --git a/src/test/java/com/android/tools/r8/Dex2OatTestRunResult.java b/src/test/java/com/android/tools/r8/Dex2OatTestRunResult.java index 1a4e0ec..f364232 100644 --- a/src/test/java/com/android/tools/r8/Dex2OatTestRunResult.java +++ b/src/test/java/com/android/tools/r8/Dex2OatTestRunResult.java
@@ -13,8 +13,8 @@ public class Dex2OatTestRunResult extends TestRunResult<Dex2OatTestRunResult> { - public Dex2OatTestRunResult(AndroidApp app, ProcessResult result) { - super(app, result); + public Dex2OatTestRunResult(AndroidApp app, TestRuntime runtime, ProcessResult result) { + super(app, runtime, result); } @Override
diff --git a/src/test/java/com/android/tools/r8/ExternalR8TestCompileResult.java b/src/test/java/com/android/tools/r8/ExternalR8TestCompileResult.java index 290f6ac..04a37fa 100644 --- a/src/test/java/com/android/tools/r8/ExternalR8TestCompileResult.java +++ b/src/test/java/com/android/tools/r8/ExternalR8TestCompileResult.java
@@ -63,7 +63,7 @@ } @Override - protected ExternalR8TestRunResult createRunResult(ProcessResult result) { - return new ExternalR8TestRunResult(app, outputJar, proguardMap, result); + protected ExternalR8TestRunResult createRunResult(TestRuntime runtime, ProcessResult result) { + return new ExternalR8TestRunResult(app, outputJar, proguardMap, runtime, result); } }
diff --git a/src/test/java/com/android/tools/r8/ExternalR8TestRunResult.java b/src/test/java/com/android/tools/r8/ExternalR8TestRunResult.java index f301b78..28e2835 100644 --- a/src/test/java/com/android/tools/r8/ExternalR8TestRunResult.java +++ b/src/test/java/com/android/tools/r8/ExternalR8TestRunResult.java
@@ -19,8 +19,12 @@ private final String proguardMap; public ExternalR8TestRunResult( - AndroidApp app, Path outputJar, String proguardMap, ProcessResult result) { - super(app, result); + AndroidApp app, + Path outputJar, + String proguardMap, + TestRuntime runtime, + ProcessResult result) { + super(app, runtime, result); this.outputJar = outputJar; this.proguardMap = proguardMap; }
diff --git a/src/test/java/com/android/tools/r8/GenerateMainDexListRunResult.java b/src/test/java/com/android/tools/r8/GenerateMainDexListRunResult.java index b9842f2..166feeb 100644 --- a/src/test/java/com/android/tools/r8/GenerateMainDexListRunResult.java +++ b/src/test/java/com/android/tools/r8/GenerateMainDexListRunResult.java
@@ -11,7 +11,7 @@ List<String> mainDexList; public GenerateMainDexListRunResult(List<String> mainDexList) { - super(null, null); + super(null, null, null); this.mainDexList = mainDexList; }
diff --git a/src/test/java/com/android/tools/r8/JvmTestBuilder.java b/src/test/java/com/android/tools/r8/JvmTestBuilder.java index c6a5026..06f97ce 100644 --- a/src/test/java/com/android/tools/r8/JvmTestBuilder.java +++ b/src/test/java/com/android/tools/r8/JvmTestBuilder.java
@@ -39,9 +39,9 @@ } @Override + @Deprecated public JvmTestRunResult run(String mainClass) throws IOException { - ProcessResult result = ToolHelper.runJava(classpath, mainClass); - return new JvmTestRunResult(builder.build(), result); + return run(TestRuntime.getDefaultJavaRuntime(), mainClass); } public JvmTestRunResult run(TestRuntime runtime, String mainClass, String... args) @@ -49,7 +49,7 @@ assert runtime.isCf(); ProcessResult result = ToolHelper.runJava(runtime.asCf().getVm(), classpath, ObjectArrays.concat(mainClass, args)); - return new JvmTestRunResult(builder.build(), result); + return new JvmTestRunResult(builder.build(), runtime, result); } @Override
diff --git a/src/test/java/com/android/tools/r8/JvmTestRunResult.java b/src/test/java/com/android/tools/r8/JvmTestRunResult.java index b7a71fd..a94fd38 100644 --- a/src/test/java/com/android/tools/r8/JvmTestRunResult.java +++ b/src/test/java/com/android/tools/r8/JvmTestRunResult.java
@@ -9,8 +9,8 @@ public class JvmTestRunResult extends TestRunResult<JvmTestRunResult> { - public JvmTestRunResult(AndroidApp app, ProcessResult result) { - super(app, result); + public JvmTestRunResult(AndroidApp app, TestRuntime runtime, ProcessResult result) { + super(app, runtime, result); } @Override
diff --git a/src/test/java/com/android/tools/r8/ProguardTestCompileResult.java b/src/test/java/com/android/tools/r8/ProguardTestCompileResult.java index 0ed5425..fbb8282 100644 --- a/src/test/java/com/android/tools/r8/ProguardTestCompileResult.java +++ b/src/test/java/com/android/tools/r8/ProguardTestCompileResult.java
@@ -42,7 +42,7 @@ } @Override - public ProguardTestRunResult createRunResult(ProcessResult result) { - return new ProguardTestRunResult(app, result, proguardMap); + public ProguardTestRunResult createRunResult(TestRuntime runtime, ProcessResult result) { + return new ProguardTestRunResult(app, runtime, result, proguardMap); } }
diff --git a/src/test/java/com/android/tools/r8/ProguardTestRunResult.java b/src/test/java/com/android/tools/r8/ProguardTestRunResult.java index e242a38..de24d38 100644 --- a/src/test/java/com/android/tools/r8/ProguardTestRunResult.java +++ b/src/test/java/com/android/tools/r8/ProguardTestRunResult.java
@@ -16,8 +16,9 @@ private final String proguardMap; - public ProguardTestRunResult(AndroidApp app, ProcessResult result, String proguardMap) { - super(app, result); + public ProguardTestRunResult( + AndroidApp app, TestRuntime runtime, ProcessResult result, String proguardMap) { + super(app, runtime, result); this.proguardMap = proguardMap; }
diff --git a/src/test/java/com/android/tools/r8/R8TestCompileResult.java b/src/test/java/com/android/tools/r8/R8TestCompileResult.java index 8e63f34..c4ec2aa 100644 --- a/src/test/java/com/android/tools/r8/R8TestCompileResult.java +++ b/src/test/java/com/android/tools/r8/R8TestCompileResult.java
@@ -83,8 +83,8 @@ } @Override - public R8TestRunResult createRunResult(ProcessResult result) { - return new R8TestRunResult(app, result, proguardMap, this::graphInspector); + public R8TestRunResult createRunResult(TestRuntime runtime, ProcessResult result) { + return new R8TestRunResult(app, runtime, result, proguardMap, this::graphInspector); } public String getProguardMap() {
diff --git a/src/test/java/com/android/tools/r8/R8TestRunResult.java b/src/test/java/com/android/tools/r8/R8TestRunResult.java index 835c959..12faade 100644 --- a/src/test/java/com/android/tools/r8/R8TestRunResult.java +++ b/src/test/java/com/android/tools/r8/R8TestRunResult.java
@@ -29,10 +29,11 @@ public R8TestRunResult( AndroidApp app, + TestRuntime runtime, ProcessResult result, String proguardMap, GraphInspectorSupplier graphInspector) { - super(app, result); + super(app, runtime, result); this.proguardMap = proguardMap; this.graphInspector = graphInspector; }
diff --git a/src/test/java/com/android/tools/r8/TestCompileResult.java b/src/test/java/com/android/tools/r8/TestCompileResult.java index 4c6f535..8c643ff 100644 --- a/src/test/java/com/android/tools/r8/TestCompileResult.java +++ b/src/test/java/com/android/tools/r8/TestCompileResult.java
@@ -9,6 +9,7 @@ import com.android.tools.r8.ClassFileConsumer.ArchiveConsumer; import com.android.tools.r8.TestBase.Backend; +import com.android.tools.r8.TestRuntime.DexRuntime; import com.android.tools.r8.ToolHelper.ArtCommandBuilder; import com.android.tools.r8.ToolHelper.DexVm; import com.android.tools.r8.ToolHelper.ProcessResult; @@ -81,7 +82,7 @@ return outputMode; } - protected abstract RR createRunResult(ProcessResult result); + protected abstract RR createRunResult(TestRuntime runtime, ProcessResult result); @Deprecated public RR run(Class<?> mainClass) throws ExecutionException, IOException { @@ -94,7 +95,10 @@ assertThat(mainClassSubject, isPresent()); switch (getBackend()) { case DEX: - return runArt(null, additionalRunClassPath, mainClassSubject.getFinalName()); + return runArt( + new DexRuntime(ToolHelper.getDexVm()), + additionalRunClassPath, + mainClassSubject.getFinalName()); case CF: return runJava( TestRuntime.getDefaultJavaRuntime(), @@ -124,8 +128,7 @@ ClassSubject mainClassSubject = inspector().clazz(mainClass); assertThat("Did you forget a keep rule for the main method?", mainClassSubject, isPresent()); if (runtime.isDex()) { - return runArt( - runtime.asDex().getVm(), additionalRunClassPath, mainClassSubject.getFinalName(), args); + return runArt(runtime, additionalRunClassPath, mainClassSubject.getFinalName(), args); } assert runtime.isCf(); return runJava( @@ -293,11 +296,13 @@ .build(); ProcessResult result = ToolHelper.runJava(runtime.asCf().getVm(), vmArguments, classPath, arguments); - return createRunResult(result); + return createRunResult(runtime, result); } - private RR runArt(DexVm vm, List<Path> additionalClassPath, String mainClass, String... arguments) + private RR runArt( + TestRuntime runtime, List<Path> additionalClassPath, String mainClass, String... arguments) throws IOException { + DexVm vm = runtime.asDex().getVm(); // TODO(b/127785410): Always assume a non-null runtime. Path out = state.getNewTempFolder().resolve("out.zip"); app.writeToZip(out, OutputMode.DexIndexed); @@ -312,24 +317,16 @@ ProcessResult result = ToolHelper.runArtRaw( classPath, mainClass, commandConsumer, vm, withArtFrameworks, arguments); - return createRunResult(result); - } - - @Deprecated - public Dex2OatTestRunResult runDex2Oat() throws IOException { - return runDex2Oat(ToolHelper.getDexVm()); + return createRunResult(runtime, result); } public Dex2OatTestRunResult runDex2Oat(TestRuntime runtime) throws IOException { - return runDex2Oat(runtime.asDex().getVm()); - } - - public Dex2OatTestRunResult runDex2Oat(DexVm vm) throws IOException { assert getBackend() == DEX; + DexVm vm = runtime.asDex().getVm(); Path tmp = state.getNewTempFolder(); Path jarFile = tmp.resolve("out.jar"); Path oatFile = tmp.resolve("out.oat"); app.writeToZip(jarFile, OutputMode.DexIndexed); - return new Dex2OatTestRunResult(app, ToolHelper.runDex2OatRaw(jarFile, oatFile, vm)); + return new Dex2OatTestRunResult(app, runtime, ToolHelper.runDex2OatRaw(jarFile, oatFile, vm)); } }
diff --git a/src/test/java/com/android/tools/r8/TestRunResult.java b/src/test/java/com/android/tools/r8/TestRunResult.java index 4dd10a1..c3acc45 100644 --- a/src/test/java/com/android/tools/r8/TestRunResult.java +++ b/src/test/java/com/android/tools/r8/TestRunResult.java
@@ -21,10 +21,12 @@ public abstract class TestRunResult<RR extends TestRunResult<?>> { protected final AndroidApp app; + private final TestRuntime runtime; private final ProcessResult result; - public TestRunResult(AndroidApp app, ProcessResult result) { + public TestRunResult(AndroidApp app, TestRuntime runtime, ProcessResult result) { this.app = app; + this.runtime = runtime; this.result = result; }
diff --git a/src/test/java/com/android/tools/r8/maindexlist/MainDexWithSynthesizedClassesTest.java b/src/test/java/com/android/tools/r8/maindexlist/MainDexWithSynthesizedClassesTest.java index 94e2a9c..d102004 100644 --- a/src/test/java/com/android/tools/r8/maindexlist/MainDexWithSynthesizedClassesTest.java +++ b/src/test/java/com/android/tools/r8/maindexlist/MainDexWithSynthesizedClassesTest.java
@@ -81,9 +81,7 @@ private void checkCompilationResult(D8TestCompileResult compileResult) throws Exception { if (parameters.getRuntime().asDex().getMinApiLevel().getLevel() < nativeMultiDexLevel.getLevel()) { - compileResult - .runDex2Oat(parameters.getRuntime().asDex().getVm()) - .assertNoVerificationErrors(); + compileResult.runDex2Oat(parameters.getRuntime()).assertNoVerificationErrors(); } else { compileResult.run(parameters.getRuntime(), TestClass.class).assertSuccessWithOutput(EXPECTED); }
diff --git a/src/test/java/com/android/tools/r8/regress/b118075510/Regress118075510Runner.java b/src/test/java/com/android/tools/r8/regress/b118075510/Regress118075510Runner.java index 12bd452..e562b4f 100644 --- a/src/test/java/com/android/tools/r8/regress/b118075510/Regress118075510Runner.java +++ b/src/test/java/com/android/tools/r8/regress/b118075510/Regress118075510Runner.java
@@ -5,21 +5,39 @@ import com.android.tools.r8.AsmTestBase; import com.android.tools.r8.CompilationFailedException; +import com.android.tools.r8.CompilationMode; import com.android.tools.r8.D8TestCompileResult; +import com.android.tools.r8.TestParameters; import com.android.tools.r8.utils.AndroidApiLevel; import com.android.tools.r8.utils.StringUtils; import com.android.tools.r8.utils.codeinspector.CodeInspector; import com.android.tools.r8.utils.codeinspector.MethodSubject; import java.io.IOException; +import java.util.List; import java.util.concurrent.ExecutionException; import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +@RunWith(Parameterized.class) public class Regress118075510Runner extends AsmTestBase { public static final Class<?> CLASS = Regress118075510Test.class; public static final String EXPECTED = StringUtils.lines("0", "0"); + private final TestParameters parameters; + + @Parameterized.Parameters(name = "{0}, {1}") + public static List<Object[]> data() { + return buildParameters( + getTestParameters().withDexRuntimes().withAllApiLevels().build(), CompilationMode.values()); + } + + public Regress118075510Runner(TestParameters parameters, CompilationMode mode) { + this.parameters = parameters; + } + @Test public void test() throws CompilationFailedException, IOException, ExecutionException, NoSuchMethodException { @@ -32,9 +50,9 @@ checkMethodContainsLongSignum(inspector, "fooNoTryCatch"); checkMethodContainsLongSignum(inspector, "fooWithTryCatch"); // Check the program runs on ART/Dalvik - d8Result.run(CLASS).assertSuccessWithOutput(EXPECTED); + d8Result.run(parameters.getRuntime(), CLASS).assertSuccessWithOutput(EXPECTED); // Check the program can be dex2oat compiled to arm64. This will diverge without the fixup. - d8Result.runDex2Oat().assertSuccess(); + d8Result.runDex2Oat(parameters.getRuntime()).assertSuccess(); } private void checkMethodContainsLongSignum(CodeInspector inspector, String methodName)
diff --git a/src/test/java/com/android/tools/r8/regress/b77842465/Regress77842465.java b/src/test/java/com/android/tools/r8/regress/b77842465/Regress77842465.java index 3ab3467..196ca52 100644 --- a/src/test/java/com/android/tools/r8/regress/b77842465/Regress77842465.java +++ b/src/test/java/com/android/tools/r8/regress/b77842465/Regress77842465.java
@@ -5,6 +5,8 @@ import com.android.tools.r8.AsmTestBase; import com.android.tools.r8.CompilationFailedException; +import com.android.tools.r8.TestRuntime.DexRuntime; +import com.android.tools.r8.ToolHelper; import com.android.tools.r8.utils.AndroidApiLevel; import java.io.IOException; import org.junit.Test; @@ -18,7 +20,7 @@ .noDesugaring() .setMinApi(AndroidApiLevel.M) .compile() - .runDex2Oat() + .runDex2Oat(new DexRuntime(ToolHelper.getDexVm())) .assertSuccess(); } }