Implement more complex implicit directories

This commit is contained in:
René Pfeuffer
2020-03-04 12:03:58 +01:00
parent 7aa91bf846
commit 8b4dd26425
2 changed files with 37 additions and 1 deletions

View File

@@ -95,7 +95,7 @@ class HgFileviewCommandResultReader {
private boolean isAncestor(FileObject ancestor, FileObject child) {
String ancestorPath = ancestor.getPath();
return child.getParentPath().startsWith(ancestorPath);
return ancestorPath.equals("") || child.getParentPath().startsWith(ancestorPath + '/');
}
private Collection<FileObject> createMissingParents(FileObject current, FileObject file) {

View File

@@ -9,6 +9,7 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.Iterator;
import java.util.OptionalLong;
import static java.nio.charset.StandardCharsets.UTF_8;
@@ -180,6 +181,41 @@ class HgFileviewCommandResultReaderTest {
.containsExactly(false);
}
@Test
void shouldCreateSimilarSubDirectoriesCorrectly() throws IOException {
HgFileviewCommandResultReader reader = new MockInput()
.dir("")
.file("dir/a.txt")
.file("directory/b.txt")
.build();
FileObject fileObject = reader.parseResult();
assertThat(fileObject.getChildren())
.extracting("name")
.containsExactly("dir", "directory");
assertThat(fileObject.getChildren())
.extracting("directory")
.containsExactly(true, true);
Iterator<FileObject> fileIterator = fileObject.getChildren().iterator();
FileObject firstSubDir = fileIterator.next();
assertThat(firstSubDir.getChildren())
.extracting("name")
.containsExactly("a.txt");
assertThat(firstSubDir.getChildren())
.extracting("directory")
.containsExactly(false);
FileObject secondSubDir = fileIterator.next();
assertThat(secondSubDir.getChildren())
.extracting("name")
.containsExactly("b.txt");
assertThat(secondSubDir.getChildren())
.extracting("directory")
.containsExactly(false);
}
@Test
void shouldIgnoreTimeAndCommentWhenDisabled() throws IOException {
HgFileviewCommandResultReader reader = new MockInput()