U
    Á“«jQI  ã                   @   sT   d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
 G dd„ deƒZdS )z
Tests for L{incremental}.
é    N)ÚTestCase)ÚIncomparableVersionsÚVersionÚ_infÚgetVersionStringc                   @   sÆ  e Zd Zdd„ Zdd„ Ze ejdk d¡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?d@„ Z%dAdB„ Z&dCdD„ Z'dEdF„ Z(dGdH„ Z)dIdJ„ Z*dKdL„ Z+dMdN„ Z,dOdP„ Z-dQdR„ Z.dSdT„ Z/dUdV„ Z0dWdX„ Z1dYdZ„ Z2d[d\„ Z3d]d^„ Z4d_d`„ Z5dadb„ Z6dcdd„ Z7dedf„ Z8dgdh„ Z9didj„ Z:dkdl„ Z;dmS )nÚVersionsTestsc              	   C   s.   t dddddddd�}|  | ¡ | ¡ ¡ dS )zE
        The local version is the same as the short version.
        Údummyé   r   é   é   ©Úrelease_candidateÚpostÚdevN)r   ÚassertEqualÚlocalÚshort)ÚselfÚva© r   úB/tmp/pip-unpacked-wheel-0tbuqcsq/incremental/tests/test_version.pyÚtest_localIsShort   s    zVersionsTests.test_localIsShortc                 C   sŒ   t ddddƒ}t ddddƒ}|  ||k¡ |  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  |t ddddƒk¡ |  ||k¡ dS )zB
        Versions can be compared for equality and order.
        r   r	   r   N©r   Ú
assertTrue©r   r   Zvbr   r   r   Útest_versionComparison   s    z$VersionsTests.test_versionComparison)r   zComparisons do not raise on py2c              	   C   s¬   t ddddƒ}tƒ }|  t¡� ||k W 5 Q R X |  t¡� ||k  W 5 Q R X |  t¡� ||k W 5 Q R X |  t¡� ||k W 5 Q R X |  ||k¡ |  ||k¡ dS )z=
        Versions can be compared with non-versions.
        r   r	   r   N)r   ÚobjectÚassertRaisesÚ	TypeErrorÚassertFalser   )r   ÚvÚor   r   r   Ú test_versionComparisonNonVersion'   s    z.VersionsTests.test_versionComparisonNonVersionc                 C   sŒ   t ddddƒ}t ddddƒ}|  ||k¡ |  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  |t ddddƒk¡ |  ||k¡ dS )z=
        Version package names are case insensitive.
        r   r	   r   ZDuMmYNr   r   r   r   r   Ú%test_versionComparisonCaseInsensitive>   s    z3VersionsTests.test_versionComparisonCaseInsensitivec                 C   sH   t ddddƒ}t ddddƒ}|  ||k¡ |  ||k ¡ |  ||¡ dS )zI
        NEXT releases are always larger than numbered releases.
        ÚwhateverÚNEXTr   r	   N©r   r   r   ZassertNotEqualr   r   r   r   Útest_comparingNEXTReleasesL   s
    z(VersionsTests.test_comparingNEXTReleasesc              
   C   sà   |   t¡� tdddddddd� W 5 Q R X |   t¡� tdddddddd� W 5 Q R X |   t¡� tdddddddd� W 5 Q R X |   t¡� tdddddddd� W 5 Q R X |   t¡� tdddddddd� W 5 Q R X dS )zR
        NEXT releases must always have the rest of the numbers set to 0.
        r$   r%   r	   r   r   N©r   Ú
ValueErrorr   ©r   r   r   r   Útest_NEXTMustBeAloneV   s        z"VersionsTests.test_NEXTMustBeAlonec                 C   s,   t ddddƒ}t ddddƒ}|  ||¡ dS )z8
        NEXT releases are equal to each other.
        r$   r%   r   N)r   r   r   r   r   r   Útest_comparingNEXTReleasesEquali   s    z-VersionsTests.test_comparingNEXTReleasesEqualc                 C   sL   t dddddd�}t ddddƒ}|  ||k ¡ |  ||k¡ |  ||¡ dS )zP
        Prereleases are always less than versions without prereleases.
        r$   r	   r   ©Ú
