
    SfI                     z    d Z ddlmZmZ ddlZddlZddlZddlmZm	Z	 ddlm
Z
mZ ddlmZ  G d de          ZdS )	z
Tests for L{incremental}.
    )divisionabsolute_importN)getVersionStringIncomparableVersions)Version_inf)TestCasec                      e Zd Zd Zd Z ej        ej        dk     d          d             Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d, Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8d5 Z9d6 Z:d7 Z;d8S )9VersionsTestsc           	          t          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vas     P/var/www/html/env/lib/python3.11/site-packages/incremental/tests/test_version.pytest_localIsShortzVersionsTests.test_localIsShort   sL     WaAJJJRXXZZ00000    c           	         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   vbs      r   test_versionComparisonz$VersionsTests.test_versionComparison        WaA&&WaA&&R   R   b!!!b!!!b!!!ggq!Q777888b!!!!!r   )r   zComparisons do not raise on py2c                 j   t          dddd          }t                      }|                     t                    5  ||k     ddd           n# 1 swxY w Y   |                     t                    5  ||k      ddd           n# 1 swxY w Y   |                     t                    5  ||k     ddd           n# 1 swxY w Y   |                     t                    5  ||k     ddd           n# 1 swxY w Y   |                     ||k               |                     ||k               dS )z=
        Versions can be compared with non-versions.
        r   r   r   N)r   objectassertRaises	TypeErrorassertFalser   )r   vos      r    test_versionComparisonNonVersionz.VersionsTests.test_versionComparisonNonVersion*   s$   
 GQ1%%HHy)) 	 	EE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	EE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	a   QsG   AAA3BB
B
+B>>CC#C66C:=C:c           	         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   DuMmYNr   r    s      r   %test_versionComparisonCaseInsensitivez3VersionsTests.test_versionComparisonCaseInsensitiveA   r#   r   c                     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(   assertNotEqualsr    s      r   test_comparingNEXTReleasesz(VersionsTests.test_comparingNEXTReleasesO   st     ZA..ZAq))R   b!!!R$$$$$r   c           
         |                      t                    5  t          ddddddd           ddd           n# 1 swxY w Y   |                      t                    5  t          ddddddd           ddd           n# 1 swxY w Y   |                      t                    5  t          ddddddd           ddd           n# 1 swxY w Y   |                      t                    5  t          ddddddd           ddd           n# 1 swxY w Y   |                      t                    5  t          ddddddd           ddd           dS # 1 swxY w Y   dS )zR
        NEXT releases must always have the rest of the numbers set to 0.
        r0   r1   r   r   r   Nr&   
ValueErrorr   r   s    r   test_NEXTMustBeAlonez"VersionsTests.test_NEXTMustBeAloneY   s    z** 	R 	RJ1qQQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R z** 	R 	RJ1qQQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R z** 	R 	RJ1qQQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R z** 	R 	RJ1qQQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R z** 	R 	RJ1qQQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	RsW   >AA#BB
B
+CCC3DDD;EE#&E#c                 z    t          dddd          }t          dddd          }|                     ||           dS )z8
        NEXT releases are equal to each other.
        r0   r1   r   N)r   assertEqualsr    s      r   test_comparingNEXTReleasesEqualz-VersionsTests.test_comparingNEXTReleasesEquall   sF     ZA..ZA.."b!!!!!r   c                     t          ddddd          }t          dddd          }|                     ||k                |                     ||k               |                     ||           dS )zP
        Prereleases are always less than versions without prereleases.
        r0   r   r   
prereleaseNr2   r    s      r   %test_comparingPrereleasesWithReleasesz3VersionsTests.test_comparingPrereleasesWithReleasest   sy     ZAqQ777ZAq))R   b!!!R$$$$$r   c                     t          ddddd           |                     | j        g          }|                     t	          |          d           |                     |d         d         d           dS )z@
        Passing 'prerelease' to Version is deprecated.
        r0   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   warningss     r   rD   z'VersionsTests.test_prereleaseDeprecated~   s     	
Aq!2222%%t'E&FGGX***QK	"I	
 	
 	
 	
 	
r   c                     t          ddddd          }|j         |                     | j        g          }|                     t          |          d           |                     |d         d         d           dS )zD
        Accessing 'prerelease' on a Version is deprecated.
        r0   r   r   r   rB   zuAccessing incremental.Version.prerelease was deprecated in Incremental 16.9.0. Use Version.release_candidate instead.N)r   r?   rC   "test_prereleaseAttributeDeprecatedr   rE   )r   r   rF   s      r   rI   z0VersionsTests.test_prereleaseAttributeDeprecated   s     ZAqA>>>
