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")));
  }
예제 #4
0
  @Test
  public void walkDepthFirst() throws IOException {

    walker = new DefaultDirectoryWalker(visitor).depthFirst();

    final MockFile root = new MockFile(context, "root", false);
    final MockFile rootFile1 = root.addFile("rootFile1");
    final MockFile dir1 = root.addDir("dir1");
    final MockFile dirFile1 = dir1.addFile("dirFile1");
    final MockFile dirFile2 = dir1.addFile("dirFile2");
    final MockFile rootFile2 = root.addFile("rootFile2");
    root.setExpectations();

    final Sequence visiting = context.sequence("visiting");
    context.checking(
        new Expectations() {
          {
            one(visitor).visitFile(with(file(rootFile1)));
            inSequence(visiting);
            one(visitor).visitFile(with(file(rootFile2)));
            inSequence(visiting);
            one(visitor).visitFile(with(file(dirFile1)));
            inSequence(visiting);
            one(visitor).visitFile(with(file(dirFile2)));
            inSequence(visiting);
            one(visitor).visitDir(with(file(dir1)));
            inSequence(visiting);
          }
        });

    walker.start(root.getMock());
  }
예제 #5
0
  @Test
  public void rootDirEmpty() throws IOException {
    final MockFile root = new MockFile(context, "root", false);

    walker = new DefaultDirectoryWalker(visitor);
    root.setExpectations();

    walker.start(root.getMock());
  }
예제 #6
0
  @Test
  public void testUsesSpecFromPatternSetToMatchFilesAndDirs() {
    final PatternSet patternSet = context.mock(PatternSet.class);
    final Spec spec = context.mock(Spec.class);

    context.checking(
        new Expectations() {
          {
            one(patternSet).getAsSpec();
            will(returnValue(spec));
          }
        });

    walker = new DefaultDirectoryWalker(visitor);
    walker.match(patternSet);
  }
예제 #7
0
  @Test
  public void walkSingleFile() throws IOException {
    walker = new DefaultDirectoryWalker(visitor);

    final MockFile root = new MockFile(context, "root", false);
    final MockFile fileToCopy = root.addFile("file.txt");

    fileToCopy.setExpectations();

    context.checking(
        new Expectations() {
          {
            one(visitor).visitFile(with(file(fileToCopy)));
          }
        });

    walker.start(fileToCopy.getMock());
  }