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)