mirror of
https://github.com/skylot/jadx.git
synced 2024-10-07 10:03:27 +00:00
fix(gui): handle package version in update check (#1397)
This commit is contained in:
parent
fb318e3bd9
commit
592215db66
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user