diff --git a/cli/src/main/java/com/devonfw/tools/ide/version/VersionRange.java b/cli/src/main/java/com/devonfw/tools/ide/version/VersionRange.java index 4ceb86cf1..f104098b7 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/version/VersionRange.java +++ b/cli/src/main/java/com/devonfw/tools/ide/version/VersionRange.java @@ -70,6 +70,10 @@ public boolean isPattern() { @Override public boolean contains(VersionIdentifier version) { + VersionSegment start = version.getStart(); + if ((start.getNumber() == -1) && start.isPattern()) { + return true; // * and *! are always contained + } if (this.min != null) { VersionComparisonResult compareMin = version.compareVersion(this.min); if (compareMin.isLess()) { @@ -82,7 +86,7 @@ public boolean contains(VersionIdentifier version) { VersionComparisonResult compareMax = version.compareVersion(this.max); if (compareMax.isGreater()) { return false; - } else if (compareMax.isEqual() && this.boundaryType.isRightExclusive() && !version.isPattern()) { + } else if (compareMax.isEqual() && this.boundaryType.isRightExclusive()) { return false; } } diff --git a/cli/src/test/java/com/devonfw/tools/ide/version/VersionRangeTest.java b/cli/src/test/java/com/devonfw/tools/ide/version/VersionRangeTest.java index 7a1c8b398..6b2f02dd6 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/version/VersionRangeTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/version/VersionRangeTest.java @@ -109,9 +109,12 @@ public void testContains() { checkContainsNot("(11,22)", "10*"); checkContains("(11,22)", "11*"); checkContains("(11,22)", "11.0*"); - checkContains("(11,22)", "22*"); - checkContains("(11,22)", "22.*"); + checkContains("(11,22)", "21.99*"); + checkContainsNot("(11,22)", "22*"); + checkContainsNot("(11,22)", "22.*"); checkContainsNot("(11,22)", "23*"); + checkContains("(11,22)", "21.99*"); + checkContains("[22,)", "*"); } private void checkContains(String range, String version) {