[ 
https://issues.apache.org/jira/browse/IVY-1300?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ed Burcher updated IVY-1300:
----------------------------

    Attachment: extratests.txt

I had a look at the breaking tests. Frankly, I think they're testing for broken 
behaviour. Rather than try to argue this, I've attached a couple of extra 
tests. 

These are precisely the same as the existing 'testWithDynEvicted' and 
'testWithDynEvicted2' but they additionally check that the retrieved artifacts 
(from the original resolve) are the artifacts you would actually get if you 
used the delivered descriptor.

As you'll see, without my fix you get a break because the delivered ivy file 
doesn't produce the correct artifacts. With it, things are consistent.

                
> Delivered ivy descriptor inconsistent with resolve report / retrieve and 
> other post-resolve actions
> ---------------------------------------------------------------------------------------------------
>
>                 Key: IVY-1300
>                 URL: https://issues.apache.org/jira/browse/IVY-1300
>             Project: Ivy
>          Issue Type: Bug
>    Affects Versions: 2.2.0
>            Reporter: Ed Burcher
>            Priority: Critical
>         Attachments: extratests.txt, patch.txt, patchfix.txt
>
>
> When there is a conflict with the following characteristics, there is 
> inconsistency of behaviour between most post-resolve actions, and the deliver 
> action. Whereas retrieve / report etc are correct w.r.t the selected 
> revision, Deliver produces an ivy descriptor that contains the evicted 
> revision. 
> The characteristics are:
> * Branches are in use
> * No special conflict manager or latest strategies are configured
> * There is a direct dependency on the module, and a transitive dependency on 
> it
> * The transitive dependency has a higher version number than the direct 
> dependency, BUT is on a different branch
> * This is a conflict; the (default) conflict manager selects the 
> indirect/transitive one because its revision is 'latest' as you would expect
> * The ivy report and retrieve results reflect this selection
> * The delivered ivy descriptor contains the evicted version of the dependency
> Notes
> * Force is not in use
> * It is appreciably the case that it is most often an error (logically 
> speaking) to have a conflict amongst different versions on different 
> branches. Nevertheless, one expects ivy to behave consistently.
> In my view, here are the factors causing this:
> * the properties file written during the resolve process does not contain the 
> selected branch information, only the requested branch (and only for the most 
> direct dependency spec, if there are several)
> * in deliver, the iterator of the dependencies does not process those 
> dependency IvyNodes that are not referenced directly by the root IvyNode. So 
> where an indirect IvyNode was selected, it is ignored. This is a logic error.
> The properties file written during the resolve seems to be a frequent source 
> of bugs. I wonder why the xml report is not used? IVY-1159 was also down to 
> insufficient information in the properties file.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to