Migrate more TestDeps.

Bundletool, jacoco, jsr223, rhino, processKeepRulesBinaryCompatibility.

Bug: b/558159571
Change-Id: Ib7214c5a65769d6586db300f236ab9c2a1baa7c7
diff --git a/d8_r8/test_modules/tests_java_8/build.gradle.kts b/d8_r8/test_modules/tests_java_8/build.gradle.kts
index c49a365..e60cb6a 100644
--- a/d8_r8/test_modules/tests_java_8/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_8/build.gradle.kts
@@ -80,9 +80,15 @@
   implementation(project(":resourceshrinker", "resourceshrinkerDepsJar"))
   implementation(project(":testbase"))
   implementation(project(":testbase", "depsJar"))
+  runtimeOnlyData(project(":third_party", "bundletool"))
   runtimeOnlyData(project(":third_party", "gson"))
   runtimeOnlyData(project(":third_party", "guavaJre"))
+  runtimeOnlyData(project(":third_party", "jacoco"))
   runtimeOnlyData(project(":third_party", "jdwpTests"))
+  runtimeOnlyData(project(":third_party", "jsr223"))
+  runtimeOnlyData(project(":third_party", "processKeepRulesBinaryCompatibility"))
+  runtimeOnlyData(project(":third_party", "rhino"))
+  runtimeOnlyData(project(":third_party", "rhinoAndroid"))
   runtimeOnlyData(project(":testbase", "runtimeOnlyDataElements"))
   // For each child project, add its test classes to the test class configuration.
   childProjects.values.forEach { childProject ->
diff --git a/d8_r8/test_modules/tests_java_8/desugar/build.gradle.kts b/d8_r8/test_modules/tests_java_8/desugar/build.gradle.kts
index c6d50b0..19d2b4f 100644
--- a/d8_r8/test_modules/tests_java_8/desugar/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_8/desugar/build.gradle.kts
@@ -24,4 +24,6 @@
   runtimeOnlyData(project(":third_party", "coreLambdaStubs"))
   runtimeOnlyData(project(":third_party", "gson"))
   runtimeOnlyData(project(":third_party", "guavaJre"))
+  runtimeOnlyData(project(":third_party", "jacoco"))
+  runtimeOnlyData(project(":third_party", "multidex"))
 }
diff --git a/d8_r8/test_modules/tests_java_8/retrace/build.gradle.kts b/d8_r8/test_modules/tests_java_8/retrace/build.gradle.kts
index fa65957..b3b9dd8 100644
--- a/d8_r8/test_modules/tests_java_8/retrace/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_8/retrace/build.gradle.kts
@@ -22,3 +22,9 @@
     }
   }
 }
+
+dependencies {
+  runtimeOnlyData(project(":third_party", "r8Mappings"))
+  runtimeOnlyData(project(":third_party", "retraceBinaryCompatibility"))
+  runtimeOnlyData(project(":third_party", "retracePartitionFormats"))
+}
diff --git a/d8_r8/third_party/build.gradle.kts b/d8_r8/third_party/build.gradle.kts
index 586290b..9df3088 100644
--- a/d8_r8/third_party/build.gradle.kts
+++ b/d8_r8/third_party/build.gradle.kts
@@ -57,14 +57,46 @@
 // This should be called 'dependencies' but that is reserved in gradle, so dependenciesBucket.
 registerTestDep("dependenciesBucket", getRoot().resolve("third_party/dependencies"), "DEPENDENCIES")
 
+registerTestDep("bundletool", ThirdPartyDeps.bundletool, "BUNDLETOOL")
+
 registerTestDep("coreLambdaStubs", ThirdPartyDeps.coreLambdaStubs, "CORE_LAMBDA_STUBS")
 
 registerTestDep("gson", ThirdPartyDeps.gson, "GSON")
 
 registerTestDep("guavaJre", ThirdPartyDeps.guavaJre, "GUAVA_JRE")
 
+registerTestDep("jacoco", ThirdPartyDeps.jacoco, "JACOCO")
+
 registerTestDep("jdwpTests", ThirdPartyDeps.jdwpTests, "JDWP_TESTS")
 
