From 58625ba606dfd51ac957a34bd1cb57edf3ebaac6 Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Fri, 21 Feb 2020 15:00:44 +0100 Subject: [PATCH] Sort files with an upper case letter first --- .../scm/repository/spi/BrowseCommand.java | 2 +- .../scm/repository/spi/BrowseCommandTest.java | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 scm-core/src/test/java/sonia/scm/repository/spi/BrowseCommandTest.java diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/BrowseCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/BrowseCommand.java index 7859c1845b..899bda077b 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/BrowseCommand.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/BrowseCommand.java @@ -67,7 +67,7 @@ public interface BrowseCommand default void sort(List entries, Function isDirectory, Function nameOf) { entries.sort((e1, e2) -> { if (isDirectory.apply(e1).equals(isDirectory.apply(e2))) { - return nameOf.apply(e1).toLowerCase(Locale.ENGLISH).compareTo(nameOf.apply(e2).toLowerCase(Locale.ENGLISH)); + return nameOf.apply(e1).compareTo(nameOf.apply(e2)); } else if (isDirectory.apply(e1)) { return -1; } else { diff --git a/scm-core/src/test/java/sonia/scm/repository/spi/BrowseCommandTest.java b/scm-core/src/test/java/sonia/scm/repository/spi/BrowseCommandTest.java new file mode 100644 index 0000000000..1ed39c8366 --- /dev/null +++ b/scm-core/src/test/java/sonia/scm/repository/spi/BrowseCommandTest.java @@ -0,0 +1,70 @@ +package sonia.scm.repository.spi; + +import org.junit.jupiter.api.Test; +import sonia.scm.repository.BrowserResult; + +import java.io.IOException; +import java.util.List; + +import static java.util.Arrays.asList; +import static org.assertj.core.api.Assertions.assertThat; +import static sonia.scm.repository.spi.BrowseCommandTest.Entry.d; +import static sonia.scm.repository.spi.BrowseCommandTest.Entry.f; + +class BrowseCommandTest implements BrowseCommand { + + @Test + void shouldSort() { + List entries = asList( + f("b.txt"), + f("a.txt"), + f("Dockerfile"), + f(".gitignore"), + d("src"), + f("README") + ); + + sort(entries, Entry::isDirecotry, Entry::getName); + + assertThat(entries).extracting("name") + .containsExactly( + "src", + ".gitignore", + "Dockerfile", + "README", + "a.txt", + "b.txt" + ); + } + + @Override + public BrowserResult getBrowserResult(BrowseCommandRequest request) throws IOException { + return null; + } + + static class Entry { + private final String name; + private final boolean direcotry; + + static Entry f(String name) { + return new Entry(name, false); + } + + static Entry d(String name) { + return new Entry(name, true); + } + + public Entry(String name, boolean direcotry) { + this.name = name; + this.direcotry = direcotry; + } + + public String getName() { + return name; + } + + public boolean isDirecotry() { + return direcotry; + } + } +}