[Retrace] Parameterize retrace tests over CF runtimes

Change-Id: Icb774b395293f2bb8166d71b51179cd8e37f4705
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
index 64979ea..94abc05 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
@@ -49,6 +49,7 @@
 import com.android.tools.r8.retrace.stacktraces.SuppressedStackTrace;
 import com.android.tools.r8.retrace.stacktraces.UnicodeInFileNameStackTrace;
 import com.android.tools.r8.retrace.stacktraces.UnknownSourceStackTrace;
+import com.android.tools.r8.utils.BooleanUtils;
 import com.android.tools.r8.utils.StringUtils;
 import com.google.common.collect.ImmutableList;
 import java.nio.charset.StandardCharsets;
@@ -69,17 +70,16 @@
 
   @Parameters(name = "{0}, use regular expression: {1}, external: {2}")
   public static Collection<Object[]> data() {
-    TestParameters noneRuntime = getTestParameters().withNoneRuntime().build().iterator().next();
-    return ImmutableList.of(
-        new Object[] {noneRuntime, false, false},
-        new Object[] {noneRuntime, true, false},
-        new Object[] {noneRuntime, true, true});
+    return buildParameters(
+        getTestParameters().withCfRuntimes().build(), BooleanUtils.values(), BooleanUtils.values());
   }
 
+  private final TestParameters testParameters;
   private final boolean useRegExpParsing;
   private final boolean external;
 
   public RetraceTests(TestParameters parameters, boolean useRegExpParsing, boolean external) {
+    this.testParameters = parameters;
     this.useRegExpParsing = useRegExpParsing;
     this.external = external;
   }
@@ -263,6 +263,8 @@
   private TestDiagnosticMessagesImpl runRetraceTest(StackTraceForTest stackTraceForTest)
       throws Exception {
     if (external) {
+      assumeTrue(useRegExpParsing);
+      assumeTrue(testParameters.isCfRuntime());
       // The external dependency is built on top of R8Lib. If test.py is run with
       // no r8lib, do not try and run the external R8 Retrace since it has not been built.
       assumeTrue(Files.exists(ToolHelper.R8LIB_JAR));
@@ -276,7 +278,7 @@
               .getBytes(StandardCharsets.UTF_8));
 
       List<String> command = new ArrayList<>();
-      command.add(ToolHelper.getSystemJavaExecutable());
+      command.add(testParameters.getRuntime().asCf().getJavaExecutable().toString());
       command.add("-ea");
       command.add("-cp");
       command.add(ToolHelper.R8_RETRACE_JAR.toString());