Update retrace test to take an explicit map argument.

Change-Id: I9a2b689340b17cdc9123d3c341d8837f47799297
diff --git a/src/test/java/com/android/tools/r8/ExternalR8TestCompileResult.java b/src/test/java/com/android/tools/r8/ExternalR8TestCompileResult.java
index f2a8839..3712893 100644
--- a/src/test/java/com/android/tools/r8/ExternalR8TestCompileResult.java
+++ b/src/test/java/com/android/tools/r8/ExternalR8TestCompileResult.java
@@ -32,6 +32,10 @@
     return outputJar;
   }
 
+  public String getProguardMap() {
+    return proguardMap;
+  }
+
   public String stdout() {
     return processResult.stdout;
   }
diff --git a/src/test/java/com/android/tools/r8/R8TestCompileResult.java b/src/test/java/com/android/tools/r8/R8TestCompileResult.java
index ecb0a92..95ec572 100644
--- a/src/test/java/com/android/tools/r8/R8TestCompileResult.java
+++ b/src/test/java/com/android/tools/r8/R8TestCompileResult.java
@@ -94,4 +94,8 @@
   public R8TestRunResult createRunResult(ProcessResult result) {
     return new R8TestRunResult(app, result, proguardMap, this::graphInspector);
   }
+
+  public String getProguardMap() {
+    return proguardMap;
+  }
 }
diff --git a/src/test/java/com/android/tools/r8/cf/BootstrapCurrentEqualityTest.java b/src/test/java/com/android/tools/r8/cf/BootstrapCurrentEqualityTest.java
index 03eaa28..fc00afb 100644
--- a/src/test/java/com/android/tools/r8/cf/BootstrapCurrentEqualityTest.java
+++ b/src/test/java/com/android/tools/r8/cf/BootstrapCurrentEqualityTest.java
@@ -12,12 +12,11 @@
 import com.android.tools.r8.CompilationFailedException;
 import com.android.tools.r8.CompilationMode;
 import com.android.tools.r8.ExternalR8TestCompileResult;
-import com.android.tools.r8.OutputMode;
-import com.android.tools.r8.R8;
-import com.android.tools.r8.R8Command;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.ToolHelper.ProcessResult;
+import com.android.tools.r8.utils.FileUtils;
+import com.android.tools.r8.utils.Pair;
 import java.io.BufferedInputStream;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -46,8 +45,8 @@
     "-keep class " + HELLO_NAME + " {", "  public static void main(...);", "}",
   };
 
-  private static Path r8R8Debug;
-  private static Path r8R8Release;
+  private static Pair<Path, Path> r8R8Debug;
+  private static Pair<Path, Path> r8R8Release;
 
   private static boolean testExternal = true;
 
@@ -59,30 +58,29 @@
     r8R8Release = compileR8(CompilationMode.RELEASE);
   }
 
