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