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:
@@ -118,11 +118,15 @@ class ArchitectureTest {
|
|||||||
// Tracked in: http://heim-nas:3005/marcel/familienarchiv/issues/427
|
// Tracked in: http://heim-nas:3005/marcel/familienarchiv/issues/427
|
||||||
|
|
||||||
private static DescribedPredicate<JavaClass> foreignJpaRepositoryFor(String ownDomain) {
|
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) {
|
return new DescribedPredicate<JavaClass>("be a JPA repository from a domain other than " + ownDomain) {
|
||||||
@Override
|
@Override
|
||||||
public boolean test(JavaClass clazz) {
|
public boolean test(JavaClass clazz) {
|
||||||
return clazz.isAssignableTo(JpaRepository.class)
|
return clazz.isAssignableTo(JpaRepository.class)
|
||||||
&& !clazz.getPackageName().contains("." + ownDomain);
|
&& !clazz.getPackageName().matches(ownPackagePattern);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user