Hello, I tried to prepare a conflict manager/latest strategy/whatever to support a use case in which I want to have latest.integration overriding any other revision number. During that struggle I tried to understand what exactly does LatestCompatibleConflictManager do. In the IVY-2.0.0 (but no changes in that code in 2.1.0-RC1 nor svn) in LatestCompatibleConflictManagerTest are 2 tests for circular dependencies:
public void testCompatibilityResolveCircularDependency2() throws
Exception {
fixture
.addMD("#A;1->#C;2")
.addMD("#C;1->#B;1")
.addMD("#C;2->#B;2")
.addMD("#C;3->#B;3")
.addMD("#B;1->#C;latest.integration") // circular dependency
.addMD("#B;2->#C;latest.integration") // circular dependency
.addMD("#B;3->#C;latest.integration") // circular dependency
.init();
resolveAndAssert("#A;1", "#B;2, #C;2");
}
public void testCompatibilityResolveCircularDependency3() throws
Exception {
// same as 2, but A depends on B
fixture
.addMD("#A;1->#B;2")
.addMD("#C;1->#B;1")
.addMD("#C;2->#B;2")
.addMD("#C;3->#B;3")
.addMD("#B;1->#C;latest.integration") // circular dependency
.addMD("#B;2->#C;latest.integration") // circular dependency
.addMD("#B;3->#C;latest.integration") // circular dependency
.init();
resolveAndAssert("#A;1", "#B;2, #C;2");
}
The first one is intuitive and #C;2 is what I expect to see. But the
second one is magic.
We have the following graph:
#A;1->#B;2->C#latest.integration
C#latest.integration doesn't seam to have any dependencies so the rest
is a garbage IMHO (unless I'm missing something). Could someone please
enlighten me why the expected result is #C;2 in this test ?
And secondly - how to achieve the main goal - resolving to
latest.integration always when it is listed anywhere in the
dependencies ?
Best Regards,
--jw
--
Jaroslaw Wypychowski, ICM UW, email: [email protected]
KPK Kan. 97 § 2. Małoletni, przed ukończeniem siódmego roku życia,
nazywa się dzieckiem i uważany jest za nie posiadającego używania
rozumu. Po skończonym siódmym roku życia domniemywa się, że posiada
używanie rozumu.
signature.asc
Description: To jest część wiadomości podpisana cyfrowo
