U
    jPŒ^7  ã                   @   sJ   d dl Z d dlmZ d dlmZ d dlmZ ejjZG dd„ dej	ƒZ
dS )é    N)Úmatchers)Úbase)Úversionc                   @   s  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?S )@ÚTestSemanticVersionc                 C   sÔ   ddddddddd	d
ddddddg}|D ]"}t j |¡}|  |t |¡¡ q(t |d¡D ]v\}}| |¡}| |¡}||k rŠtj	}tj
}	ntj
}tj	}	t j |¡}
t j |¡}|  |
||ƒ¡ |  ||	|
ƒ¡ qXd S )Nz
1.2.3.dev6z
1.2.3.dev7z1.2.3.a4.dev12z1.2.3.a4.dev13z1.2.3.a4z1.2.3.a5.dev1z1.2.3.a5z1.2.3.b3.dev1z1.2.3.b3z1.2.3.rc2.dev1z	1.2.3.rc2z1.2.3.rc3.dev1ú1.2.3ú1.2.4z1.3.3z2.2.3é   )r   ÚSemanticVersionÚfrom_pip_stringÚ
expectThatr   ÚEqualsÚ	itertoolsÚcombinationsÚindexZLessThanZGreaterThan)ÚselfZordered_versionsÚvZsvÚleftÚrightZl_posZr_posZm1Zm2Zleft_svZright_sv© r   ú8/usr/lib/python3/dist-packages/pbr/tests/test_version.pyÚtest_ordering   s@    ð

z!TestSemanticVersion.test_orderingc                 C   s,   t jdddddd}tdƒ}|  ||¡ d S )Né   r   r   Úrc©Zprerelease_typeZ
prereleasez1.2.0rc1©r   r	   r
   ÚassertEqual©r   ÚexpectedÚparsedr   r   r   Ú!test_from_pip_string_legacy_alphaA   s        ÿz5TestSemanticVersion.test_from_pip_string_legacy_alphac                 C   sv   t jddddd}tdƒ}|  |t |¡¡ t jdddddd	d}td
ƒ}|  |t |¡¡ |  dd„ t t¡¡ d S )Nr   r   é   é   ©Z	dev_countz1.2.3.post5é   Úaé   z1.2.3.0a4.post6c                   S   s   t dƒS )Nz1.2.3.post5.dev6©r
   r   r   r   r   Ú<lambda>T   ó    zGTestSemanticVersion.test_from_pip_string_legacy_postN.<locals>.<lambda>)r   r	   r
   r   r   r   ÚraisesÚ
ValueErrorr   r   r   r   Ú!test_from_pip_string_legacy_postNG   s    þz5TestSemanticVersion.test_from_pip_string_legacy_postNc                 C   sr   t dƒ}t ddd¡}|  |t |¡¡ tjddddddd}t d	ƒ}|  |t |¡¡ |  d
d„ t t¡¡ d S )Nzv1.2.3r   r   r#   r$   r!   r%   r"   zV1.2.3.0a4.post6c                   S   s   t dƒS )Nzx1.2.3r&   r   r   r   r   r'   a   r(   zDTestSemanticVersion.test_from_pip_string_v_version.<locals>.<lambda>)r
   r   r	   r   r   r   r)   r*   )r   r   r   r   r   r   Útest_from_pip_string_v_versionW   s    þz2TestSemanticVersion.test_from_pip_string_v_versionc                 C   s,   t jdddddd}tdƒ}|  ||¡ d S )Nr   r   r$   r   r   z0.0.1a2r   r   r   r   r   Ú+test_from_pip_string_legacy_nonzero_lead_ind   s        ÿz?TestSemanticVersion.test_from_pip_string_legacy_nonzero_lead_inc                 C   s,   t jdddddd}tdƒ}|  ||¡ d S )Nr   r   r$   r   r   z0.1a2r   r   r   r   r   Ú1test_from_pip_string_legacy_short_nonzero_lead_ink   s        ÿzETestSemanticVersion.test_from_pip_string_legacy_short_nonzero_lead_inc                 C   s,   t jdddddd}tdƒ}|  ||¡ d S )Nr   r   r   r   r   z	2.1.0.rc1r   r   r   r   r   Ú+test_from_pip_string_legacy_no_0_prereleaseq   s        ÿz?TestSemanticVersion.test_from_pip_string_legacy_no_0_prereleasec                 C   s,   t jdddddd}tdƒ}|  ||¡ d S )Nr   r   r   r   r   z	2.0.0.rc1r   r   r   r   r   Ú-test_from_pip_string_legacy_no_0_prerelease_2w   s        ÿzATestSemanticVersion.test_from_pip_string_legacy_no_0_prerelease_2c                 C   s*   t jddddd}tdƒ}|  ||¡ d S )NiÞ  r   Úbr   z	2014.2.b2r   r   r   r   r   Ú(test_from_pip_string_legacy_non_440_beta}   s       ÿz<TestSemanticVersion.test_from_pip_string_legacy_non_440_betac                 C   s   |   ttd¡ d S )NZ6eed5ae©ZassertRaisesr*   r
   ©r   r   r   r   Ú"test_from_pip_string_pure_git_hashƒ   s    z6TestSemanticVersion.test_from_pip_string_pure_git_hashc                 C   s   |   ttd¡ d S )Nznon-release-tag/2014.12.16-1r3   r4   r   r   r   Ú$test_from_pip_string_non_digit_start†   s    ÿz8TestSemanticVersion.test_from_pip_string_non_digit_startc                 C   sr   t  ddd¡}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  |tdƒ¡ d S )Nr   r   r#   )r   r   r#   Úfinalr   r   ©	r   r	   r   Zversion_tupleZbrief_stringZdebian_stringZrelease_stringZ
