Index: test/java/org/apache/ivy/plugins/version/VersionRangeMatcherTest.java =================================================================== --- test/java/org/apache/ivy/plugins/version/VersionRangeMatcherTest.java (revision 909646) +++ test/java/org/apache/ivy/plugins/version/VersionRangeMatcherTest.java (working copy) @@ -23,24 +23,21 @@ import org.apache.ivy.plugins.latest.LatestRevisionStrategy; public class VersionRangeMatcherTest extends TestCase { - VersionMatcher _vm = new VersionRangeMatcher("range", new LatestRevisionStrategy()); + VersionMatcher vm = new VersionRangeMatcher("range", new LatestRevisionStrategy()); - public VersionRangeMatcherTest() { - } - public void testMavenExcludeParenthesis() throws Exception { assertAccept("[3.8,4.0)", "3.7", false); assertAccept("[3.8,4.0)", "3.8", true); assertAccept("[3.8,4.0)", "3.9", true); assertAccept("[3.8,4.0)", "4.0", false); assertAccept("[3.8,4.0)", "4.1", false); - + assertAccept("(3.8,4.0]", "3.7", false); assertAccept("(3.8,4.0]", "3.8", false); assertAccept("(3.8,4.0]", "3.9", true); assertAccept("(3.8,4.0]", "4.0", true); assertAccept("(3.8,4.0]", "4.1", false); - + assertAccept("(3.8,4.0)", "3.7", false); assertAccept("(3.8,4.0)", "3.8", false); assertAccept("(3.8,4.0)", "3.9", true); @@ -131,7 +128,7 @@ assertAccept("(,2.0]", "2.0", true); assertAccept("(,2.0]", "2.3", false); - + assertAccept("[1.0, )", "1.1", true); assertAccept("[1.0 ,)", "2.0", true); assertAccept("[1.0 , )", "3.5.6", true); @@ -157,11 +154,11 @@ // assertion helper methods private void assertDynamic(String askedVersion, boolean b) { - assertEquals(b, _vm.isDynamic(ModuleRevisionId.newInstance("org", "name", askedVersion))); + assertEquals(b, vm.isDynamic(ModuleRevisionId.newInstance("org", "name", askedVersion))); } private void assertAccept(String askedVersion, String depVersion, boolean b) { - assertEquals(b, _vm.accept(ModuleRevisionId.newInstance("org", "name", askedVersion), + assertEquals(b, vm.accept(ModuleRevisionId.newInstance("org", "name", askedVersion), ModuleRevisionId.newInstance("org", "name", depVersion))); } } Index: test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java =================================================================== --- test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java (revision 0) +++ test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java (revision 0) @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.ivy.plugins.version; + +import junit.framework.TestCase; + +import org.apache.ivy.core.module.id.ModuleRevisionId; +import org.apache.ivy.core.module.status.Status; +import org.apache.ivy.core.module.status.StatusManager; +import org.apache.ivy.plugins.latest.LatestRevisionStrategy; + +public class LatestVersionMatcherTest extends TestCase { + LatestVersionMatcher vm = new LatestVersionMatcher(); + + public void testNeedModuleDescriptor() throws Exception { + StatusManager.getCurrent().addStatus(new Status("release", false)); + StatusManager.getCurrent().addStatus(new Status("snapshot", true)); + + assertNeed("latest.release", true); + assertNeed("latest.snapshot", false); + } + + // assertion helper methods + + private void assertDynamic(String askedVersion, boolean b) { + assertEquals(b, vm.isDynamic(ModuleRevisionId.newInstance("org", "name", askedVersion))); + } + + private void assertAccept(String askedVersion, String depVersion, boolean b) { + assertEquals(b, vm.accept(ModuleRevisionId.newInstance("org", "name", askedVersion), + ModuleRevisionId.newInstance("org", "name", depVersion))); + } + + private void assertNeed(String askedVersion, boolean b) { + assertEquals(b, vm.needModuleDescriptor(ModuleRevisionId.newInstance("org", "name", askedVersion), null)); + } +} Index: src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java =================================================================== --- src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java (revision 909646) +++ src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java (working copy) @@ -18,9 +18,11 @@ package org.apache.ivy.plugins.version; import java.util.Comparator; +import java.util.List; import org.apache.ivy.core.module.descriptor.ModuleDescriptor; import org.apache.ivy.core.module.id.ModuleRevisionId; +import org.apache.ivy.core.module.status.Status; import org.apache.ivy.core.module.status.StatusManager; public class LatestVersionMatcher extends AbstractVersionMatcher { @@ -37,7 +39,10 @@ } public boolean needModuleDescriptor(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid) { - return !"latest.integration".equals(askedMrid.getRevision()); + List statuses = StatusManager.getCurrent().getStatuses(); + Status lowest = (Status) statuses.get(statuses.size() - 1); + String latestLowest = "latest." + lowest.getName(); + return !lowest.isIntegration() || !latestLowest.equals(askedMrid.getRevision()); } public boolean accept(ModuleRevisionId askedMrid, ModuleDescriptor foundMD) {