test(archunit): fix foreignJpaRepositoryFor exact-segment matching

Replace substring contains() with a regex exact-segment match so a
domain whose name is a substring of another (e.g. "tag" in "tagging")
cannot silently escape the predicate and produce a false negative.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-05-05 17:57:47 +02:00
parent 22ec808b2d
commit 0dd58556a7

View File

@@ -118,11 +118,15 @@ class ArchitectureTest {
// Tracked in: http://heim-nas:3005/marcel/familienarchiv/issues/427
private static DescribedPredicate<JavaClass> foreignJpaRepositoryFor(String ownDomain) {
// Exact-segment match: prevents a domain name that is a substring of another
// (e.g. "tag" inside "tagging") from silently escaping the predicate.
// The pattern matches the domain as a complete path segment, with an optional sub-package.
String ownPackagePattern = ".*\\.familienarchiv\\." + ownDomain + "(\\..+)?$";
return new DescribedPredicate<JavaClass>("be a JPA repository from a domain other than " + ownDomain) {
@Override
public boolean test(JavaClass clazz) {
return clazz.isAssignableTo(JpaRepository.class)
&& !clazz.getPackageName().contains("." + ownDomain);
&& !clazz.getPackageName().matches(ownPackagePattern);
}
};
}