%%t'N&OPPX***QK	"I	
 	
 	
 	
 	
r   c                     t          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.
        r0   r   r   rH   Nr2   r    s      r   +test_comparingReleaseCandidatesWithReleasesz9VersionsTests.test_comparingReleaseCandidatesWithReleases   sy    
 ZAqA>>>ZAq))R   b!!!R$$$$$r   c                     t          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.
        r0   r   r   r   Nr2   r    s      r   &test_comparingPostReleasesWithReleasesz4VersionsTests.test_comparingPostReleasesWithReleases   sy    
 ZAqq111ZAq))R   b!!!R$$$$$r   c                     t          ddddd          }t          ddddd          }|                     ||k               |                     ||k                |                     ||           dS )zg
        Dev releases are always greater than postreleases based on previous
        releases.
        r0   r   r   r   rM   Nr2   r    s      r   1test_comparingDevReleasesWithPreviousPostReleasesz?VersionsTests.test_comparingDevReleasesWithPreviousPostReleases   s~    
 ZAqa000ZAqq111R   b!!!R$$$$$r   c                     t          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.
        r0   r   r   rP   Nr2   r    s      r   %test_comparingDevReleasesWithReleasesz3VersionsTests.test_comparingDevReleasesWithReleases   sy     ZAqa000ZAq))R   b!!!R$$$$$r   c                     t          ddddd          }t          ddddd          }|                     ||k               |                     ||k               dS )z>
        Release Candidates are equal to prereleases.
        r0   r   r   rH   r>   N)r   r   r(   r    s      r   test_rcEqualsprezVersionsTests.test_rcEqualspre   sh     ZAqA>>>ZAqQ777b!!!r"""""r   c           	          |                      t                    5  t          dddddd           ddd           dS # 1 swxY w Y   dS )zG
        Release Candidate and prerelease can't both be given.
        r0   r   r   )r?   r   Nr6   r8   s    r   test_rcOrpreButNotBothz$VersionsTests.test_rcOrpreButNotBoth   s     z** 	L 	LJ1aAKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls   >AAc           
         t          ddddd          }t          ddddd          }|                     ||k                |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     |t          ddddd          k               |                     ||k               dS )zf
        The value specified as the release candidate is used in version
        comparisons.
        r0   r   r   rH   r   Nr   r    s      r   test_comparingReleaseCandidatesz-VersionsTests.test_comparingReleaseCandidates   s    
 ZAqA>>>ZAqA>>>R   R   b!!!b!!!b!!!gj!QQOOOOPPPb!!!!!r   c           
         t          ddddd          }t          ddddd          }|                     ||k                |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     |t          ddddd          k               |                     ||k               dS )zX
        The value specified as the postrelease is used in version comparisons.
        r0   r   r   rM   r   Nr   r    s      r   test_comparingPostz VersionsTests.test_comparingPost   s     ZAqq111ZAqq111R   R   b!!!b!!!b!!!gj!QBBBBCCCb!!!!!r   c           
         t          ddddd          }t          ddddd          }|                     ||k                |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     |t          ddddd          k               |                     ||k               dS )zX
        The value specified as the dev release is used in version comparisons.
        r0   r   r   rP   r   Nr   r    s      r   test_comparingDevzVersionsTests.test_comparingDev   s     ZAqa000ZAqa000R   R   b!!!b!!!b!!!gj!QqAAAABBBb!!!!!r   c                    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 zv
        The value specified as the dev release and release candidate is used in
        version comparisons.
        r0   r   r   r   r   r   Nr   r    s      r   test_comparingDevAndRCz$VersionsTests.test_comparingDevAndRC       
 ZAqA1EEEZAqA1EEER   R   b!!!b!!!b!!!gj!QQTUVVVVWWWb!!!!!r   c                    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 r_   r   r    s      r   test_comparingDevAndRCDifferentz-VersionsTests.test_comparingDevAndRCDifferent  rb   r   c                    |                      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   r8   s    r   test_infComparisonSelfz$VersionsTests.test_infComparisonSelf  s     	t$$$%%%%%%%%%%%%&&&&&r   c                    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*   s     r   test_infComparisonz VersionsTests.test_infComparison*  s     HHq!!!"""	"""###	"""#####r   c                     |                      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   dumymN)r&   r   operatoreqr   r8   s    r   test_disallowBuggyComparisonsz+VersionsTests.test_disallowBuggyComparisons6  sP     	 KGQ1%%GQ1%%		
 	
 	
 	
 	
r   c                     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   __cmp__NotImplementedr    s      r   test_notImplementedComparisonsz,VersionsTests.test_notImplementedComparisonsA  sB    
 WaA&&B88888r   c           
      l    |                      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   r8   s    r   	test_reprzVersionsTests.test_reprJ  s7    
 	ggq!Q7788:UVVVVVr   c                 p    |                      t          t          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)Nrs   r8   s    r   test_reprWithPrereleasez%VersionsTests.test_reprWithPrereleaseQ  sG     	!Qa88899<	
 	
 	
 	
 	