rpm_stringr
   ©r   Zsemverr   r   r   Útest_final_versionŠ   s    z&TestSemanticVersion.test_final_versionc                 C   sB   t  ddd¡}|  |tdƒ¡ |  |tdƒ¡ |  |tdƒ¡ d S )Nr   r   Ú1z1.0ú1.0.0)r   r	   r   r
   r9   r   r   r   Útest_parsing_short_forms“   s    z,TestSemanticVersion.test_parsing_short_formsc                 C   sv   t jddddd}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d	| ¡ ¡ |  d
| ¡ ¡ |  |td	ƒ¡ d S ©Nr   r   r    r!   r"   )r   r   r    Údevr    r   z
1.2.4~dev5z
1.2.4.dev5z
1.2.3.dev5r8   r9   r   r   r   Útest_dev_version™   s    z$TestSemanticVersion.test_dev_versionc                 C   sv   t jddddd}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d	| ¡ ¡ |  d
| ¡ ¡ |  |td	ƒ¡ d S r>   r8   r9   r   r   r   Útest_dev_no_git_version¢   s    z+TestSemanticVersion.test_dev_no_git_versionc                 C   sv   t jddddd}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d	| ¡ ¡ |  d
| ¡ ¡ |  |td	ƒ¡ d S )Nr   r   r   r!   r"   )r   r   r   r?   r    ú1.2.0z
1.2.0~dev5z
1.2.0.dev5z1.1.9999.dev5r8   r9   r   r   r   Útest_dev_zero_version«   s    z)TestSemanticVersion.test_dev_zero_versionc                 C   sx   t  dddddd¡}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d	| ¡ ¡ |  d
| ¡ ¡ |  |td	ƒ¡ d S )Nr   r   r    r$   é   )r   r   r    ZalphadevrD   r   z1.2.4~a1.dev12z1.2.4.0a1.dev12z1.2.3.a1.dev12r8   r9   r   r   r   Útest_alpha_dev_version´   s    z*TestSemanticVersion.test_alpha_dev_versionc                 C   sv   t  ddddd¡}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d	| ¡ ¡ |  |tdƒ¡ d S )
Nr   r   r    r$   )r   r   r    Úalphar   r   z1.2.4~a1z	1.2.4.0a1z1.2.3.a1r8   r9   r   r   r   Útest_alpha_version½   s    z&TestSemanticVersion.test_alpha_versionc                 C   sv   t  ddddd¡}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d	| ¡ ¡ |  |tdƒ¡ d S )
Nr   r   r   r$   )r   r   r   rF   r   rB   z1.2.0~a1z	1.2.0.0a1z1.1.9999.a1r8   r9   r   r   r   Útest_alpha_zero_versionÆ   s    z+TestSemanticVersion.test_alpha_zero_versionc                 C   sv   t  ddddd¡}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  |tdƒ¡ d S )	Nr   r   r$   )r   r   r   rF   r   r<   z1.0.0~a1z	1.0.0.0a1z0.9999.9999.a1r8   r9   r   r   r   Útest_alpha_major_zero_versionÏ   s    z1TestSemanticVersion.test_alpha_major_zero_versionc                 C   st   t  dddd¡}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d	| ¡ ¡ |  |tdƒ¡ d S )
Nr   r   r    r$   )r   r   r    rF   r   r   z1.2.4~a0z	1.2.4.0a0z1.2.3.a0r8   r9   r   r   r   Útest_alpha_default_versionØ   s    z.TestSemanticVersion.test_alpha_default_versionc                 C   sx   t  dddddd¡}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d	| ¡ ¡ |  d
| ¡ ¡ |  |td	ƒ¡ d S )Nr   r   r    r1   rD   )r   r   r    ZbetadevrD   r   z1.2.4~b1.dev12z1.2.4.0b1.dev12z1.2.3.b1.dev12r8   r9   r   r   r   Útest_beta_dev_versioná   s    z)TestSemanticVersion.test_beta_dev_versionc                 C   sv   t  ddddd¡}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d	| ¡ ¡ |  |tdƒ¡ d S )
Nr   r   r    r1   )r   r   r    Zbetar   r   z1.2.4~b1z	1.2.4.0b1z1.2.3.b1r8   r9   r   r   r   Útest_beta_versionê   s    z%TestSemanticVersion.test_beta_versionc                 C   s0   t  ddddd¡}|  t  ddd¡| ¡ ¡ d S )Nr   r   r    r1   r#   ©r   r	   r   Z	decrementr9   r   r   r   Útest_decrement_nonreleaseó   s
     ÿz-TestSemanticVersion.test_decrement_nonreleasec                 C   s,   t  ddd¡}|  t  ddd¡| ¡ ¡ d S )Nr   r   i'  rM   r9   r   r   r   Útest_decrement_nonrelease_zeroù   s
     ÿz2TestSemanticVersion.test_decrement_nonrelease_zeroc                 C   s,   t  ddd¡}|  t  ddd¡| ¡ ¡ d S )Nr   r!   r    rM   r9   r   r   r   Útest_decrement_release   s
     ÿz*TestSemanticVersion.test_decrement_releasec              	   C   sp   t  ddddd¡}|  t  ddddd¡| ¡ ¡ |  t  ddd¡|jdd¡ |  t  ddd¡|jdd	¡ d S )
