private void scan()

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);
                    }
                }
            }
        }
    }