You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by hi...@apache.org on 2017/05/25 13:48:48 UTC
[02/50] [abbrv] ant-ivy git commit: IVY-1141 : dependencies failed
using branch attribute (and extra attributes)
IVY-1141 : dependencies failed using branch attribute (and extra attributes)
Thanks to Stephen Haberman
Project: http://git-wip-us.apache.org/repos/asf/ant-ivy/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant-ivy/commit/8e0e1c32
Tree: http://git-wip-us.apache.org/repos/asf/ant-ivy/tree/8e0e1c32
Diff: http://git-wip-us.apache.org/repos/asf/ant-ivy/diff/8e0e1c32
Branch: refs/heads/xooki2asciidoc
Commit: 8e0e1c32ff1ed1da4f09fc9917812e6457e6fef7
Parents: 5240c88
Author: Nicolas Lalevée <ni...@hibnet.org>
Authored: Sun Sep 6 17:10:47 2015 +0200
Committer: Nicolas Lalevée <ni...@hibnet.org>
Committed: Sun Sep 6 17:10:56 2015 +0200
----------------------------------------------------------------------
doc/release-notes.html | 1 +
.../plugins/version/LatestVersionMatcher.java | 15 +++++-
.../version/LatestVersionMatcherTest.java | 53 +++++++++++++++++++-
3 files changed, 66 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/8e0e1c32/doc/release-notes.html
----------------------------------------------------------------------
diff --git a/doc/release-notes.html b/doc/release-notes.html
index 12624af..0c34994 100644
--- a/doc/release-notes.html
+++ b/doc/release-notes.html
@@ -61,6 +61,7 @@ List of changes since Ivy 2.4.0:
- FIX: fixdeps remove transitive 'kept' dependencies
- FIX: PomModuleDescriptorParser should parse licenses from parent POM (IVY-1526) (Thanks to Jaikiran Pai)
- FIX: dynamic revisions are not cached per resolver (IVY-1430) (Thanks to Stephen Haberman)
+- FIX: Dependencies failed using branch attribute (and extra attributes) (IVY-1141) (Thanks to Stephen Haberman)
- IMPROVEMENT: Optimization: limit the revision numbers scanned if revision prefix is specified (Thanks to Ernestas Vaiciukevičius)
http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/8e0e1c32/src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java b/src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java
index ba5b153..5a30b24 100644
--- a/src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java
+++ b/src/java/org/apache/ivy/plugins/version/LatestVersionMatcher.java
@@ -39,13 +39,26 @@ public class LatestVersionMatcher extends AbstractVersionMatcher {
}
public boolean needModuleDescriptor(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid) {
- List statuses = StatusManager.getCurrent().getStatuses();
+ // if asking for a branch, foundMrid will likely have an invalid value that doesn't
+ // come from the module descriptor itself. return true so accept is given the real
+ // module descriptor with the correct branch.
+ if (askedMrid.getBranch() != null) {
+ return true;
+ }
+ List<Status> statuses = StatusManager.getCurrent().getStatuses();
Status lowest = (Status) statuses.get(statuses.size() - 1);
String latestLowest = "latest." + lowest.getName();
return !latestLowest.equals(askedMrid.getRevision());
}
public boolean accept(ModuleRevisionId askedMrid, ModuleDescriptor foundMD) {
+ String askedBranch = askedMrid.getBranch();
+ String foundBranch = foundMD.getModuleRevisionId().getBranch();
+ boolean sameBranch = (askedBranch == null) ? foundBranch == null
+ : askedBranch.equals(foundBranch);
+ if (!sameBranch) {
+ return false;
+ }
String askedStatus = askedMrid.getRevision().substring("latest.".length());
return StatusManager.getCurrent().getPriority(askedStatus) >= StatusManager.getCurrent()
.getPriority(foundMD.getStatus());
http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/8e0e1c32/test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java
----------------------------------------------------------------------
diff --git a/test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java b/test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java
index 654bf11..f72d899 100644
--- a/test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java
+++ b/test/java/org/apache/ivy/plugins/version/LatestVersionMatcherTest.java
@@ -17,13 +17,14 @@
*/
package org.apache.ivy.plugins.version;
-import junit.framework.TestCase;
-
import org.apache.ivy.core.IvyContext;
+import org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor;
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 junit.framework.TestCase;
+
public class LatestVersionMatcherTest extends TestCase {
private LatestVersionMatcher vm = new LatestVersionMatcher();
@@ -41,6 +42,13 @@ public class LatestVersionMatcherTest extends TestCase {
assertNeed("latest.integration", false);
}
+ public void testNeedModuleDescriptorForBranches() throws Exception {
+ assertNeed("latest.release", "trunk", true);
+ assertNeed("latest.milestone", "trunk", true);
+ // different branches will have different latest.integration artifacts
+ assertNeed("latest.integration", "trunk", true);
+ }
+
public void testNeedModuleDescriptorCustomStatus() throws Exception {
StatusManager.getCurrent().addStatus(new Status("release", false));
StatusManager.getCurrent().addStatus(new Status("snapshot", true));
@@ -49,9 +57,50 @@ public class LatestVersionMatcherTest extends TestCase {
assertNeed("latest.snapshot", false);
}
+ public void testAcceptForStandardStatus() throws Exception {
+ assertAccept("latest.release", "release", true);
+ assertAccept("latest.release", "milestone", false);
+ assertAccept("latest.release", "integration", false);
+ }
+
+ public void testAcceptForSameBranches() throws Exception {
+ assertAccept("latest.release", "trunk", "release", "trunk", true);
+ assertAccept("latest.release", "trunk", "milestone", "trunk", false);
+ assertAccept("latest.release", "trunk", "integration", "trunk", false);
+ }
+
+ public void testAcceptForDifferentBranches() throws Exception {
+ assertAccept("latest.release", "trunk", "release", "feature", false);
+ assertAccept("latest.release", "trunk", "milestone", "feature", false);
+ assertAccept("latest.release", "trunk", "integration", "feature", false);
+ }
+
// assertion helper methods
private void assertNeed(String askedVersion, boolean b) {
assertEquals(b, vm.needModuleDescriptor(
ModuleRevisionId.newInstance("org", "name", askedVersion), null));
}
+
+ private void assertNeed(String askedVersion, String askedBranch, boolean b) {
+ assertEquals(b, vm.needModuleDescriptor(
+ ModuleRevisionId.newInstance("org", "name", askedBranch, askedVersion), null));
+ }
+
+ private void assertAccept(String askedVersion, String foundStatus, boolean b) {
+ ModuleRevisionId askedMrid = ModuleRevisionId.newInstance("org", "name", askedVersion);
+ DefaultModuleDescriptor foundMD = DefaultModuleDescriptor
+ .newDefaultInstance(ModuleRevisionId.newInstance("org", "name", null));
+ foundMD.setStatus(foundStatus);
+ assertEquals(b, vm.accept(askedMrid, foundMD));
+ }
+
+ private void assertAccept(String askedVersion, String askedBranch, String foundStatus,
+ String foundBranch, boolean b) {
+ ModuleRevisionId askedMrid = ModuleRevisionId.newInstance("org", "name", askedBranch,
+ askedVersion);
+ DefaultModuleDescriptor foundMD = DefaultModuleDescriptor.newDefaultInstance(
+ ModuleRevisionId.newInstance("org", "name", foundBranch, (String) null));
+ foundMD.setStatus(foundStatus);
+ assertEquals(b, vm.accept(askedMrid, foundMD));
+ }
}