javapackages/runit/ApacheCommonsCheck.java
2023-12-11 16:04:36 +01:00

51 lines
1.9 KiB
Java

package tests;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.*;
import static org.junit.jupiter.api.Assumptions.assumeFalse;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.DisplayName;
import io.kojan.javadeptools.rpm.RpmDependency;
import io.kojan.javadeptools.rpm.RpmInfo;
import io.kojan.runit.api.PackageTest;
@DisplayName("/apache-commons")
public class ApacheCommonsCheck {
private void assumeApacheCommonsPackage(RpmInfo rpm) {
assumeTrue(startsWith("apache-commons-").matches(rpm.getName()),
"This test is valid only for Apache Commons packages");
}
@PackageTest
public void saneName(RpmInfo rpm) {
assumeApacheCommonsPackage(rpm);
assertThat("Package name is sane", rpm.getName(),
either(matchesRegex("apache-commons-[a-z][a-z0-9]+(-javadoc)?"))
.or(is("apache-commons-collections-testframework")));
}
@PackageTest
@Disabled("JPMS provides are not generated for now")
public void jpmsProvides(RpmInfo rpm) {
assumeApacheCommonsPackage(rpm);
assumeFalse(rpm.isSourcePackage(), "Skip source packages");
assumeFalse(is("apache-commons-parent").matches(rpm.getName()), "Skip apache-commons-parent");
Pattern pattern = Pattern.compile("apache-commons-([a-z][a-z0-9]+)");
Matcher matcher = pattern.matcher(rpm.getName());
assumeTrue(matcher.matches(), "Skip javadoc and other binary subpackages");
String id = matcher.group(1);
List<String> prov = rpm.getProvides().stream().map(RpmDependency::getName).collect(Collectors.toList());
assertThat("Apache Commons packages should have jpms provides", prov,
hasItem("jpms(org.apache.commons." + id + ")"));
}
}