private List<File> scanSourceFiles() { final List<File> asciidoctorFiles; String absoluteSourceDirectory = sourceDirectory; if (extensions == null || extensions.isEmpty()) { final DirectoryWalker directoryWalker = new AsciiDocDirectoryWalker(absoluteSourceDirectory); asciidoctorFiles = directoryWalker.scan(); } else { final DirectoryWalker directoryWalker = new CustomExtensionDirectoryWalker( absoluteSourceDirectory, Arrays.asList(extensions.split(","))); asciidoctorFiles = directoryWalker.scan(); } for (Iterator<File> iter = asciidoctorFiles.iterator(); iter.hasNext(); ) { File f = iter.next(); do { // stop when we hit the source directory root if (absoluteSourceDirectory.equals(f.getAbsolutePath())) { break; } // skip if the filename or directory begins with _ if (f.getName().startsWith("_")) { iter.remove(); break; } } while ((f = f.getParentFile()) != null); } return asciidoctorFiles; }
@Test public void no_should_be_returned_if_glob_expression_does_not_match() { File pathToWalk = classpath.getResource("src"); DirectoryWalker globDirectoryWalker = new GlobDirectoryWalker(pathToWalk.getPath(), "**/*.a"); List<File> asciidocFiles = globDirectoryWalker.scan(); assertThat(asciidocFiles, is(empty())); }
@Test public void all_files_with_given_extension_should_be_returned_recursively() { File pathToWalk = classpath.getResource("src"); DirectoryWalker globDirectoryWalker = new GlobDirectoryWalker(pathToWalk.getPath(), "**/*.adoc"); List<File> asciidocFiles = globDirectoryWalker.scan(); assertThat( asciidocFiles, containsInAnyOrder( classpath.getResource("src/documents/_sample.adoc"), classpath.getResource("src/documents/sample.adoc"))); }