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"))); }
@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()); }
@Test public void rootDirEmpty() throws IOException { final MockFile root = new MockFile(context, "root", false); walker = new DefaultDirectoryWalker(visitor); root.setExpectations(); walker.start(root.getMock()); }
@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); }
@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()); }