未验证 提交 592215db 编写于 作者: S Skylot

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

上级 fb318e3b
......@@ -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("\\.");
......
......@@ -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);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册