+registerTestDep("jsr223", ThirdPartyDeps.jsr223, "JSR223")
+
+registerTestDep("multidex", ThirdPartyDeps.multidex, "MULTIDEX")
+
+registerTestDep(
+  "processKeepRulesBinaryCompatibility",
+  ThirdPartyDeps.processKeepRulesBinaryCompatibility,
+  "PROCESS_KEEP_RULES_BINARY_COMPATIBILITY",
+)
+
+registerTestDep("r8Mappings", ThirdPartyDeps.r8Mappings, "R8_MAPPINGS")
+
+registerTestDep(
+  "retraceBinaryCompatibility",
+  ThirdPartyDeps.retraceBinaryCompatibility,
+  "RETRACE_BINARY_COMPATIBILITY",
+)
+
+registerTestDep(
+  "retracePartitionFormats",
+  ThirdPartyDeps.retracePartitionFormats,
+  "RETRACE_PARTITION_FORMATS",
+)
+
+registerTestDep("rhino", ThirdPartyDeps.rhino, "RHINO")
+
+registerTestDep("rhinoAndroid", ThirdPartyDeps.rhinoAndroid, "RHINO_ANDROID")
+
 val internalTasks =
   if (!providers.gradleProperty("no_internal").isPresent) {
     allInternalDependencies().map { registerDependency(it) }
diff --git a/src/test/java/com/android/tools/r8/JacocoRegressionTest.java b/src/test/java/com/android/tools/r8/JacocoRegressionTest.java
index a7421e8..7beaa04 100644
--- a/src/test/java/com/android/tools/r8/JacocoRegressionTest.java
+++ b/src/test/java/com/android/tools/r8/JacocoRegressionTest.java
@@ -42,7 +42,7 @@
             path,
             String.format(
                 "-javaagent:%s=destfile=%s,dumponexit=true,output=file",
-                ToolHelper.JACOCO_AGENT, agentOutput),
+                TestDeps.getJacocoAgentJar(), agentOutput),
             name);
     assertEquals(1, result1.exitCode);
     assertTrue(result1.toString().contains("java.lang.VerifyError: Bad local variable type"));
diff --git a/src/test/java/com/android/tools/r8/androidresources/FeatureSplitCodeLessManifestTest.java b/src/test/java/com/android/tools/r8/androidresources/FeatureSplitCodeLessManifestTest.java
index d932e18..d59aa8a 100644
--- a/src/test/java/com/android/tools/r8/androidresources/FeatureSplitCodeLessManifestTest.java
+++ b/src/test/java/com/android/tools/r8/androidresources/FeatureSplitCodeLessManifestTest.java
@@ -13,6 +13,7 @@
 import com.android.aapt.Resources.XmlNode;
 import com.android.tools.r8.R8TestCompileResultBase;
 import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestDeps;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.ToolHelper;
@@ -25,7 +26,6 @@
 import java.net.URLClassLoader;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import org.junit.Assume;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
