blob: 43b3276c09be734278e7ea1c35870f7019259123 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE
* file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
* to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package org.apache.tuweni.dist;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.junit.jupiter.api.Test;
/**
* Tests no duplicate entries are present in the distribution zip file.
*/
class DistributionTest {
private static Path distributionsFolder() {
File currentFile = new File(DistributionTest.class.getProtectionDomain().getCodeSource().getLocation().getPath());
// dist/build/classes/java/org/apache/tuweni/dist
Path parentFolder = currentFile.toPath();
while (!"dist".equals(parentFolder.getFileName().toString()) && parentFolder.getParent() != null) {
parentFolder = parentFolder.getParent();
}
return parentFolder.resolve("build/distributions");
}
@Test
void testZipFileContents() throws IOException {
Map<String, Set<String>> dupes = new HashMap<>();
boolean foundOneZipFile = false;
Path distFolder = distributionsFolder();
File distFolderFile = distFolder.toFile();
assertTrue(distFolderFile.exists(), distFolder.toAbsolutePath() + " doesn't exist");
for (File archive : distFolderFile.listFiles()) {
if (archive.getName().endsWith(".zip")) {
foundOneZipFile = true;
Set<String> duplicates = new HashSet<>();
Set<String> files = new HashSet<>();
try (ZipFile zip = new ZipFile(archive)) {
Enumeration<? extends ZipEntry> entries = zip.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
if (!files.add(entry.getName())) {
duplicates.add(entry.getName());
dupes.putIfAbsent(archive.getName(), duplicates);
}
}
}
}
}
assertTrue(foundOneZipFile);
for (Map.Entry<String, Set<String>> entry : dupes.entrySet()) {
System.out.println("Archive :" + entry.getKey());
for (String file : entry.getValue()) {
System.out.println("\t-" + file);
}
}
assertTrue(dupes.isEmpty());
}
}