in maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/FileScanner.java [46:81]
private void scan(
Collection<String> scannedJavaClassNames,
TestFilter<String, String> filter,
File basedir,
String... subDirectories) {
File[] filesAndDirs = basedir.listFiles();
if (filesAndDirs != null) {
final String pAckage = toJavaPackage(subDirectories);
final String path = toPath(subDirectories);
final String ext = this.ext;
final boolean hasExtension = ext != null;
final int extLength = hasExtension ? ext.length() : 0;
for (File fileOrDir : filesAndDirs) {
String name = fileOrDir.getName();
if (!name.isEmpty()) {
if (fileOrDir.isFile()) {
final int clsLength = name.length() - extLength;
if (clsLength > 0
&& (!hasExtension || name.regionMatches(true, clsLength, ext, 0, extLength))) {
String simpleClassName = hasExtension ? name.substring(0, clsLength) : name;
if (filter.shouldRun(toFile(path, simpleClassName), null)) {
String fullyQualifiedClassName =
pAckage.isEmpty() ? simpleClassName : pAckage + '.' + simpleClassName;
scannedJavaClassNames.add(fullyQualifiedClassName);
}
}
} else if (fileOrDir.isDirectory()) {
String[] paths = new String[subDirectories.length + 1];
System.arraycopy(subDirectories, 0, paths, 0, subDirectories.length);
paths[subDirectories.length] = name;
scan(scannedJavaClassNames, filter, fileOrDir, paths);
}
}
}
}
}