fix(gui): handle package version in update check (#1397)

This commit is contained in:
Skylot 2022-02-28 17:22:53 +00:00
parent fb318e3bd9
commit 592215db66
No known key found for this signature in database
GPG Key ID: 1E23F5B52567AA39
2 changed files with 17 additions and 10 deletions

View File

@ -6,22 +6,23 @@ public class VersionComparator {
}
public static int checkAndCompare(String str1, String str2) {
try {
return compare(clean(str1), clean(str2));
} catch (NumberFormatException e) {
return -2;
}
return compare(clean(str1), clean(str2));
}
private static String clean(String str) {
if (str == null || str.isEmpty()) {
return "";
}
String result = str.trim().toLowerCase();
if (result.charAt(0) == 'v') {
result = result.substring(1);
}
// treat package version as part of version
result = result.replace('-', '.');
return result;
}
public static int compare(String str1, String str2) {
private static int compare(String str1, String str2) {
String[] s1 = str1.split("\\.");
int l1 = s1.length;
String[] s2 = str2.split("\\.");

View File

@ -2,8 +2,7 @@ package jadx.gui.update;
import org.junit.jupiter.api.Test;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.assertj.core.api.Assertions.assertThat;
class VersionComparatorTest {
@ -24,10 +23,17 @@ class VersionComparatorTest {
checkCompare("0.4.8", "0.5", -1);
checkCompare("0.4.8", "0.5.0", -1);
checkCompare("0.4.8", "0.6", -1);
checkCompare("1.3.3.1", "1.3.3", 1);
checkCompare("1.3.3-1", "1.3.3", 1);
checkCompare("1.3.3.1-1", "1.3.3", 1);
}
private static void checkCompare(String a, String b, int result) {
assertThat(VersionComparator.compare(a, b), is(result));
assertThat(VersionComparator.compare(b, a), is(-result));
assertThat(VersionComparator.checkAndCompare(a, b))
.as("Compare %s and %s expect %d", a, b, result)
.isEqualTo(result);
assertThat(VersionComparator.checkAndCompare(b, a))
.as("Compare %s and %s expect %d", b, a, -result)
.isEqualTo(-result);
}
}