r   c                 p    |                      t          t          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   rw   rH   rx   Nrs   r8   s    r   test_reprWithReleaseCandidatez+VersionsTests.test_reprWithReleaseCandidate\  sG    
 	!QQ???@@<	
 	
 	
 	
 	
r   c                 p    |                      t          t          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   rw   rM   z!Version('dummy', 1, 2, 3, post=4)Nrs   r8   s    r   test_reprWithPostzVersionsTests.test_reprWithPostf  sG     	!Q222335X	
 	
 	
 	
 	
r   c                 p    |                      t          t          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   rw   rP   z Version('dummy', 1, 2, 3, dev=4)Nrs   r8   s    r   test_reprWithDevzVersionsTests.test_reprWithDevp  sG     	!Qq111224V	
 	
 	
 	
 	
r   c           
      l    |                      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   r8   s    r   test_strzVersionsTests.test_strz  s7    
 	WWaA66779QRRRRRr   c                 p    |                      t          t          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]Nr   r8   s    r   test_strWithPrereleasez$VersionsTests.test_strWithPrerelease  sG    
 	AqQ77788:U	
 	
 	
 	
 	
r   c                 p    |                      t          t          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   rH   r   Nr   r8   s    r   test_strWithReleaseCandidatez*VersionsTests.test_strWithReleaseCandidate  sG    
 	AqA>>>??'	
 	
 	
 	
 	
r   c                 p    |                      t          t          ddddd                    d           dS )zb
        Calling C{str} on a version with a postrelease includes the
        postrelease.
        r   r   r   rM   z[dummy, version 1.0.0.post1]Nr   r8   s    r   test_strWithPostzVersionsTests.test_strWithPost  sG    
 	Aqq111224R	
 	
 	
 	
 	
r   c                 r    |                      t          t          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   r`   z[dummy, version 1.0.0rc1.dev2]Nr   r8   s    r   "test_strWithDevAndReleaseCandidatez0VersionsTests.test_strWithDevAndReleaseCandidate  sI    
 	AqA1EEEFF,	
 	
 	
 	
 	
r   c                 p    |                      t          t          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   rP   z[dummy, version 1.0.0.dev1]Nr   r8   s    r   test_strWithDevzVersionsTests.test_strWithDev  sG    
 	Aqa000113P	
 	
 	
 	
 	
r   c                 r    |                      t          t          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]Nr   r8   s    r   test_strWithDevAndPostz$VersionsTests.test_strWithDevAndPost  sI    
 	Aqqa88899/	
 	
 	
 	
 	
r   c                 v    |                      t          dddd                                          d           d S )Nr   r   r   r   z1.2.3)r   r   r   r8   s    r   	testShortzVersionsTests.testShort  s8    !Q2288::GDDDDDr   c                 l    |                      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.0Twisted   r   Nr   r   r   r8   s    r   test_getVersionStringz#VersionsTests.test_getVersionString  s9    
 	*:79aQRTU;V;V*W*WXXXXXr   c                 p    |                      t          t          ddddd                    d           dS )ze
        L{getVersionString} includes the prerelease as a release candidate, if
        any.
        r0   r   r   r   r>   whatever 8.0.0rc1Nr   r8   s    r   #test_getVersionStringWithPrereleasez1VersionsTests.test_getVersionStringWithPrerelease  sG    
 	WZAqQGGGHH	
 	
 	
 	
 	
r   c                 p    |                      t          t          ddddd                    d           dS )zM
        L{getVersionString} includes the release candidate, if any.
        r0   r   r   r   rH   r   Nr   r8   s    r   )test_getVersionStringWithReleaseCandidatez7VersionsTests.test_getVersionStringWithReleaseCandidate  sG     	WZAqANNNOO	
 	
 	
 	
 	
r   c                 p    |                      t          t          ddddd                    d           dS )zG
        L{getVersionString} includes the postrelease, if any.
        r0   r   r   r   rM   zwhatever 8.0.0.post1Nr   r8   s    r   test_getVersionStringWithPostz+VersionsTests.test_getVersionStringWithPost  sG     	WZAqqAAABB"	
 	
 	
 	
 	
r   c                 p    |                      t          t          ddddd                    d           dS )zG
        L{getVersionString} includes the dev release, if any.
        r0   r   r   r   rP   zwhatever 8.0.0.dev1Nr   r8   s    r   test_getVersionStringWithDevz*VersionsTests.test_getVersionStringWithDev  sG     	WZAqa@@@AACX	
 	
 	
 	
 	
r   c                 r    |                      t          t          dddddd                    d           dS )	ze
        L{getVersionString} includes the dev release and release candidate, if
        any.
        r0   r   r   r   r   r`   zwhatever 8.0.0rc2.dev1Nr   r8   s    r   !test_getVersionStringWithDevAndRCz/VersionsTests.test_getVersionStringWithDevAndRC  sJ    
 	WZAqASTUUUVV$	
 	
 	
 	
 	