prereleaseNr&   r   r   r   r   Ú%test_comparingPrereleasesWithReleasesq   s
    z3VersionsTests.test_comparingPrereleasesWithReleasesc                 C   sH   t dddddd� |  | jg¡}|  t|ƒd¡ |  |d d d¡ dS )z@
        Passing 'prerelease' to Version is deprecated.
        r$   r	   r   r-   ÚmessagezvPassing prerelease to incremental.Version was deprecated in Incremental 16.9.0. Please pass release_candidate instead.N)r   ÚflushWarningsÚtest_prereleaseDeprecatedr   Úlen)r   Úwarningsr   r   r   r2   {   s    
þz'VersionsTests.test_prereleaseDeprecatedc                 C   sN   t dddddd�}|j |  | jg¡}|  t|ƒd¡ |  |d d d¡ dS )zD
        Accessing 'prerelease' on a Version is deprecated.
        r$   r	   r   ©r   r0   zuAccessing incremental.Version.prerelease was deprecated in Incremental 16.9.0. Use Version.release_candidate instead.N)r   r.   r1   Ú"test_prereleaseAttributeDeprecatedr   r3   )r   r   r4   r   r   r   r6   ˆ   s    
þz0VersionsTests.test_prereleaseAttributeDeprecatedc                 C   sL   t dddddd�}t ddddƒ}|  ||k ¡ |  ||k¡ |  ||¡ dS )zf
        Release Candidates are always less than versions without release
        candidates.
        r$   r	   r   r5   Nr&   r   r   r   r   Ú+test_comparingReleaseCandidatesWithReleases–   s
    z9VersionsTests.test_comparingReleaseCandidatesWithReleasesc                 C   sL   t dddddd�}t ddddƒ}|  ||k¡ |  ||k ¡ |  ||¡ dS )z_
        Post releases are always greater than versions without post
        releases.
        r$   r	   r   ©r   Nr&   r   r   r   r   Ú&test_comparingPostReleasesWithReleases¡   s
    z4VersionsTests.test_comparingPostReleasesWithReleasesc                 C   sP   t dddddd�}t dddddd�}|  ||k¡ |  ||k ¡ |  ||¡ dS )zg
        Dev releases are always greater than postreleases based on previous
        releases.
        r$   r	   r   ©r   r8   Nr&   r   r   r   r   Ú1test_comparingDevReleasesWithPreviousPostReleases¬   s
    z?VersionsTests.test_comparingDevReleasesWithPreviousPostReleasesc                 C   sL   t dddddd�}t ddddƒ}|  ||k ¡ |  ||k¡ |  ||¡ dS )zR
        Dev releases are always less than versions without dev releases.
        r$   r	   r   r:   Nr&   r   r   r   r   Ú%test_comparingDevReleasesWithReleases·   s
    z3VersionsTests.test_comparingDevReleasesWithReleasesc                 C   sD   t dddddd�}t dddddd�}|  ||k¡ |  ||k¡ dS )z>
        Release Candidates are equal to prereleases.
        r$   r	   r   r5   r-   N)r   r   r   r   r   r   r   Útest_rcEqualspreÁ   s    zVersionsTests.test_rcEqualsprec              	   C   s.   |   t¡� tddddddd� W 5 Q R X dS )zG
        Release Candidate and prerelease can't both be given.
        r$   r	   r   )r.   r   Nr(   r*   r   r   r   Útest_rcOrpreButNotBothÊ   s    z$VersionsTests.test_rcOrpreButNotBothc              
   C   s˜   t dddddd�}t dddddd�}|  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  |t dddddd�k¡ |  ||k¡ dS )zf
        The value specified as the release candidate is used in version
        comparisons.
        r$   r	   r   r5   r
   Nr   r   r   r   r   Útest_comparingReleaseCandidatesÑ   s    z-VersionsTests.test_comparingReleaseCandidatesc              
   C   s˜   t dddddd�}t dddddd�}|  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  |t dddddd�k¡ |  ||k¡ dS )zX
        The value specified as the postrelease is used in version comparisons.
        r$   r	   r   r8   r
   Nr   r   r   r   r   Útest_comparingPostà   s    z VersionsTests.test_comparingPostc              
   C   s˜   t dddddd�}t dddddd�}|  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  |t dddddd�k¡ |  ||k¡ dS )zX
        The value specified as the dev release is used in version comparisons.
        r$   r	   r   r:   r
   Nr   r   r   r   r   Útest_comparingDevî   s    zVersionsTests.test_comparingDevc                 C   sž   t ddddddd�}t ddddddd�}|  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  |t ddddddd�k¡ |  ||k¡ dS ©zv
        The value specified as the dev release and release candidate is used in
        version comparisons.
        r$   r	   r   ©r   r   r
   Nr   r   r   r   r   Útest_comparingDevAndRCü   s    z$VersionsTests.test_comparingDevAndRCc                 C   sž   t ddddddd�}t ddddddd�}|  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  |t ddddddd�k¡ |  ||k¡ dS rB   r   r   r   r   r   Útest_comparingDevAndRCDifferent  s    z-VersionsTests.test_comparingDevAndRCDifferentc                 C   sV   |   tt¡ |  ttk ¡ |  ttk¡ |  ttk¡ |  ttk¡ |  ttk¡ dS )zR
        L{_inf} is equal to L{_inf}.

        This is a regression test.
        N)r   r   r   r   r*   r   r   r   Útest_infComparisonSelf  s    z$VersionsTests.test_infComparisonSelfc                 C   s^   t ƒ }|  t|k¡ |  t|k ¡ |  t|k¡ |  t|k¡ |  t|k¡ |  t|k¡ dS )z;
        L{_inf} is greater than any other object.
        N)r   r   r   r   )r   r!   r   r   r   Útest_infComparison'  s    z VersionsTests.test_infComparisonc              
   C   s*   |   ttjtddddƒtddddƒ¡ dS )zO
        The package names of the Version objects need to be the same.
        r   r	   r   ZdumymN)r   r   ÚoperatorÚeqr   r*   r   r   r   Útest_disallowBuggyComparisons3  s    üz+VersionsTests.test_disallowBuggyComparisonsc                 C   s(   t ddddƒ}d}|  | |¡t¡ dS )zh
        Comparing a L{Version} to some other object type results in
        C{NotImplemented}.
        r   r	   r   )r   r	   r   r   N)r   r   Z__cmp__ÚNotImplementedr   r   r   r   Útest_notImplementedComparisons>  s    z,VersionsTests.test_notImplementedComparisonsc                 C   s   |   ttddddƒƒd¡ dS )zu
        Calling C{repr} on a version returns a human-readable string
        representation of the version.
        r   r	   r
   r   zVersion('dummy', 1, 2, 3)N©r   Úreprr   r*   r   r   r   Ú	test_reprG  s    zVersionsTests.test_reprc              
   C   s"   |   ttdddddd�ƒd¡ dS )	zÀ
        Calling C{repr} on a version with a prerelease returns a human-readable
        string representation of the version including the prerelease as a
        release candidate..
        r   r	   r
   r   é   r-   ú.Version('dummy', 1, 2, 3, release_candidate=4)NrM   r*   r   r   r   Útest_reprWithPrereleaseN  s    þz%VersionsTests.test_reprWithPrereleasec              
   C   s"   |   ttdddddd�ƒd¡ dS )	zŸ
        Calling C{repr} on a version with a release candidate returns a
        human-readable string representation of the version including the rc.
        r   r	   r
   r   rP   r5   rQ   NrM   r*   r   r   r   Útest_reprWithReleaseCandidateY  s    þz+VersionsTests.test_reprWithReleaseCandidatec              
   C   s"   |   ttdddddd�ƒd¡ dS )	zª
        Calling C{repr} on a version with a postrelease returns a
        human-readable string representation of the version including the
        postrelease.
        r   r	   r
   r   rP   r8   z!Version('dummy', 1, 2, 3, post=4)NrM   r*   r   r   r   Útest_reprWithPostc  s     ÿzVersionsTests.test_reprWithPostc              
   C   s"   |   ttdddddd�ƒd¡ dS )	zª
        Calling C{repr} on a version with a dev release returns a
        human-readable string representation of the version including the dev
        release.
        r   r	   r
   r   rP   r:   z Version('dummy', 1, 2, 3, dev=4)NrM   r*   r   r   r   Útest_reprWithDevm  s     ÿzVersionsTests.test_reprWithDevc                 C   s   |   ttddddƒƒd¡ dS )zt
        Calling C{str} on a version returns a human-readable string
        representation of the version.
        r   r	   r
   r   z[dummy, version 1.2.3]N©r   Ústrr   r*   r   r   r   Útest_strw  s    zVersionsTests.test_strc              
   C   s"   |   ttdddddd�ƒd¡ dS )zw
        Calling C{str} on a version with a prerelease includes the prerelease
        as a release candidate.
        r   r	   r   r-   ú[dummy, version 1.0.0rc1]NrV   r*   r   r   r   Útest_strWithPrerelease~  s     ÿz$VersionsTests.test_strWithPrereleasec              
   C   s"   |   ttdddddd�ƒd¡ dS )zn
        Calling C{str} on a version with a release candidate includes the
        release candidate.
        r   r	   r   r5   rY   NrV   r*   r   r   r   Útest_strWithReleaseCandidate‡  s    þz*VersionsTests.test_strWithReleaseCandidatec              
   C   s"   |   ttdddddd�ƒd¡ dS )zb
        Calling C{str} on a version with a postrelease includes the
        postrelease.
        r   r	   r   r8   z[dummy, version 1.0.0.post1]NrV   r*   r   r   r   Útest_strWithPost‘  s     ÿzVersionsTests.test_strWithPostc                 C   s$   |   ttddddddd�ƒd¡ dS )z’
        Calling C{str} on a version with a release candidate and dev release
        includes the release candidate and the dev release.
        r   r	   r   r
   rC   z[dummy, version 1.0.0rc1.dev2]NrV   r*   r   r   r   Ú"test_strWithDevAndReleaseCandidateš  s    þz0VersionsTests.test_strWithDevAndReleaseCandidatec              
   C   s"   |   ttdddddd�ƒd¡ dS )zb
        Calling C{str} on a version with a dev release includes the dev
        release.
        r   r	   r   r:   z[dummy, version 1.0.0.dev1]NrV   r*   r   r   r   Útest_strWithDev¤  s     ÿzVersionsTests.test_strWithDevc                 C   s$   |   ttddddddd�ƒd¡ dS )z†
        Calling C{str} on a version with a postrelease and dev release
        includes the postrelease and the dev release.
        r   r	   r   r
   ©r   r   z![dummy, version 1.0.0.post1.dev2]NrV   r*   r   r   r   Útest_strWithDevAndPost­  s    þz$VersionsTests.test_strWithDevAndPostc                 C   s   |   tddddƒ ¡ d¡ d S )Nr   r	   r
   r   z1.2.3)r   r   r   r*   r   r   r   Ú	testShort·  s    zVersionsTests.testShortc              	   C   s   |   dttddddƒƒ¡ dS )zr
        L{getVersionString} returns a string with the package name and the
        short version number.
        zTwisted 8.0.0ZTwistedé   r   N©r   r   r   r*   r   r   r   Útest_getVersionStringº  s    z#VersionsTests.test_getVersionStringc              
   C   s"   |   ttdddddd�ƒd¡ dS )ze
        L{getVersionString} includes the prerelease as a release candidate, if
        any.
        r$   rb   r   r	   r-   úwhatever 8.0.0rc1Nrc   r*   r   r   r   Ú#test_getVersionStringWithPrereleaseÁ  s    þz1VersionsTests.test_getVersionStringWithPrereleasec              
   C   s"   |   ttdddddd�ƒd¡ dS )zM
        L{getVersionString} includes the release candidate, if any.
        r$   rb   r   r	   r5   re   Nrc   r*   r   r   r   Ú)test_getVersionStringWithReleaseCandidateË  s    þz7VersionsTests.test_getVersionStringWithReleaseCandidatec              
   C   s"   |   ttdddddd�ƒd¡ dS )zG
        L{getVersionString} includes the postrelease, if any.
        r$   rb   r   r	   r8   zwhatever 8.0.0.post1Nrc   r*   r   r   r   Útest_getVersionStringWithPostÔ  s    þz+VersionsTests.test_getVersionStringWithPostc              
   C   s"   |   ttdddddd�ƒd¡ dS )zG
        L{getVersionString} includes the dev release, if any.
        r$   rb   r   r	   r:   zwhatever 8.0.0.dev1Nrc   r*   r   r   r   Útest_getVersionStringWithDevÝ  s     ÿz*VersionsTests.test_getVersionStringWithDevc                 C   s$   |   ttddddddd�ƒd¡ dS )	ze
        L{getVersionString} includes the dev release and release candidate, if
        any.
        r$   rb   r   r
   r	   rC   zwhatever 8.0.0rc2.dev1Nrc   r*   r   r   r   Ú!test_getVersionStringWithDevAndRCå  s    þz/VersionsTests.test_getVersionStringWithDevAndRCc                 C   s$   |   ttddddddd�ƒd¡ dS )	z_
        L{getVersionString} includes the dev release and postrelease, if
        any.
        r$   rb   r   r
   r	   r_   zwhatever 8.0.0.post2.dev1Nrc   r*   r   r   r   Ú#test_getVersionStringWithDevAndPostï  s    þz1VersionsTests.test_getVersionStringWithDevAndPostc                 C   s   |   tddddƒ ¡ d¡ dS )zX
        The C{base} method returns just "NEXT" when NEXT is the major version.
        Úfoor%   r   N©r   r   Úbaser*   r   r   r   Útest_baseWithNEXTù  s    zVersionsTests.test_baseWithNEXTc                 C   s   |   tddddƒ ¡ d¡ dS )zY
        The C{base} method returns a very simple representation of the version.
        rl   r	   r   z1.0.0Nrm   r*   r   r   r   Ú	test_baseÿ  s    zVersionsTests.test_basec              	   C   s"   |   tdddddd� ¡ d¡ dS )úP
        The base version includes 'rcX' for versions with prereleases.
        rl   r	   r   rb   r-   ú1.0.0rc8Nrm   r*   r   r   r   Útest_baseWithPrerelease  s    z%VersionsTests.test_baseWithPrereleasec              	   C   s"   |   tdddddd� ¡ d¡ dS )zS
        The base version includes 'postX' for versions with postreleases.
        rl   r	   r   rb   r8   z1.0.0.post8Nrm   r*   r   r   r   Útest_baseWithPost  s    zVersionsTests.test_baseWithPostc              	   C   s"   |   tdddddd� ¡ d¡ dS )zR
        The base version includes 'devX' for versions with dev releases.
        rl   r	   r   rb   r:   z