Nr   r   r    r1   r#   r   T©Úminor©Úmajor©r   r	   r   Z	incrementr9   r   r   r   Útest_increment_nonrelease  s     ÿ 
ÿ 
ÿz-TestSemanticVersion.test_increment_nonreleasec                 C   sh   t  ddd¡}|  t  ddd¡| ¡ ¡ |  t  ddd¡|jdd¡ |  t  ddd¡|jdd	¡ d S )
Nr   r   r!   r%   r#   r   TrQ   rS   rU   r9   r   r   r   Útest_increment_release  s     ÿ 
ÿ 
ÿz*TestSemanticVersion.test_increment_releasec                 C   sx   t  dddddd¡}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d	| ¡ ¡ |  d
| ¡ ¡ |  |td	ƒ¡ d S )Nr   r   r    r   rD   )r   r   r    ZcandidatedevrD   r   z1.2.4~rc1.dev12z1.2.4.0rc1.dev12z1.2.3.rc1.dev12r8   r9   r   r   r   Útest_rc_dev_version  s    z'TestSemanticVersion.test_rc_dev_versionc                 C   sv   t  ddddd¡}|  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d	| ¡ ¡ |  |tdƒ¡ d S )
Nr   r   r    r   )r   r   r    Ú	candidater   r   z	1.2.4~rc1z
1.2.4.0rc1z	1.2.3.rc1r8   r9   r   r   r   Útest_rc_version(  s    z#TestSemanticVersion.test_rc_versionc              
   C   s`   |   tjdddddt ddd¡ d¡¡ |   tjdddddddt ddddd¡ d¡¡ d S )Nr   r   r#   r"   r   )r   r   r	   Zto_devr4   r   r   r   Útest_to_dev1  s    þþzTestSemanticVersion.test_to_devN)"Ú__name__Ú
__module__Ú__qualname__r   r   r+   r,   r-   r.   r/   r0   r2   r5   r6   r:   r=   r@   rA   rC   rE   rG   rH   rI   rJ   rK   rL   rN   rO   rP   rV   rW   rX   rZ   r[   r   r   r   r   r      s>   $													r   )r   Z	testtoolsr   Z	pbr.testsr   Zpbrr   r	   r
   ZBaseTestCaser   r   r   r   r   Ú<module>   s
   