Attempt to sort directory files before zipping
Bug: b/299402277
Change-Id: I32ee6a3ea8e7376713c44214995a6b89c0512ce9
diff --git a/src/main/java/com/android/tools/r8/utils/ZipUtils.java b/src/main/java/com/android/tools/r8/utils/ZipUtils.java
index 5d74954..e02d3e0 100644
--- a/src/main/java/com/android/tools/r8/utils/ZipUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/ZipUtils.java
@@ -149,6 +149,7 @@
List<Path> files =
Files.walk(inputDirectory)
.filter(path -> !Files.isDirectory(path))
+ .sorted()
.collect(Collectors.toList());
zip(zipFile, inputDirectory, files);
}
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/customconversion/GenerateCustomConversionTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/customconversion/GenerateCustomConversionTest.java
index fc8552b..0b6ff7e 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/customconversion/GenerateCustomConversionTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/customconversion/GenerateCustomConversionTest.java
@@ -7,6 +7,7 @@
import static com.android.tools.r8.desugar.desugaredlibrary.DesugaredLibraryTestBase.getAllFilesWithSuffixInDirectory;
import static com.android.tools.r8.utils.FileUtils.CLASS_EXTENSION;
import static com.android.tools.r8.utils.FileUtils.JAVA_EXTENSION;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.JavaCompilerTool;
@@ -14,18 +15,16 @@
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.TestRuntime;
-import com.android.tools.r8.TestRuntime.CfVm;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.CustomConversionVersion;
-import com.google.common.collect.Sets;
-import com.google.common.collect.Sets.SetView;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
-import java.util.Set;
+import java.util.List;
import java.util.stream.Stream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@@ -39,15 +38,13 @@
@RunWith(Parameterized.class)
public class GenerateCustomConversionTest extends TestBase {
- private final TestParameters parameters;
-
@Parameters(name = "{0}")
public static TestParametersCollection data() {
- return getTestParameters().withCfRuntime(CfVm.JDK11).build();
+ return getTestParameters().withNoneRuntime().build();
}
public GenerateCustomConversionTest(TestParameters parameters) {
- this.parameters = parameters;
+ parameters.assertNoneRuntime();
}
@Test
@@ -70,7 +67,7 @@
Path thirdPartyFile = ToolHelper.getDesugarLibConversions(version);
uploadJarsToCloudStorageIfTestFails(
(file1, file2) -> {
- verifySameFilesInJar(file1, file2);
+ verifySameFilesInJarInSameOrder(file1, file2);
assertProgramsEqual(file1, file2);
return filesAreEqual(file1, file2);
},
@@ -79,26 +76,22 @@
}
}
- private static void verifySameFilesInJar(Path file1, Path file2) throws IOException {
+ private static void verifySameFilesInJarInSameOrder(Path file1, Path file2) throws IOException {
try (ZipFile zipFile1 = new ZipFile(file1.toFile())) {
try (ZipFile zipFile2 = new ZipFile(file2.toFile())) {
Enumeration<? extends ZipEntry> entries1 = zipFile1.entries();
- Enumeration<? extends ZipEntry> entries2 = zipFile2.entries();
- Set<String> s1 = Sets.newHashSet();
+ List<String> s1 = new ArrayList<>();
while (entries1.hasMoreElements()) {
ZipEntry entry = entries1.nextElement();
s1.add(entry.getName());
}
- Set<String> s2 = Sets.newHashSet();
+ Enumeration<? extends ZipEntry> entries2 = zipFile2.entries();
+ List<String> s2 = new ArrayList<>();
while (entries2.hasMoreElements()) {
ZipEntry entry = entries2.nextElement();
s2.add(entry.getName());
}
- SetView<String> intersection = Sets.intersection(s1, s2);
- Set<String> inter = Sets.newHashSet(intersection);
- s1.removeAll(inter);
- s2.removeAll(inter);
- assert s1.isEmpty() && s2.isEmpty() : "Extra files in " + s1 + " or " + s2;
+ assertEquals(s1, s2);
}
}
}