Extend testForProguard with Proguard version
Change-Id: I3baeeaca4a3d82358df7c294e2a58c714ab8ca15
diff --git a/src/test/java/com/android/tools/r8/ProguardTestBuilder.java b/src/test/java/com/android/tools/r8/ProguardTestBuilder.java
index 27d4655..622d595 100644
--- a/src/test/java/com/android/tools/r8/ProguardTestBuilder.java
+++ b/src/test/java/com/android/tools/r8/ProguardTestBuilder.java
@@ -27,6 +27,9 @@
extends TestShrinkerBuilder<
R8Command, Builder, ProguardTestCompileResult, ProguardTestRunResult, ProguardTestBuilder> {
+ // Version of Proguard to use.
+ private final ProguardVersion version;
+
// Ordered list of injar entries.
private List<Path> injars = new ArrayList<>();
@@ -39,12 +42,14 @@
// Additional Proguard configuration files.
private List<Path> proguardConfigFiles = new ArrayList<>();
- private ProguardTestBuilder(TestState state, Builder builder, Backend backend) {
+ private ProguardTestBuilder(
+ TestState state, ProguardVersion version, Builder builder, Backend backend) {
super(state, builder, backend);
+ this.version = version;
}
- public static ProguardTestBuilder create(TestState state) {
- return new ProguardTestBuilder(state, R8Command.builder(), Backend.CF);
+ public static ProguardTestBuilder create(TestState state, ProguardVersion version) {
+ return new ProguardTestBuilder(state, version, R8Command.builder(), Backend.CF);
}
@Override
@@ -63,7 +68,7 @@
Path mapFile = proguardOutputFolder.resolve("mapping.txt");
FileUtils.writeTextFile(configFile, config);
List<String> command = new ArrayList<>();
- command.add(ToolHelper.getProguard6Script());
+ command.add(version.getProguardScript().toString());
// Without -forceprocessing Proguard just checks the creation time on the in/out jars.
command.add("-forceprocessing");
for (Path injar : injars) {
diff --git a/src/test/java/com/android/tools/r8/ProguardVersion.java b/src/test/java/com/android/tools/r8/ProguardVersion.java
new file mode 100644
index 0000000..8c9050a
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/ProguardVersion.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8;
+
+import static com.android.tools.r8.ToolHelper.isWindows;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+public enum ProguardVersion {
+ V5_2_1("5.2.1"),
+ V6_0_1("6.0.1"),
+ V7_0_0("7.0.0");
+
+ private final String version;
+
+ ProguardVersion(String version) {
+ this.version = version;
+ }
+
+ public Path getProguardScript() {
+ Path scriptDirectory = Paths.get(ToolHelper.THIRD_PARTY_DIR).resolve("proguard");
+ if (this == V7_0_0) {
+ scriptDirectory = scriptDirectory.resolve("proguard-" + version);
+ } else {
+ scriptDirectory = scriptDirectory.resolve("proguard" + version);
+ }
+ if (isWindows()) {
+ return scriptDirectory.resolve("bin/proguard.bat");
+ }
+ return scriptDirectory.resolve("bin/proguard.sh");
+ }
+
+ @Override
+ public String toString() {
+ return "Proguard " + version.toString();
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/TestBase.java b/src/test/java/com/android/tools/r8/TestBase.java
index a92fefd..27c1570 100644
--- a/src/test/java/com/android/tools/r8/TestBase.java
+++ b/src/test/java/com/android/tools/r8/TestBase.java
@@ -172,8 +172,8 @@
return JvmTestBuilder.create(new TestState(temp));
}
- public static ProguardTestBuilder testForProguard(TemporaryFolder temp) {
- return ProguardTestBuilder.create(new TestState(temp));
+ public static ProguardTestBuilder testForProguard(ProguardVersion version, TemporaryFolder temp) {
+ return ProguardTestBuilder.create(new TestState(temp), version);
}
public static GenerateMainDexListTestBuilder testForMainDexListGenerator(TemporaryFolder temp) {
@@ -308,8 +308,14 @@
return DesugarTestBuilder.create(state, builders.build());
}
+ /** @deprecated use {@link #testForProguard(ProguardVersion)} instead. */
+ @Deprecated
public ProguardTestBuilder testForProguard() {
- return testForProguard(temp);
+ return testForProguard(ProguardVersion.V6_0_1);
+ }
+
+ public ProguardTestBuilder testForProguard(ProguardVersion version) {
+ return testForProguard(version, temp);
}
public GenerateMainDexListTestBuilder testForMainDexListGenerator() {
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index 7e1a627..9676011 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -702,7 +702,7 @@
}
}
- public static String getProguardScript() {
+ public static String getProguard5Script() {
if (isWindows()) {
return PROGUARD + ".bat";
}
@@ -1922,17 +1922,17 @@
public static ProcessResult runProguardRaw(
Path inJar, Path outJar, Path lib, Path config, Path map) throws IOException {
- return runProguardRaw(getProguardScript(), inJar, outJar, lib, ImmutableList.of(config), map);
+ return runProguardRaw(getProguard5Script(), inJar, outJar, lib, ImmutableList.of(config), map);
}
public static ProcessResult runProguardRaw(Path inJar, Path outJar, List<Path> config, Path map)
throws IOException {
- return runProguardRaw(getProguardScript(), inJar, outJar, config, map);
+ return runProguardRaw(getProguard5Script(), inJar, outJar, config, map);
}
public static ProcessResult runProguardRaw(Path inJar, Path outJar, Path config, Path map)
throws IOException {
- return runProguardRaw(getProguardScript(), inJar, outJar, ImmutableList.of(config), map);
+ return runProguardRaw(getProguard5Script(), inJar, outJar, ImmutableList.of(config), map);
}
public static String runProguard(Path inJar, Path outJar, Path config, Path map)
@@ -1942,7 +1942,7 @@
public static String runProguard(Path inJar, Path outJar, List<Path> config, Path map)
throws IOException {
- return runProguard(getProguardScript(), inJar, outJar, config, map);
+ return runProguard(getProguard5Script(), inJar, outJar, config, map);
}
public static ProcessResult runProguard6Raw(Path inJar, Path outJar, Path config, Path map)