From 8b4dd2642511ad26ba672d2df0c420fc91d6b1bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Wed, 4 Mar 2020 12:03:58 +0100 Subject: [PATCH] Implement more complex implicit directories --- .../javahg/HgFileviewCommandResultReader.java | 2 +- .../HgFileviewCommandResultReaderTest.java | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgFileviewCommandResultReader.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgFileviewCommandResultReader.java index d62ab07f1c..c3c2efe4b5 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgFileviewCommandResultReader.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgFileviewCommandResultReader.java @@ -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 createMissingParents(FileObject current, FileObject file) { diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/javahg/HgFileviewCommandResultReaderTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/javahg/HgFileviewCommandResultReaderTest.java index 9426cc4533..806896b1f8 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/javahg/HgFileviewCommandResultReaderTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/javahg/HgFileviewCommandResultReaderTest.java @@ -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 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()