1.0.0.dev8Nrm   r*   r   r   r   Útest_baseWithDev  s    zVersionsTests.test_baseWithDevc              	   C   s"   |   tdddddd� ¡ d¡ dS )rq   rl   r	   r   rb   r5   rr   Nrm   r*   r   r   r   Útest_baseWithReleaseCandidate  s     ÿz+VersionsTests.test_baseWithReleaseCandidatec              
   C   s$   |   tddddddd� ¡ d¡ dS )	zu
        The base version includes 'rcXdevX' for versions with dev releases and
        a release candidate.
        rl   r	   r   r
   rb   rC   z1.0.0rc2.dev8Nrm   r*   r   r   r   Útest_baseWithDevAndRC  s     ÿz#VersionsTests.test_baseWithDevAndRCc              
   C   s$   |   tddddddd� ¡ d¡ dS )	zq
        The base version includes 'postXdevX' for versions with dev releases
        and a postrelease.
        rl   r	   r   r
   rb   r_   z1.0.0.post2.dev8Nrm   r*   r   r   r   Útest_baseWithDevAndPost(  s     ÿz%VersionsTests.test_baseWithDevAndPostN)<Ú__name__Ú
__module__Ú__qualname__r   r   ÚunittestZskipIfÚsysÚversion_infor"   r#   r'   r+   r,   r/   r2   r6   r7   r9   r;   r<   r=   r>   r?   r@   rA   rD   rE   rF   rG   rJ   rL   rO   rR   rS   rT   rU   rX   rZ   r[   r\   r]   r^   r`   ra   rd   rf   rg   rh   ri   rj   rk   ro   rp   rs   rt   ru   rv   rw   rx   r   r   r   r   r      sl   



		


	
	
	

		

	r   )Ú__doc__rH   r}   r|   Ztwisted.trial.unittestr   Úincrementalr   r   r   r   r   r   r   r   r   Ú<module>   s   