-  private static Path compileR8(CompilationMode mode) throws Exception {
+  private static Pair<Path, Path> compileR8(CompilationMode mode) throws Exception {
     // Run R8 on r8.jar.
-    Path jar;
+    final Path jar = testFolder.newFolder().toPath().resolve("out.jar");
+    final Path map = testFolder.newFolder().toPath().resolve("out.map");
     if (testExternal) {
-      jar =
-          testForExternalR8(newTempFolder(), Backend.CF)
-              .useR8WithRelocatedDeps()
-              .addProgramFiles(ToolHelper.R8_WITH_RELOCATED_DEPS_JAR)
-              .addKeepRuleFiles(MAIN_KEEP)
-              .setMode(mode)
-              .compile()
-              .outputJar();
+      testForExternalR8(newTempFolder(), Backend.CF)
+          .useR8WithRelocatedDeps()
+          .setMode(mode)
+          .addProgramFiles(ToolHelper.R8_WITH_RELOCATED_DEPS_JAR)
+          .addKeepRuleFiles(MAIN_KEEP)
+          .compile()
+          .apply(c -> FileUtils.writeTextFile(map, c.getProguardMap()))
+          .writeToZip(jar);
     } else {
-      jar = testFolder.newFolder().toPath().resolve("out.jar");
-      R8.run(
-          R8Command.builder()
-              .setMode(mode)
-              .addProgramFiles(ToolHelper.R8_WITH_RELOCATED_DEPS_JAR)
-              .addProguardConfigurationFiles(MAIN_KEEP)
-              .addLibraryFiles(runtimeJar(Backend.CF))
-              .setOutput(jar, OutputMode.ClassFile)
-              .build());
+      testForR8(newTempFolder(), Backend.CF)
+          .setMode(mode)
+          .addProgramFiles(ToolHelper.R8_WITH_RELOCATED_DEPS_JAR)
+          .addKeepRuleFiles(MAIN_KEEP)
+          .compile()
+          .apply(c -> FileUtils.writeTextFile(map, c.getProguardMap()))
+          .writeToZip(jar);
     }
-    return jar;
+    return new Pair<>(jar, map);
   }
 
   @Test
@@ -92,8 +90,9 @@
             new ProcessBuilder(
                 "python",
                 Paths.get(ToolHelper.TOOLS_DIR, "test_self_retrace.py").toString(),
-                r8R8Release.toString()));
-    assertEquals(0, result.exitCode);
+                r8R8Release.getFirst().toString(),
+                r8R8Release.getSecond().toString()));
+    assertEquals(result.toString(), 0, result.exitCode);
   }
 
   @Test
@@ -158,7 +157,7 @@
   }
 
   private void RunR8AndCheck(
-      Path r8,
+      Pair<Path, Path> r8,
       Path program,
       ExternalR8TestCompileResult result,
       String[] keep,
@@ -166,7 +165,7 @@
       throws Exception {
     ExternalR8TestCompileResult runR8R8 =
         testForExternalR8(newTempFolder(), Backend.CF)
-            .useProvidedR8(r8)
+            .useProvidedR8(r8.getFirst())
             .addProgramFiles(program)
             .addKeepRules(keep)
             .setMode(mode)
diff --git a/tools/test_self_retrace.py b/tools/test_self_retrace.py
index 46cb1d9..d7ab9aa 100755
--- a/tools/test_self_retrace.py
+++ b/tools/test_self_retrace.py
@@ -6,11 +6,13 @@
 from __future__ import absolute_import
 from __future__ import division
 from __future__ import print_function
+
 import gradle
 import jdk
 import os
 import subprocess
 import sys
+
 import utils
 
 EXCEPTION_LINE = 'Intentional exception for testing retrace.'
@@ -27,15 +29,16 @@
   if len(args) == 0:
     gradle.RunGradle(['r8lib'])
     r8lib = utils.R8LIB_JAR
-  elif len(args) == 1:
-    if args[0] == '--help':
-      print('Usage: test_self_retrace.py [<path-to-r8lib-jar>]')
-      print('If the path is missing the script builds and uses ' + utils.R8LIB_JAR)
-      return
-    else:
-      r8lib = args[0]
+    r8map = utils.R8LIB + '.map'
+  elif len(args) == 2:
+    r8lib = args[0]
+    r8map = args[1]
+  elif len(args) == 1 and args[0] == '--help':
+    print('Usage: test_self_retrace.py [<path-to-r8lib-jar> <path-to-r8lib-map]')
+    print('If the path is missing the script builds and uses ' + utils.R8LIB_JAR)
+    return
   else:
-    raise Exception("Only one argument is allowed, see '--help'.")
+    raise Exception("Only two argument allowed, see '--help'.")
 
   # Run 'r8 --help' which throws an exception.
   cmd = [
@@ -51,7 +54,7 @@
   assert('SelfRetraceTest' not in stacktrace)
 
   # Run the retrace tool.
-  cmd = [jdk.GetJavaExecutable(), '-jar', utils.RETRACE_JAR, r8lib + ".map"]
+  cmd = [jdk.GetJavaExecutable(), '-jar', utils.RETRACE_JAR, r8map]
   utils.PrintCmd(cmd)
   p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
   retrace_stdout, _ = p.communicate(stacktrace)