Use zip file builder in tracereferences tests

Bug: 169127026
Bug: 169546956
Change-Id: Ie4fcd0f06859f3e3c105437613422cf7fb41642d
diff --git a/src/test/java/com/android/tools/r8/tracereferences/TraceReferencesArrayTypesTest.java b/src/test/java/com/android/tools/r8/tracereferences/TraceReferencesArrayTypesTest.java
index 7d76052..35f215e 100644
--- a/src/test/java/com/android/tools/r8/tracereferences/TraceReferencesArrayTypesTest.java
+++ b/src/test/java/com/android/tools/r8/tracereferences/TraceReferencesArrayTypesTest.java
@@ -15,7 +15,7 @@
 import com.android.tools.r8.references.Reference;
 import com.android.tools.r8.references.TypeReference;
 import com.android.tools.r8.utils.AndroidApiLevel;
-import com.android.tools.r8.utils.ZipUtils;
+import com.android.tools.r8.utils.ZipUtils.ZipBuilder;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import java.nio.file.Path;
@@ -71,22 +71,24 @@
   @Test
   public void arrayTypes() throws Throwable {
     Path dir = temp.newFolder().toPath();
-    Path targetJar = dir.resolve("target.jar");
-    Path sourceJar = dir.resolve("source.jar");
-    ZipUtils.zip(
-        targetJar,
-        ToolHelper.getClassPathForTests(),
-        ToolHelper.getClassFileForTestClass(Target.class),
-        ToolHelper.getClassFileForTestClass(TargetFieldType.class),
-        ToolHelper.getClassFileForTestClass(TargetArgType.class),
-        ToolHelper.getClassFileForTestClass(TargetReturnType.class),
-        ToolHelper.getClassFileForTestClass(TargetInstantiatedType.class),
-        ToolHelper.getClassFileForTestClass(TargetInstanceOfType.class),
-        ToolHelper.getClassFileForTestClass(TargetCheckCastType.class));
-    ZipUtils.zip(
-        sourceJar,
-        ToolHelper.getClassPathForTests(),
-        ToolHelper.getClassFileForTestClass(Source.class));
+    Path targetJar =
+        ZipBuilder.builder(dir.resolve("target.jar"))
+            .addFilesRelative(
+                ToolHelper.getClassPathForTests(),
+                ToolHelper.getClassFileForTestClass(Target.class),
+                ToolHelper.getClassFileForTestClass(TargetFieldType.class),
+                ToolHelper.getClassFileForTestClass(TargetArgType.class),
+                ToolHelper.getClassFileForTestClass(TargetReturnType.class),
+                ToolHelper.getClassFileForTestClass(TargetInstantiatedType.class),
+                ToolHelper.getClassFileForTestClass(TargetInstanceOfType.class),
+                ToolHelper.getClassFileForTestClass(TargetCheckCastType.class))
+            .build();
+    Path sourceJar =
+        ZipBuilder.builder(dir.resolve("source.jar"))
+            .addFilesRelative(
+                ToolHelper.getClassPathForTests(),
+                ToolHelper.getClassFileForTestClass(Source.class))
+            .build();
     DiagnosticsChecker diagnosticsChecker = new DiagnosticsChecker();
     MissingReferencesConsumer consumer = new MissingReferencesConsumer();
 
diff --git a/src/test/java/com/android/tools/r8/tracereferences/TraceReferencesCommandTest.java b/src/test/java/com/android/tools/r8/tracereferences/TraceReferencesCommandTest.java
index 5ea9bd0..77c1e53 100644
--- a/src/test/java/com/android/tools/r8/tracereferences/TraceReferencesCommandTest.java
+++ b/src/test/java/com/android/tools/r8/tracereferences/TraceReferencesCommandTest.java
@@ -21,18 +21,15 @@
 import com.android.tools.r8.utils.FileUtils;
 import com.android.tools.r8.utils.StringUtils;
 import com.android.tools.r8.utils.ZipUtils;
+import com.android.tools.r8.utils.ZipUtils.ZipBuilder;
 import com.google.common.collect.ImmutableList;
-import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.List;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
 import kotlin.text.Charsets;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -213,20 +210,22 @@
       Consumer<DiagnosticsChecker> diagnosticsCheckerConsumer)
       throws Throwable {
     Path dir = temp.newFolder().toPath();
-    Path targetJar = dir.resolve("target.jar");
-    Path sourceJar = dir.resolve("source.jar");
-    ZipUtils.zip(
-        targetJar,
-        ToolHelper.getClassPathForTests(),
-        targetClasses.stream()
-            .map(ToolHelper::getClassFileForTestClass)
-            .collect(Collectors.toList()));
-    ZipUtils.zip(
-        sourceJar,
-        ToolHelper.getClassPathForTests(),
-        sourceClasses.stream()
-            .map(ToolHelper::getClassFileForTestClass)
-            .collect(Collectors.toList()));
+    Path targetJar =
+        ZipBuilder.builder(dir.resolve("target.jar"))
+            .addFilesRelative(
+                ToolHelper.getClassPathForTests(),
+                targetClasses.stream()
+                    .map(ToolHelper::getClassFileForTestClass)
+                    .collect(Collectors.toList()))
+            .build();
+    Path sourceJar =
+        ZipBuilder.builder(dir.resolve("source.jar"))
+            .addFilesRelative(
+                ToolHelper.getClassPathForTests(),
+                sourceClasses.stream()
+                    .map(ToolHelper::getClassFileForTestClass)
+                    .collect(Collectors.toList()))
+            .build();
     runAndCheckOutput(targetJar, sourceJar, format, expected, diagnosticsCheckerConsumer);
   }
 
