Skip to content

Commit

Permalink
Adds some hardening to ScanOption
Browse files Browse the repository at this point in the history
  • Loading branch information
jqno committed Feb 4, 2025
1 parent acd3265 commit a137d34
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package nl.jqno.equalsverifier;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.*;
import java.util.function.Predicate;

import nl.jqno.equalsverifier.internal.reflection.PackageScanOptions;
Expand All @@ -18,6 +16,7 @@ static class MustExtend implements ScanOption {
final Class<?> type;

MustExtend(Class<?> type) {
Objects.requireNonNull(type);
this.type = type;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,13 @@ void succeed_whenVerifyingACorrectPackageRecursively() {
EqualsVerifier.forPackage(CORRECT_PACKAGE, ScanOption.recursive()).verify();
}

@Test
void fail_whenVerifyingAPackageWithASuperclass_ifSuperclassIsNull() {
ExpectedException
.when(() -> EqualsVerifier.forPackage(SUBCLASSES_PACKAGE, ScanOption.mustExtend(null)).verify())
.assertThrows(NullPointerException.class);
}

@Test
void succeed_whenVerifyingAPackageWithASuperclass() {
EqualsVerifier.forPackage(SUBCLASSES_PACKAGE, ScanOption.mustExtend(SuperA.class)).verify();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,24 @@ void happyPathMustExtendClassRecursive() {
assertThat(classes).isEqualTo(Arrays.asList(SubA1.class, SubA2.class, SubA3.class));
}

@Test
void happyPathExceptClasses() {
opts.exceptClasses.add(B.class);
List<Class<?>> classes =
PackageScanner.getClassesIn("nl.jqno.equalsverifier.testhelpers.packages.correct", opts);
sort(classes);
assertThat(classes).isEqualTo(Arrays.asList(A.class, C.class));
}

@Test
void happyPathExceptPredicate() {
opts.exclusionPredicate = c -> c.getSimpleName().endsWith("B");
List<Class<?>> classes =
PackageScanner.getClassesIn("nl.jqno.equalsverifier.testhelpers.packages.correct", opts);
sort(classes);
assertThat(classes).isEqualTo(Arrays.asList(A.class, C.class));
}

@Test
void filterOutTestClasses() {
List<Class<?>> classes = PackageScanner.getClassesIn("nl.jqno.equalsverifier.internal.reflection", opts);
Expand Down

0 comments on commit a137d34

Please sign in to comment.