Skip to content

Commit 6eaaa29

Browse files
committed
fix description of targetOwner predicate
targetOwner was producing the same message as target() eg. "access target where target is annotated with..." instead of "access target where owner is annotated with..." Signed-off-by: John Burns <wakingrufus@gmail.com>
1 parent 7a88298 commit 6eaaa29

File tree

2 files changed

+36
-6
lines changed

2 files changed

+36
-6
lines changed

archunit/src/main/java/com/tngtech/archunit/core/domain/JavaAccess.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@
1515
*/
1616
package com.tngtech.archunit.core.domain;
1717

18-
import java.util.Collections;
19-
import java.util.Set;
20-
2118
import com.tngtech.archunit.PublicAPI;
2219
import com.tngtech.archunit.base.ChainableFunction;
2320
import com.tngtech.archunit.base.DescribedPredicate;
@@ -29,6 +26,9 @@
2926
import com.tngtech.archunit.core.domain.properties.HasSourceCodeLocation;
3027
import com.tngtech.archunit.core.importer.DomainBuilders.JavaAccessBuilder;
3128

29+
import java.util.Collections;
30+
import java.util.Set;
31+
3232
import static com.google.common.base.Preconditions.checkNotNull;
3333
import static com.google.common.collect.ImmutableSet.toImmutableSet;
3434
import static com.tngtech.archunit.PublicAPI.Usage.ACCESS;
@@ -112,7 +112,7 @@ public <T> Set<T> convertTo(Class<T> type) {
112112
@Override
113113
public String toString() {
114114
return getClass().getSimpleName() +
115-
"{origin=" + origin + ", target=" + target + ", lineNumber=" + getLineNumber() + additionalToStringFields() + '}';
115+
"{origin=" + origin + ", target=" + target + ", lineNumber=" + getLineNumber() + additionalToStringFields() + '}';
116116
}
117117

118118
String additionalToStringFields() {
@@ -168,12 +168,16 @@ public static DescribedPredicate<JavaAccess<?>> originOwnerEqualsTargetOwner() {
168168

169169
@PublicAPI(usage = ACCESS)
170170
public static DescribedPredicate<JavaAccess<?>> targetOwner(DescribedPredicate<? super JavaClass> predicate) {
171-
return target(Get.<JavaClass>owner().is(predicate));
171+
DescribedPredicate<JavaAccess<?>> targetPredicate =
172+
predicate.onResultOf(JavaAccess.Functions.Get.target()
173+
.then(HasOwner.Functions.Get.owner()));
174+
return targetPredicate.as("owner %s", predicate.getDescription());
172175
}
173176

174177
@PublicAPI(usage = ACCESS)
175178
public static DescribedPredicate<JavaAccess<?>> target(DescribedPredicate<? super AccessTarget> predicate) {
176-
return new TargetPredicate<>(predicate);
179+
DescribedPredicate<JavaAccess<?>> targetPredicate = predicate.onResultOf(JavaAccess.Functions.Get.target());
180+
return targetPredicate.as("target %s", predicate.getDescription());
177181
}
178182

179183
private static class OriginOwnerEqualsTargetOwnerPredicate extends DescribedPredicate<JavaAccess<?>> {

archunit/src/test/java/com/tngtech/archunit/core/domain/JavaAccessTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,32 @@ public void origin_predicate() {
6060
assertThat(predicate).rejects(anyAccess());
6161
}
6262

63+
@Test
64+
public void target_predicate() {
65+
DescribedPredicate<JavaAccess<?>> predicate =
66+
JavaAccess.Predicates.target(DescribedPredicate.<AccessTarget>alwaysTrue().as("some text"));
67+
68+
assertThat(predicate)
69+
.hasDescription("target some text")
70+
.accepts(anyAccess());
71+
72+
predicate = JavaAccess.Predicates.target(alwaysFalse());
73+
assertThat(predicate).rejects(anyAccess());
74+
}
75+
76+
@Test
77+
public void targetOwner_predicate() {
78+
DescribedPredicate<JavaAccess<?>> predicate =
79+
JavaAccess.Predicates.targetOwner(DescribedPredicate.<JavaClass>alwaysTrue().as("some text"));
80+
81+
assertThat(predicate)
82+
.hasDescription("owner some text")
83+
.accepts(anyAccess());
84+
85+
predicate = JavaAccess.Predicates.targetOwner(alwaysFalse());
86+
assertThat(predicate).rejects(anyAccess());
87+
}
88+
6389
@Test
6490
public void convertTo() {
6591
TestJavaAccess access = javaAccessFrom(importClassWithContext(String.class), "toString")

0 commit comments

Comments
 (0)