From feb2a30910fe6410ffa2912fe547883de3add6c6 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Tue, 23 Aug 2022 16:03:06 +0200 Subject: [PATCH] Improve precondition checks in TestClassScanner --- .../test/context/aot/TestClassScanner.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/test/context/aot/TestClassScanner.java b/spring-test/src/main/java/org/springframework/test/context/aot/TestClassScanner.java index bcc14b86f0..a83e89cd0d 100644 --- a/spring-test/src/main/java/org/springframework/test/context/aot/TestClassScanner.java +++ b/spring-test/src/main/java/org/springframework/test/context/aot/TestClassScanner.java @@ -17,6 +17,7 @@ package org.springframework.test.context.aot; import java.lang.annotation.Annotation; +import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; import java.util.Comparator; @@ -103,9 +104,7 @@ class TestClassScanner { * @param classpathRoots the classpath roots to scan */ TestClassScanner(Set classpathRoots) { - Assert.notEmpty(classpathRoots, "'classpathRoots' must not be null or empty"); - Assert.noNullElements(classpathRoots, "'classpathRoots' must not contain null elements"); - this.classpathRoots = classpathRoots; + this.classpathRoots = assertPreconditions(classpathRoots); } @@ -207,4 +206,13 @@ class TestClassScanner { mergedAnnotations.isPresent(BootstrapWith.class)); } + + private static Set assertPreconditions(Set classpathRoots) { + Assert.notEmpty(classpathRoots, "'classpathRoots' must not be null or empty"); + Assert.noNullElements(classpathRoots, "'classpathRoots' must not contain null elements"); + classpathRoots.forEach(classpathRoot -> Assert.isTrue(Files.exists(classpathRoot), + () -> "Classpath root [%s] does not exist".formatted(classpathRoot))); + return classpathRoots; + } + }