@@ -336,12 +336,7 @@
 
   private static void validateWithBundletool(XmlNode xmlNode, boolean expectedHasCode)
       throws Exception {
-    Path bundletoolJar =
-        Paths.get(
-            ToolHelper.THIRD_PARTY_DIR,
-            "bundletool",
-            "bundletool-1.11.0",
-            "bundletool-all-1.11.0.jar");
+    Path bundletoolJar = TestDeps.getBundleToolJar();
     assertTrue(Files.exists(bundletoolJar));
     try (URLClassLoader loader =
         new URLClassLoader(
diff --git a/src/test/java/com/android/tools/r8/assistant/ReflectiveCallExtractorTest.java b/src/test/java/com/android/tools/r8/assistant/ReflectiveCallExtractorTest.java
index b922cf9..853df28 100644
--- a/src/test/java/com/android/tools/r8/assistant/ReflectiveCallExtractorTest.java
+++ b/src/test/java/com/android/tools/r8/assistant/ReflectiveCallExtractorTest.java
@@ -51,7 +51,7 @@
 
   @Test
   public void testJacoco() throws Exception {
-    test(ToolHelper.JACOCO_AGENT, 12, 0);
+    test(TestDeps.getJacocoAgentJar(), 12, 0);
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/processkeeprules/api/ProcessKeepRulesApiTestCollection.java b/src/test/java/com/android/tools/r8/processkeeprules/api/ProcessKeepRulesApiTestCollection.java
index 749b548..d9cab20 100644
--- a/src/test/java/com/android/tools/r8/processkeeprules/api/ProcessKeepRulesApiTestCollection.java
+++ b/src/test/java/com/android/tools/r8/processkeeprules/api/ProcessKeepRulesApiTestCollection.java
@@ -3,21 +3,17 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.processkeeprules.api;
 
+import com.android.tools.r8.TestDeps;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.compilerapi.BinaryCompatibilityTestCollection;
 import com.google.common.collect.ImmutableList;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.List;
 import org.junit.rules.TemporaryFolder;
 
 public class ProcessKeepRulesApiTestCollection
     extends BinaryCompatibilityTestCollection<ProcessKeepRulesApiBinaryTest> {
 
-  private static final Path BINARY_COMPATIBILITY_JAR =
-      Paths.get(
-          ToolHelper.THIRD_PARTY_DIR, "processkeeprules", "binary_compatibility", "tests.jar");
-
   public static List<Class<? extends ProcessKeepRulesApiBinaryTest>>
       CLASSES_FOR_BINARY_COMPATIBILITY = ImmutableList.of(ProcessKeepRulesTest.ApiTest.class);
 
@@ -42,7 +38,7 @@
 
   @Override
   public Path getCheckedInTestJar() {
-    return BINARY_COMPATIBILITY_JAR;
+    return TestDeps.getProcessKeepRulesBinaryCompatibilityJar();
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/rewrite/ScriptEngineTestBase.java b/src/test/java/com/android/tools/r8/rewrite/ScriptEngineTestBase.java
index 5e411be..b01ddf1 100644
--- a/src/test/java/com/android/tools/r8/rewrite/ScriptEngineTestBase.java
+++ b/src/test/java/com/android/tools/r8/rewrite/ScriptEngineTestBase.java
@@ -7,20 +7,19 @@
 import com.android.tools.r8.R8TestBuilder;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestBuilder;
+import com.android.tools.r8.TestDeps;
 import com.android.tools.r8.TestShrinkerBuilder;
-import com.android.tools.r8.ToolHelper;
-import java.nio.file.Paths;
 
 public class ScriptEngineTestBase extends TestBase {
   public void addRhinoForAndroid(TestBuilder<?, ?> builder) {
     builder
         // JSR 223: Scripting for the JavaTM Platform (https://jcp.org/en/jsr/detail?id=223).
-        .addProgramFiles(Paths.get(ToolHelper.JSR223_RI_JAR))
+        .addProgramFiles(TestDeps.getJsr223RiJar())
         // The Rhino implementation.
-        .addProgramFiles(Paths.get(ToolHelper.RHINO_JAR))
+        .addProgramFiles(TestDeps.getRhinoJar())
         // The rhino-android contains concrete implementation of sun.misc.Service
         // used by the JSR 223 RI, which is not in the Android runtime (except for N?).
-        .addProgramFiles(Paths.get(ToolHelper.RHINO_ANDROID_JAR));
+        .addProgramFiles(TestDeps.getRhinoAndroidJar());
     if (builder instanceof TestShrinkerBuilder) {
       ((TestShrinkerBuilder<?, ?, ?, ?, ?>) builder)
           // The rhino-android library have references to missing classes.
diff --git a/src/test/java/com/android/tools/r8/rewrite/assertions/AssertionsConfigurationJacocoTest.java b/src/test/java/com/android/tools/r8/rewrite/assertions/AssertionsConfigurationJacocoTest.java
index 5be0654..d012196 100644
--- a/src/test/java/com/android/tools/r8/rewrite/assertions/AssertionsConfigurationJacocoTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/assertions/AssertionsConfigurationJacocoTest.java
@@ -8,6 +8,7 @@
 
 import com.android.tools.r8.AssertionsConfiguration;
 import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestDeps;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.TestRuntime;
@@ -99,7 +100,7 @@
     List<String> cmdline = new ArrayList<>();
     cmdline.add(TestRuntime.getSystemRuntime().asCf().getJavaExecutable().toString());
     cmdline.add("-jar");
-    cmdline.add(ToolHelper.JACOCO_CLI.toString());
+    cmdline.add(TestDeps.getJacocoCliJar().toString());
     cmdline.add("instrument");
     cmdline.add(input.toString());
     cmdline.add("--dest");
diff --git a/src/test/java8/desugar/com/android/tools/r8/desugar/constantdynamic/JacocoConstantDynamicGetDeclaredMethods.java b/src/test/java8/desugar/com/android/tools/r8/desugar/constantdynamic/JacocoConstantDynamicGetDeclaredMethods.java
index 1386ef8..0d2abbb 100644
--- a/src/test/java8/desugar/com/android/tools/r8/desugar/constantdynamic/JacocoConstantDynamicGetDeclaredMethods.java
+++ b/src/test/java8/desugar/com/android/tools/r8/desugar/constantdynamic/JacocoConstantDynamicGetDeclaredMethods.java
@@ -10,10 +10,10 @@
 import static org.junit.Assume.assumeTrue;
 
 import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestDeps;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.TestRuntime.CfVm;
-import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.ToolHelper.DexVm;
 import com.android.tools.r8.ToolHelper.DexVm.Version;
 import com.android.tools.r8.cf.CfVersion;
@@ -92,7 +92,7 @@
     Path agentOutputOnTheFly = output.resolve("on-the-fly");
     testForJvm(parameters)
         .addProgramFiles(testClasses.getOriginal())
-        .enableJaCoCoAgent(ToolHelper.JACOCO_AGENT, agentOutputOnTheFly)
+        .enableJaCoCoAgent(TestDeps.getJacocoAgentJar(), agentOutputOnTheFly)
         .run(parameters.getRuntime(), MAIN_CLASS)
         .assertSuccessWithOutput(EXPECTED_OUTPUT_WITH_METHOD_HANDLES);
     checkJacocoReport(agentOutputOnTheFly);
@@ -101,7 +101,8 @@
     Path agentOutputOffline = output.resolve("offline");
     testForJvm(parameters)
         .addProgramFiles(testClasses.getInstrumented())
-        .configureJaCoCoAgentForOfflineInstrumentedCode(ToolHelper.JACOCO_AGENT, agentOutputOffline)
+        .configureJaCoCoAgentForOfflineInstrumentedCode(
+            TestDeps.getJacocoAgentJar(), agentOutputOffline)
         .run(parameters.getRuntime(), MAIN_CLASS)
         .assertSuccessWithOutput(EXPECTED_OUTPUT_WITH_METHOD_HANDLES);
     checkJacocoReport(agentOutputOffline);
@@ -113,7 +114,7 @@
     Path agentOutput = temp.newFolder().toPath().resolve("jacoco.exec");
     testForD8(parameters.getBackend())
         .addProgramFiles(testClasses.getInstrumented())
-        .addProgramFiles(ToolHelper.JACOCO_AGENT)
+        .addProgramFiles(TestDeps.getJacocoAgentJar())
         .setMinApi(parameters)
         .compile()
         .runWithJaCoCo(agentOutput, parameters.getRuntime(), MAIN_CLASS)
@@ -130,7 +131,7 @@
     Path agentOutput = temp.newFolder().toPath().resolve("jacoco.exec");
     testForR8(parameters.getBackend())
         .addProgramFiles(testClasses.getInstrumented())
-        .addProgramFiles(ToolHelper.JACOCO_AGENT)
+        .addProgramFiles(TestDeps.getJacocoAgentJar())
         .setMinApi(parameters)
         .addKeepMainRules(TestRunner.class)
         .addKeepRules(
@@ -162,7 +163,7 @@
     Path agentOutput = temp.newFolder().toPath().resolve("jacoco.exec");
     testForR8(parameters.getBackend())
         .addProgramFiles(testClasses.getInstrumented())
-        .addProgramFiles(ToolHelper.JACOCO_AGENT)
+        .addProgramFiles(TestDeps.getJacocoAgentJar())
         .setMinApi(parameters)
         .addKeepMainRules(TestRunner.class)
         .addKeepRules("-keep class ** { *** " + jacocoBootstrapMethodName + "(...); }")
diff --git a/src/test/java8/desugar/com/android/tools/r8/desugar/constantdynamic/JacocoConstantDynamicTest.java b/src/test/java8/desugar/com/android/tools/r8/desugar/constantdynamic/JacocoConstantDynamicTest.java
index 9c9aa98..2cff554 100644
--- a/src/test/java8/desugar/com/android/tools/r8/desugar/constantdynamic/JacocoConstantDynamicTest.java
+++ b/src/test/java8/desugar/com/android/tools/r8/desugar/constantdynamic/JacocoConstantDynamicTest.java
@@ -8,9 +8,9 @@
 import static org.junit.Assume.assumeTrue;
 
 import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestDeps;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestRuntime.CfVm;
-import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.ToolHelper.DexVm;
 import com.android.tools.r8.cf.CfVersion;
 import com.android.tools.r8.jacoco.JacocoClasses;
@@ -82,7 +82,7 @@
     Path agentOutputOnTheFly = output.resolve("on-the-fly");
     testForJvm(parameters)
         .addProgramFiles(testClasses.getOriginal())
-        .enableJaCoCoAgent(ToolHelper.JACOCO_AGENT, agentOutputOnTheFly)
+        .enableJaCoCoAgent(TestDeps.getJacocoAgentJar(), agentOutputOnTheFly)
         .run(parameters.getRuntime(), MAIN_CLASS)
         .assertSuccessWithOutput(EXPECTED_OUTPUT);
     List<String> onTheFlyReport = testClasses.generateReport(agentOutputOnTheFly);
@@ -92,7 +92,8 @@
     Path agentOutputOffline = output.resolve("offline");
     testForJvm(parameters)
         .addProgramFiles(testClasses.getInstrumented())
-        .configureJaCoCoAgentForOfflineInstrumentedCode(ToolHelper.JACOCO_AGENT, agentOutputOffline)
+        .configureJaCoCoAgentForOfflineInstrumentedCode(
+            TestDeps.getJacocoAgentJar(), agentOutputOffline)
         .run(parameters.getRuntime(), MAIN_CLASS)
         .assertSuccessWithOutput(EXPECTED_OUTPUT);
     List<String> offlineReport = testClasses.generateReport(agentOutputOffline);
@@ -107,7 +108,7 @@
       Path agentOutput = output.resolve("jacoco.exec");
       testForD8()
           .addProgramFiles(testClasses.getInstrumented())
-          .addProgramFiles(ToolHelper.JACOCO_AGENT)
+          .addProgramFiles(TestDeps.getJacocoAgentJar())
           .setMinApi(parameters)
           .compile()
           .runWithJaCoCo(agentOutput, parameters.getRuntime(), MAIN_CLASS)
@@ -122,7 +123,7 @@
     } else {
       testForD8()
           .addProgramFiles(testClasses.getInstrumented())
-          .addProgramFiles(ToolHelper.JACOCO_AGENT)
+          .addProgramFiles(TestDeps.getJacocoAgentJar())
           .setMinApi(parameters)
           .compile();
     }
diff --git a/src/test/java8/desugar/com/android/tools/r8/desugar/desugaredlibrary/MultiDexTest.java b/src/test/java8/desugar/com/android/tools/r8/desugar/desugaredlibrary/MultiDexTest.java
index f5d5449..c681216 100644
--- a/src/test/java8/desugar/com/android/tools/r8/desugar/desugaredlibrary/MultiDexTest.java
+++ b/src/test/java8/desugar/com/android/tools/r8/desugar/desugaredlibrary/MultiDexTest.java
@@ -10,8 +10,8 @@
 import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK8;
 import static org.junit.Assert.assertFalse;
 
+import com.android.tools.r8.TestDeps;
 import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
 import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
 import com.android.tools.r8.graph.DexField;
@@ -22,10 +22,7 @@
 import com.android.tools.r8.utils.codeinspector.InstructionSubject;
 import com.google.common.collect.ImmutableList;
 import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Arrays;
 import java.util.List;
-import java.util.stream.Collectors;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -34,18 +31,6 @@
 @RunWith(Parameterized.class)
 public class MultiDexTest extends DesugaredLibraryTestBase {
 
-  private static final String[] JAR_NAMES =
-      new String[] {
-        "multidex-1.0.3.jar",
-        "multidex-instrumentation-1.0.3.jar",
-        "multidex-2.0.1.jar",
-        "multidex-instrumentation-2.0.0.jar"
-      };
-  private static final List<Path> MULTIDEX_JARS =
-      Arrays.stream(JAR_NAMES)
-          .map(jar -> Paths.get(ToolHelper.THIRD_PARTY_DIR + "multidex/" + jar))
-          .collect(Collectors.toList());
-
   private final TestParameters parameters;
   private final CompilationSpecification compilationSpecification;
   private final LibraryDesugaringSpecification libraryDesugaringSpecification;
@@ -57,7 +42,11 @@
         getTestParameters().withDexRuntimes().withAllApiLevels().build(),
         ImmutableList.of(JDK8, JDK11, JDK11_PATH),
         ImmutableList.of(D8_L8DEBUG),
-        MULTIDEX_JARS);
+        ImmutableList.of(
+            TestDeps.getMultidex1_0_3Jar(),
+            TestDeps.getMultidexInstrumentation1_0_3Jar(),
+            TestDeps.getMultidex2_0_1Jar(),
+            TestDeps.getMultidexInstrumentation2_0_0Jar()));
   }
 
   public MultiDexTest(
diff --git a/src/test/java8/retrace/com/android/tools/r8/retrace/api/RetraceApiTestCollection.java b/src/test/java8/retrace/com/android/tools/r8/retrace/api/RetraceApiTestCollection.java
index ccee173..580bd29 100644
--- a/src/test/java8/retrace/com/android/tools/r8/retrace/api/RetraceApiTestCollection.java
+++ b/src/test/java8/retrace/com/android/tools/r8/retrace/api/RetraceApiTestCollection.java
@@ -4,20 +4,17 @@
 
 package com.android.tools.r8.retrace.api;
 
+import com.android.tools.r8.TestDeps;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.compilerapi.BinaryCompatibilityTestCollection;
 import com.google.common.collect.ImmutableList;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.List;
 import org.junit.rules.TemporaryFolder;
 
 public class RetraceApiTestCollection
     extends BinaryCompatibilityTestCollection<RetraceApiBinaryTest> {
 
-  private static final Path BINARY_COMPATIBILITY_JAR =
-      Paths.get(ToolHelper.THIRD_PARTY_DIR, "retrace", "binary_compatibility", "tests.jar");
-
   public static List<Class<? extends RetraceApiBinaryTest>> CLASSES_FOR_BINARY_COMPATIBILITY =
       ImmutableList.of(
           RetraceApiEmptyTest.RetraceTest.class,
@@ -68,7 +65,7 @@
 
   @Override
   public Path getCheckedInTestJar() {
-    return BINARY_COMPATIBILITY_JAR;
+    return TestDeps.getRetraceBinaryCompatibilityJar();
   }
 
   @Override
diff --git a/src/test/java8/retrace/com/android/tools/r8/retrace/partition/RetracePartitionAndJoinIdentityTest.java b/src/test/java8/retrace/com/android/tools/r8/retrace/partition/RetracePartitionAndJoinIdentityTest.java
index e8c953e..d75903d 100644
--- a/src/test/java8/retrace/com/android/tools/r8/retrace/partition/RetracePartitionAndJoinIdentityTest.java
+++ b/src/test/java8/retrace/com/android/tools/r8/retrace/partition/RetracePartitionAndJoinIdentityTest.java
@@ -7,10 +7,10 @@
 import static org.junit.Assert.assertNotNull;
 
 import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestDeps;
 import com.android.tools.r8.TestDiagnosticMessagesImpl;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.retrace.MappingPartitionMetadata;
 import com.android.tools.r8.retrace.PartitionMappingSupplier;
 import com.android.tools.r8.retrace.PartitionedToProguardMappingConverter;
@@ -43,8 +43,7 @@
   @Test
   public void testPartitionAndJoin() throws Exception {
     Path mappingFile =
-        ToolHelper.RETRACE_MAPS_DIR.resolve(
-            "ad5c3e88ef2bae5ef324eb225fbc57345cd57863-r8lib.jar.map");
+        TestDeps.getR8MappingsPath("ad5c3e88ef2bae5ef324eb225fbc57345cd57863-r8lib.jar.map");
     ProguardMapProducer proguardMapProducer = ProguardMapProducer.fromPath(mappingFile);
     TestDiagnosticMessagesImpl diagnosticsHandler = new TestDiagnosticMessagesImpl();
     Map<String, byte[]> partitions = new HashMap<>();
diff --git a/src/test/java8/retrace/com/android/tools/r8/retrace/partition/RetracePartitionFormatsTest.java b/src/test/java8/retrace/com/android/tools/r8/retrace/partition/RetracePartitionFormatsTest.java
index f0a7412..6ee0a7b 100644
--- a/src/test/java8/retrace/com/android/tools/r8/retrace/partition/RetracePartitionFormatsTest.java
+++ b/src/test/java8/retrace/com/android/tools/r8/retrace/partition/RetracePartitionFormatsTest.java
@@ -10,6 +10,7 @@
 import static org.junit.Assert.assertEquals;
 
 import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestDeps;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestRuntime.CfRuntime;
 import com.android.tools.r8.ToolHelper;
@@ -23,7 +24,6 @@
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.time.LocalDate;
 import java.util.List;
 import java.util.function.Consumer;
@@ -50,10 +50,6 @@
     this.directory = directory;
   }
 
-  private static Path getPartitionDataRoot() {
-    return Paths.get(ToolHelper.THIRD_PARTY_DIR, "retrace", "partition_formats");
-  }
-
   private static Path getRetracedStacktracePath(Path directory) {
     return directory.resolve("retraced-stacktrace.txt");
   }
@@ -67,7 +63,7 @@
   }
 
   private Path getDirectoryPath() {
-    return getPartitionDataRoot().resolve(directory);
+    return TestDeps.getRetracePartitionFormatsDir().resolve(directory);
   }
 
   @Test
@@ -113,7 +109,7 @@
 
     LocalDate now = LocalDate.now();
     String datePrefix = "" + now.getYear() + now.getMonthValue() + now.getDayOfMonth();
-    Path directory = getPartitionDataRoot().resolve(datePrefix);
+    Path directory = TestDeps.getRetracePartitionFormatsDir().resolve(datePrefix);
     Path mapping = getPartitionedMapPath(directory);
     Path rawStacktrace = getRawStacktracePath(directory);
     Path retracedStacktrace = getRetracedStacktracePath(directory);
@@ -147,7 +143,7 @@
     System.out.println("Remember to upload changes to cloud storage:");
     System.out.println(
         "(cd "
-            + getPartitionDataRoot().getParent()
+            + TestDeps.getRetracePartitionFormatsDir().getParent()
             + "; upload_to_google_storage.py -a --bucket r8-deps partition_formats)");
     System.out.println("==========================");
   }
diff --git a/src/test/java8/retrace/com/android/tools/r8/retrace/stacktraces/ActualBotStackTraceBase.java b/src/test/java8/retrace/com/android/tools/r8/retrace/stacktraces/ActualBotStackTraceBase.java
index b1b8e8b..30ac439 100644
--- a/src/test/java8/retrace/com/android/tools/r8/retrace/stacktraces/ActualBotStackTraceBase.java
+++ b/src/test/java8/retrace/com/android/tools/r8/retrace/stacktraces/ActualBotStackTraceBase.java
@@ -4,7 +4,7 @@
 
 package com.android.tools.r8.retrace.stacktraces;
 
-import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.TestDeps;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -12,7 +12,7 @@
 public abstract class ActualBotStackTraceBase implements StackTraceForTest {
 
   public String r8MappingFromGitSha(String sha) {
-    Path resolve = ToolHelper.RETRACE_MAPS_DIR.resolve(sha + "-r8lib.jar.map");
+    Path resolve = TestDeps.getR8MappingsPath(sha + "-r8lib.jar.map");
     try {
       return new String(Files.readAllBytes(resolve));
     } catch (IOException e) {
diff --git a/src/test/testbase/java/com/android/tools/r8/TestDeps.java b/src/test/testbase/java/com/android/tools/r8/TestDeps.java
index 4375e58..14a7a9d 100644
--- a/src/test/testbase/java/com/android/tools/r8/TestDeps.java
+++ b/src/test/testbase/java/com/android/tools/r8/TestDeps.java
@@ -40,17 +40,31 @@
   static {
     // This list is serves as a list of required properties to match in Gradle.
     dependencies = new HashMap<>();
+    dependencies.put("BUNDLETOOL", null);
     dependencies.put("CORE_LAMBDA_STUBS", null);
     dependencies.put("DEPENDENCIES", null);
     dependencies.put("GSON", null);
     dependencies.put("GUAVA_JRE", null);
+    dependencies.put("JACOCO", null);
     dependencies.put("JDWP_TESTS", null);
+    dependencies.put("JSR223", null);
+    dependencies.put("MULTIDEX", null);
+    dependencies.put("PROCESS_KEEP_RULES_BINARY_COMPATIBILITY", null);
+    dependencies.put("R8_MAPPINGS", null);
+    dependencies.put("RETRACE_BINARY_COMPATIBILITY", null);
+    dependencies.put("RETRACE_PARTITION_FORMATS", null);
+    dependencies.put("RHINO", null);
+    dependencies.put("RHINO_ANDROID", null);
   }
 
   private static Path getDependency(String key) {
     return dependencies.computeIfAbsent(key, TestDeps::getTestDependency);
   }
 
+  public static Path getBundleToolJar() {
+    return getDependencyPath("BUNDLETOOL", "bundletool-all-1.11.0.jar");
+  }
+
   public static Path getCoreLambdaStubsJar() {
     return getDependencyPath("CORE_LAMBDA_STUBS", "core-lambda-stubs.jar");
   }
@@ -67,6 +81,62 @@
     return getDependencyPath("GUAVA_JRE", "guava-32.1.2-jre.jar");
   }
 
+  public static Path getJacocoAgentJar() {
+    return getDependencyPath("JACOCO", "lib", "jacocoagent.jar");
+  }
+
+  public static Path getJacocoCliJar() {
+    return getDependencyPath("JACOCO", "lib", "jacococli.jar");
+  }
+
+  public static Path getJsr223RiJar() {
+    return getDependencyPath("JSR223", "jsr223-api-1.0.jar");
+  }
+
+  public static Path getMultidex1_0_3Jar() {
+    return getDependencyPath("MULTIDEX", "multidex-1.0.3.jar");
+  }
+
+  public static Path getMultidexInstrumentation1_0_3Jar() {
+    return getDependencyPath("MULTIDEX", "multidex-instrumentation-1.0.3.jar");
+  }
+
+  public static Path getMultidex2_0_1Jar() {
+    return getDependencyPath("MULTIDEX", "multidex-2.0.1.jar");
+  }
+
+  public static Path getMultidexInstrumentation2_0_0Jar() {
+    return getDependencyPath("MULTIDEX", "multidex-instrumentation-2.0.0.jar");
+  }
+
+  public static Path getProcessKeepRulesBinaryCompatibilityJar() {
+    return getDependencyPath("PROCESS_KEEP_RULES_BINARY_COMPATIBILITY", "tests.jar");
+  }
+
+  public static Path getR8MappingsDir() {
+    return getDependency("R8_MAPPINGS");
+  }
+
+  public static Path getR8MappingsPath(String... path) {
+    return getDependencyPath("R8_MAPPINGS", path);
+  }
+
+  public static Path getRetraceBinaryCompatibilityJar() {
+    return getDependencyPath("RETRACE_BINARY_COMPATIBILITY", "tests.jar");
+  }
+
+  public static Path getRetracePartitionFormatsDir() {
+    return getDependency("RETRACE_PARTITION_FORMATS");
+  }
+
+  public static Path getRhinoJar() {
+    return getDependencyPath("RHINO", "rhino-1.7.10.jar");
+  }
+
+  public static Path getRhinoAndroidJar() {
+    return getDependencyPath("RHINO_ANDROID", "rhino-android-1.1.1.jar");
+  }
+
   public static Path getJunitJar() {
     return getDependencyPath("DEPENDENCIES", "junit", "junit", "4.13.2", "junit-4.13.2.jar");
   }
diff --git a/src/test/testbase/java/com/android/tools/r8/ToolHelper.java b/src/test/testbase/java/com/android/tools/r8/ToolHelper.java
index 447fa5e..98d70f4 100644
--- a/src/test/testbase/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/testbase/java/com/android/tools/r8/ToolHelper.java
@@ -233,10 +233,6 @@
 
   public static final String CORE_LAMBDA_STUBS =
       THIRD_PARTY_DIR + "core-lambda-stubs/core-lambda-stubs.jar";
-  public static final String JSR223_RI_JAR = THIRD_PARTY_DIR + "jsr223-api-1.0/jsr223-api-1.0.jar";
-  public static final String RHINO_ANDROID_JAR =
-      THIRD_PARTY_DIR + "rhino-android-1.1.1/rhino-android-1.1.1.jar";
-  public static final String RHINO_JAR = THIRD_PARTY_DIR + "rhino-1.7.10/rhino-1.7.10.jar";
   public static final String K2JVMCompiler = "org.jetbrains.kotlin.cli.jvm.K2JVMCompiler";
   private static final String ANDROID_JAR_PATTERN =
       THIRD_PARTY_DIR + "android_jar/lib-v%s/android.jar";
@@ -250,14 +246,9 @@
   public static final String JDK_11_TESTS_DIR = OPEN_JDK_DIR + "jdk-11-test/";
   public static final String JDK_11_TIME_TESTS_DIR = JDK_11_TESTS_DIR + "java/time/";
 
-  public static final Path JACOCO_ROOT = Paths.get(THIRD_PARTY_DIR, "jacoco", "0.8.6");
-  public static final Path JACOCO_AGENT = JACOCO_ROOT.resolve(Paths.get("lib", "jacocoagent.jar"));
-  public static final Path JACOCO_CLI = JACOCO_ROOT.resolve(Paths.get("lib", "jacococli.jar"));
   public static final String PROGUARD_SETTINGS_FOR_INTERNAL_APPS =
       THIRD_PARTY_DIR + "proguardsettings/";
 
-  public static final Path RETRACE_MAPS_DIR = Paths.get(THIRD_PARTY_DIR, "r8mappings");
-
   // TODO(b/270105162): These should be removed when finished transitioning.
   public static final Path R8_WITH_RELOCATED_DEPS_17_JAR =
       Paths.get(LIBS_DIR, "r8_with_relocated_deps_17.jar");
@@ -2282,7 +2273,7 @@
     List<String> cmdline = new ArrayList<>();
     cmdline.add(TestRuntime.getSystemRuntime().asCf().getJavaExecutable().toString());
     cmdline.add("-jar");
-    cmdline.add(ToolHelper.JACOCO_CLI.toString());
+    cmdline.add(TestDeps.getJacocoCliJar().toString());
     cmdline.add("instrument");
     cmdline.add(sourceClassFiles.toString());
     cmdline.add("--dest");
@@ -2296,7 +2287,7 @@
     List<String> cmdline = new ArrayList<>();
     cmdline.add(TestRuntime.getSystemRuntime().asCf().getJavaExecutable().toString());
     cmdline.add("-jar");
-    cmdline.add(ToolHelper.JACOCO_CLI.toString());
+    cmdline.add(TestDeps.getJacocoCliJar().toString());
     cmdline.add("report");
     cmdline.add(jacocoExec.toString());
     cmdline.add("--classfiles");