r   c                 r    |                      t          t          dddddd                    d           dS )	z_
        L{getVersionString} includes the dev release and postrelease, if
        any.
        r0   r   r   r   r   r   zwhatever 8.0.0.post2.dev1Nr   r8   s    r   #test_getVersionStringWithDevAndPostz1VersionsTests.test_getVersionStringWithDevAndPost  sI    
 	WZAqqaHHHII'	
 	
 	
 	
 	
r   c                 v    |                      t          dddd                                          d           dS )zX
        The C{base} method returns just "NEXT" when NEXT is the major version.
        foor1   r   Nr   r   baser8   s    r   test_baseWithNEXTzVersionsTests.test_baseWithNEXT  s:     	155::<<fEEEEEr   c                 v    |                      t          dddd                                          d           dS )zY
        The C{base} method returns a very simple representation of the version.
        r   r   r   z1.0.0Nr   r8   s    r   	test_basezVersionsTests.test_base  s:     	1a005577AAAAAr   c           	      z    |                      t          ddddd                                          d           dS )P
        The base version includes 'rcX' for versions with prereleases.
        r   r   r   r   r>   1.0.0rc8Nr   r8   s    r   test_baseWithPrereleasez%VersionsTests.test_baseWithPrerelease  s?     	1aA>>>CCEEzRRRRRr   c           	      z    |                      t          ddddd                                          d           dS )zS
        The base version includes 'postX' for versions with postreleases.
        r   r   r   r   rM   z1.0.0.post8Nr   r8   s    r   test_baseWithPostzVersionsTests.test_baseWithPost  s?     	1aa888==??OOOOOr   c           	      z    |                      t          ddddd                                          d           dS )zR
        The base version includes 'devX' for versions with dev releases.
        r   r   r   r   rP   z
1.0.0.dev8Nr   r8   s    r   test_baseWithDevzVersionsTests.test_baseWithDev  s?     	1aQ777<<>>MMMMMr   c           	      z    |                      t          ddddd                                          d           dS )r   r   r   r   r   rH   r   Nr   r8   s    r   test_baseWithReleaseCandidatez+VersionsTests.test_baseWithReleaseCandidate  sJ     	E1aa888==??	
 	
 	
 	
 	
r   c           
      |    |                      t          dddddd                                          d           dS )	zu
        The base version includes 'rcXdevX' for versions with dev releases and
        a release candidate.
        r   r   r   r   r   r`   z1.0.0rc2.dev8Nr   r8   s    r   test_baseWithDevAndRCz#VersionsTests.test_baseWithDevAndRC"  sL    
 	E1aaQ???DDFF	
 	
 	
 	
 	
r   c           
      |    |                      t          dddddd                                          d           dS )	zq
        The base version includes 'postXdevX' for versions with dev releases
        and a postrelease.
        r   r   r   r   r   r   z1.0.0.post2.dev8Nr   r8   s    r   test_baseWithDevAndPostz%VersionsTests.test_baseWithDevAndPost+  sM    
 	E1a2227799;M	
 	
 	
 	
 	
r   N)<__name__
__module____qualname__r   r"   unittestskipIfsysversion_infor+   r.   r4   r9   r<   r@   rD   rI   rK   rN   rQ   rS   rU   rW   rY   r[   r]   ra   rd   rf   rh   rm   rq   ru   ry   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r      su       1 1 1" " " X_S%,.OPP    QP ," " "% % %R R R&" " "% % %
 
 

 
 
	% 	% 	%	% 	% 	%	% 	% 	%% % %# # #L L L" " "" " "" " "" " "" " "' ' '
$ 
$ 
$	
 	
 	
9 9 9W W W	
 	
 	

 
 

 
 

 
 
S S S
 
 

 
 

 
 

 
 

 
 

 
 
E E EY Y Y
 
 

 
 

 
 

 
 

 
 

 
 
F F FB B BS S SP P PN N N
 
 

 
 

 
 
 
 
r   r   )__doc__
__future__r   r   r   r   rk   incrementalr   r   r   r   twisted.trial.unittestr	   r   r   r   r   <module>r      s     1 0 0 0 0 0 0 0 



   > > > > > > > > % % % % % % % % + + + + + +^
 ^
 ^
 ^
 ^
H ^
 ^
 ^
 ^
 ^
r   