@Test public void doesNotVisitADirectoryUntilAChildDirIsVisited() { final FileCopyDetails dir = file("dir"); final FileCopyDetails subdir = file("dir/sub"); final FileCopyDetails file = file("dir/sub/file"); allowGetIncludeEmptyDirs(); context.checking( new Expectations() { { one(delegate).visitSpec(spec); } }); visitor.visitSpec(spec); visitor.visitDir(dir); visitor.visitDir(subdir); context.checking( new Expectations() { { one(delegate).visitDir(dir); one(delegate).visitDir(subdir); one(delegate).visitFile(file); } }); visitor.visitFile(file); }
@Test public void doesNotVisitAnEmptyDirectoryIfCorrespondingOptionIsOff() { FileCopyDetails dir = file("dir"); context.checking( new Expectations() { { one(spec).getIncludeEmptyDirs(); will(returnValue(false)); one(delegate).visitSpec(spec); one(delegate).endVisit(); } }); visitor.visitSpec(spec); visitor.visitDir(dir); visitor.endVisit(); }
@Test public void visitsFileAncestorsWhichHaveNotBeenVisited() { final FileCopyDetails details = file("a/b/c"); allowGetIncludeEmptyDirs(); context.checking( new Expectations() { { one(delegate).visitSpec(spec); one(delegate).visitDir(with(hasPath("a"))); one(delegate).visitDir(with(hasPath("a/b"))); one(delegate).visitFile(details); } }); visitor.visitSpec(spec); visitor.visitFile(details); }
@Test public void doesNotVisitADirectoryWhichHasBeenVisitedBefore() { final FileCopyDetails details = file("dir"); final FileCopyDetails file = file("dir/file"); allowGetIncludeEmptyDirs(); context.checking( new Expectations() { { one(delegate).visitSpec(spec); one(delegate).visitDir(details); one(delegate).visitFile(file); } }); visitor.visitSpec(spec); visitor.visitDir(details); visitor.visitFile(file); visitor.visitDir(details); }
@Test public void visitSpecDelegatesToVisitor() { allowGetIncludeEmptyDirs(); context.checking( new Expectations() { { one(delegate).visitSpec(spec); } }); visitor.visitSpec(spec); }
@Test public void visitsDirectoryAncestorsWhichHaveNotBeenVisited() { final FileCopyDetails dir1 = file("a/b/c"); final FileCopyDetails file1 = file("a/b/c/file"); allowGetIncludeEmptyDirs(); context.checking( new Expectations() { { one(delegate).visitSpec(spec); one(delegate).visitDir(with(hasPath("a"))); one(delegate).visitDir(with(hasPath("a/b"))); one(delegate).visitDir(dir1); one(delegate).visitFile(file1); } }); visitor.visitSpec(spec); visitor.visitDir(dir1); visitor.visitFile(file1); final FileCopyDetails dir2 = file("a/b/d/e"); final FileCopyDetails file2 = file("a/b/d/e/file"); context.checking( new Expectations() { { one(delegate).visitSpec(spec); one(delegate).visitDir(with(hasPath("a/b/d"))); one(delegate).visitDir(dir2); one(delegate).visitFile(file2); } }); visitor.visitSpec(spec); visitor.visitDir(dir2); visitor.visitFile(file2); }