mirror of
https://github.com/jlengrand/jreleaser.git
synced 2026-03-10 08:31:24 +00:00
[changelog] Fix tag sorting. Fixes #203
This commit is contained in:
@@ -75,10 +75,10 @@ public class JavaModuleVersion implements Comparable<JavaModuleVersion> {
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
JavaModuleVersion version = (JavaModuleVersion) o;
|
||||
return Objects.equals(version, version.version) &&
|
||||
Objects.equals(prerelease, version.prerelease) &&
|
||||
Objects.equals(build, version.build);
|
||||
JavaModuleVersion v = (JavaModuleVersion) o;
|
||||
return Objects.equals(version, v.version) &&
|
||||
Objects.equals(prerelease, v.prerelease) &&
|
||||
Objects.equals(build, v.build);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -115,7 +115,7 @@ public class JavaModuleVersion implements Comparable<JavaModuleVersion> {
|
||||
}
|
||||
|
||||
private String[] split(String s, List<Character> delims) {
|
||||
if(isBlank(s)) return new String[0];
|
||||
if (isBlank(s)) return new String[0];
|
||||
|
||||
List<String> tokens = new ArrayList<>();
|
||||
|
||||
|
||||
@@ -17,12 +17,19 @@
|
||||
*/
|
||||
package org.jreleaser.util;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.jreleaser.util.ComparatorUtils.greaterThan;
|
||||
@@ -58,6 +65,51 @@ public class JavaModuleVersionTest {
|
||||
assertTrue(greaterThan(v2, v1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testVersionSort() {
|
||||
List<JavaModuleVersion> asc = new ArrayList<>(asList(
|
||||
JavaModuleVersion.of("0-ea"),
|
||||
JavaModuleVersion.of("2021.01.22"),
|
||||
JavaModuleVersion.of("2021.01.24"),
|
||||
JavaModuleVersion.of("2021.02"),
|
||||
JavaModuleVersion.of("2021.02.24"),
|
||||
JavaModuleVersion.of("2021.03"),
|
||||
JavaModuleVersion.of("2021.04.01"),
|
||||
JavaModuleVersion.of("2021.04.13"),
|
||||
JavaModuleVersion.of("2021.05.01"),
|
||||
JavaModuleVersion.of("2021.05.20")));
|
||||
|
||||
List<JavaModuleVersion> desc = new ArrayList<>(asList(
|
||||
JavaModuleVersion.of("2021.05.20"),
|
||||
JavaModuleVersion.of("2021.05.01"),
|
||||
JavaModuleVersion.of("2021.04.13"),
|
||||
JavaModuleVersion.of("2021.04.01"),
|
||||
JavaModuleVersion.of("2021.03"),
|
||||
JavaModuleVersion.of("2021.02.24"),
|
||||
JavaModuleVersion.of("2021.02"),
|
||||
JavaModuleVersion.of("2021.01.24"),
|
||||
JavaModuleVersion.of("2021.01.22"),
|
||||
JavaModuleVersion.of("0-ea")));
|
||||
|
||||
// given:
|
||||
List<JavaModuleVersion> sortedAsc = new ArrayList<>(desc);
|
||||
Collections.sort(sortedAsc, JavaModuleVersion::compareTo);
|
||||
|
||||
// then:
|
||||
assertThat(
|
||||
sortedAsc.stream().map(JavaModuleVersion::toString).collect(Collectors.joining(",")),
|
||||
equalTo(asc.stream().map(JavaModuleVersion::toString).collect(Collectors.joining(","))));
|
||||
|
||||
// given:
|
||||
List<JavaModuleVersion> sortedDesc = new ArrayList<>(asc);
|
||||
Collections.sort(sortedDesc, Comparator.reverseOrder());
|
||||
|
||||
// then:
|
||||
assertThat(
|
||||
sortedDesc.stream().map(JavaModuleVersion::toString).collect(Collectors.joining(",")),
|
||||
equalTo(desc.stream().map(JavaModuleVersion::toString).collect(Collectors.joining(","))));
|
||||
}
|
||||
|
||||
private static Stream<Arguments> version_parsing() {
|
||||
return Stream.of(
|
||||
Arguments.of("1", "1", null, null),
|
||||
|
||||
@@ -169,7 +169,11 @@ public class ChangelogGenerator {
|
||||
String effectiveTagName = gitService.getEffectiveTagName(context.getModel());
|
||||
String tagName = gitService.getConfiguredTagName();
|
||||
String tagPattern = tagName.replaceAll("\\{\\{.*}}", "\\.\\*");
|
||||
Pattern versionPattern = Pattern.compile(tagName.replaceAll("\\{\\{.*}}", "\\(\\.\\*\\)"));
|
||||
Pattern vp = Pattern.compile(tagName.replaceAll("\\{\\{.*}}", "\\(\\.\\*\\)"));
|
||||
if (!tagName.contains("{{")) {
|
||||
vp = Pattern.compile("(.*)");
|
||||
}
|
||||
Pattern versionPattern = vp;
|
||||
|
||||
tags.sort((tag1, tag2) -> {
|
||||
Comparable v1 = version(context, tag1, versionPattern);
|
||||
|
||||
Reference in New Issue
Block a user