@@ -344,17 +343,19 @@
   @Test
   public void testMissingReference_errorToWarning() throws Throwable {
     Path dir = temp.newFolder().toPath();
-    Path targetJar = dir.resolve("target.jar");
-    Path sourceJar = dir.resolve("source.jar");
+    Path targetJar =
+        ZipBuilder.builder(dir.resolve("target.jar"))
+            .addFilesRelative(
+                ToolHelper.getClassPathForTests(),
+                ToolHelper.getClassFileForTestClass(OtherTarget.class))
+            .build();
+    Path sourceJar =
+        ZipBuilder.builder(dir.resolve("source.jar"))
+            .addFilesRelative(
+                ToolHelper.getClassPathForTests(),
+                ToolHelper.getClassFileForTestClass(Source.class))
+            .build();
     Path output = dir.resolve("output.txt");
-    ZipUtils.zip(
-        targetJar,
-        ToolHelper.getClassPathForTests(),
-        ToolHelper.getClassFileForTestClass(OtherTarget.class));
-    ZipUtils.zip(
-        sourceJar,
-        ToolHelper.getClassPathForTests(),
-        ToolHelper.getClassFileForTestClass(Source.class));
     DiagnosticsChecker diagnosticsChecker = new DiagnosticsChecker();
     TraceReferences.run(
         TraceReferencesCommand.parse(
@@ -382,16 +383,6 @@
     assertEquals(0, diagnosticsChecker.infos.size());
   }
 
-  public static void zip(Path zipFile, String path, byte[] data) throws IOException {
-    try (ZipOutputStream stream =
-        new ZipOutputStream(new BufferedOutputStream(Files.newOutputStream(zipFile)))) {
-      ZipEntry zipEntry = new ZipEntry(path);
-      stream.putNextEntry(zipEntry);
-      stream.write(data);
-      stream.closeEntry();
-    }
-  }
-
   private void checkTargetPartlyMissing(DiagnosticsChecker diagnosticsChecker) {
     Field field;
     Method method;
@@ -411,13 +402,17 @@
   @Test
   public void testMissingDefinition_printUses() throws Throwable {
     Path dir = temp.newFolder().toPath();
-    Path targetJar = dir.resolve("target.jar");
-    Path sourceJar = dir.resolve("source.jar");
-    zip(targetJar, DescriptorUtils.getPathFromJavaType(Target.class), getClassWithTargetRemoved());
-    ZipUtils.zip(
-        sourceJar,
-        ToolHelper.getClassPathForTests(),
-        ToolHelper.getClassFileForTestClass(Source.class));
+    Path targetJar =
+        ZipBuilder.builder(dir.resolve("target.jar"))
+            .addBytes(
+                DescriptorUtils.getPathFromJavaType(Target.class), getClassWithTargetRemoved())
+            .build();
+    Path sourceJar =
+        ZipBuilder.builder(dir.resolve("source.jar"))
+            .addFilesRelative(
+                ToolHelper.getClassPathForTests(),
+                ToolHelper.getClassFileForTestClass(Source.class))
+            .build();
     try {
       runAndCheckOutput(
           targetJar,
@@ -436,9 +431,17 @@
   @Test
   public void testMissingDefinition_keepRules() throws Throwable {
     Path dir = temp.newFolder().toPath();
-    Path targetJar = dir.resolve("target.jar");
-    Path sourceJar = dir.resolve("source.jar");
-    zip(targetJar, DescriptorUtils.getPathFromJavaType(Target.class), getClassWithTargetRemoved());
+    Path targetJar =
+        ZipBuilder.builder(dir.resolve("target.jar"))
+            .addBytes(
+                DescriptorUtils.getPathFromJavaType(Target.class), getClassWithTargetRemoved())
+            .build();
+    Path sourceJar =
+        ZipBuilder.builder(dir.resolve("source.jar"))
+            .addFilesRelative(
+                ToolHelper.getClassPathForTests(),
+                ToolHelper.getClassFileForTestClass(Source.class))
+            .build();
     ZipUtils.zip(
         sourceJar,
         ToolHelper.getClassPathForTests(),
@@ -465,13 +468,17 @@
   @Test
   public void testMissingDefinition_keepRulesAllowObfuscation() throws Throwable {
     Path dir = temp.newFolder().toPath();
-    Path targetJar = dir.resolve("target.jar");
-    Path sourceJar = dir.resolve("source.jar");
-    zip(targetJar, DescriptorUtils.getPathFromJavaType(Target.class), getClassWithTargetRemoved());
-    ZipUtils.zip(
-        sourceJar,
-        ToolHelper.getClassPathForTests(),
-        ToolHelper.getClassFileForTestClass(Source.class));
+    Path targetJar =
+        ZipBuilder.builder(dir.resolve("target.jar"))
+            .addBytes(
+                DescriptorUtils.getPathFromJavaType(Target.class), getClassWithTargetRemoved())
+            .build();
+    Path sourceJar =
+        ZipBuilder.builder(dir.resolve("source.jar"))
+            .addFilesRelative(
+                ToolHelper.getClassPathForTests(),
+                ToolHelper.getClassFileForTestClass(Source.class))
+            .build();
     try {
       runAndCheckOutput(
           targetJar,