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

David M. Lloyd updated MNG-7700:
--------------------------------
    Description: 
The canonicalization logic for versions is incorrect.

Using the method {{ComparableVersion#getCanonical}} as in {{new 
ComparableVersion(input).getCanonical()}}, the following results can be 
observed:

||Input||3.8.6 Output||3.8.6 OK?||3.9.0 Output||3.9.0 OK?||
|{{1}}|{{1}}|yes|{{1}}|yes|
|{{0.1}}|{{0.1}}|yes|{{0.1}}|yes|
|{{0-1}}|{{1}}|no|{{1}}|no|
|{{1.x}}|{{1.x}}|yes|{{1-x}}|maybe*|
|{{1-x}}|{{1-x}}|yes|{{1-x}}|yes|
|{{0.x}}|{{0.x}}|yes|{{x}}|no|
|{{0-x}}|{{x}}|no|{{x}}|no|
|{{x}}|{{x}}|yes|{{x}}|yes|
|{{0.rc}}|{{0.rc}}|yes|{{rc}}|no|


The "OK?" columns indicate whether parsing the canonical version string will 
yield a {{ComparableVersion}} instance that is {{equal}} to one constructed 
from the original input, i.e. it's internally consistent.

The "maybe*" item indicates that starting with 3.9.0, version `1.x` is now 
considered to be equal to `1-x`. I'm not sure if this is a bug or not, or was 
intentional or not, but it is definitely a change.

These canonicalizations seem to have gotten less consistent in the move to 
3.9.0.

  was:
The canonicalization logic for versions is incorrect.

Using the method {{ComparableVersion#getCanonical}} as in {{new 
ComparableVersion(input).getCanonical()}}, the following results can be 
observed:

||Input||3.8.6 Output||3.8.6 OK?||3.9.0 Output||3.9.0 OK?||
|{{1}}|{{1}}|yes|{{1}}|yes|
|{{0.1}}|{{0.1}}|yes|{{0.1}}|yes|
|{{0-1}}|{{1}}|no|{{1}}|no|
|{{1.x}}|{{1.x}}|yes|{{1-x}}|maybe*|
|{{1-x}}|{{1-x}}|yes|{{1-x}}|yes|
|{{0.x}}|{{0.x}}|yes|{{x}}|no|
|{{0-x}}|{{x}}|no|{{x}}|no|
|{{x}}|{{x}}|yes|{{x}}|yes|


The "OK?" columns indicate whether parsing the canonical version string will 
yield a {{ComparableVersion}} instance that is {{equal}} to one constructed 
from the original input, i.e. it's internally consistent.

The "maybe*" item indicates that starting with 3.9.0, version `1.x` is now 
considered to be equal to `1-x`. I'm not sure if this is a bug or not, or was 
intentional or not, but it is definitely a change.

These canonicalizations seem to have gotten less consistent in the move to 
3.9.0.


> Improper canonicalization of versions
> -------------------------------------
>
>                 Key: MNG-7700
>                 URL: https://issues.apache.org/jira/browse/MNG-7700
>             Project: Maven
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 3.8.7, 3.9.0
>            Reporter: David M. Lloyd
>            Priority: Major
>
> The canonicalization logic for versions is incorrect.
> Using the method {{ComparableVersion#getCanonical}} as in {{new 
> ComparableVersion(input).getCanonical()}}, the following results can be 
> observed:
> ||Input||3.8.6 Output||3.8.6 OK?||3.9.0 Output||3.9.0 OK?||
> |{{1}}|{{1}}|yes|{{1}}|yes|
> |{{0.1}}|{{0.1}}|yes|{{0.1}}|yes|
> |{{0-1}}|{{1}}|no|{{1}}|no|
> |{{1.x}}|{{1.x}}|yes|{{1-x}}|maybe*|
> |{{1-x}}|{{1-x}}|yes|{{1-x}}|yes|
> |{{0.x}}|{{0.x}}|yes|{{x}}|no|
> |{{0-x}}|{{x}}|no|{{x}}|no|
> |{{x}}|{{x}}|yes|{{x}}|yes|
> |{{0.rc}}|{{0.rc}}|yes|{{rc}}|no|
> The "OK?" columns indicate whether parsing the canonical version string will 
> yield a {{ComparableVersion}} instance that is {{equal}} to one constructed 
> from the original input, i.e. it's internally consistent.
> The "maybe*" item indicates that starting with 3.9.0, version `1.x` is now 
> considered to be equal to `1-x`. I'm not sure if this is a bug or not, or was 
> intentional or not, but it is definitely a change.
> These canonicalizations seem to have gotten less consistent in the move to 
> 3.9.0.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to