
    VhI                     r    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y)	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;y8)9VersionsTestsc           	          t        ddddddd      }| j                  |j                         |j                                y)zE
        The local version is the same as the short version.
        dummy   r         release_candidatepostdevN)r   assertEquallocalshort)selfvas     N/home/dcms/DCMS/lib/python3.12/site-packages/incremental/tests/test_version.pytest_localIsShortzVersionsTests.test_localIsShort   s6     WaAJRXXZ0    c           	      l   t        dddd      }t        dddd      }| j                  ||kD         | j                  ||k         | j                  ||k\         | j                  ||k         | j                  ||k7         | j                  |t        dddd      k(         | j                  ||k(         y)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8b!r   )r   zComparisons do not raise on py2c                    t        dddd      }t               }| j                  t              5  ||kD   ddd       | j                  t              5  ||k   ddd       | j                  t              5  ||k\   ddd       | j                  t              5  ||k   ddd       | j	                  ||k(         | j                  ||k7         y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   mxY w# 1 sw Y   VxY w)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%Hy) 	E	 y) 	E	 y) 	F	 y) 	F	 	a Q	 		 		 		 	s/   CC4C&C2CC#&C/2C;c           	      l   t        dddd      }t        dddd      }| j                  ||kD         | j                  ||k         | j                  ||k\         | j                  ||k         | j                  ||k7         | j                  |t        dddd      k(         | j                  ||k(         y)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      }| j                  ||kD         | j                  ||k         | j                  ||       y)zI
        NEXT releases are always larger than numbered releases.
        whateverNEXTr   r   Nr   r   r(   assertNotEqualsr    s      r   test_comparingNEXTReleasesz(VersionsTests.test_comparingNEXTReleasesO   sV     ZA.ZAq)R b!R$r   c           
      \   | j                  t              5  t        ddddddd       ddd       | j                  t              5  t        ddddddd       ddd       | j                  t              5  t        ddddddd       ddd       | j                  t              5  t        ddddddd       ddd       | j                  t              5  t        ddddddd       ddd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ^xY w# 1 sw Y   yxY w)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   s9    z* 	RJ1qQ	R z* 	RJ1qQ	R z* 	RJ1qQ	R z* 	RJ1qQ	R z* 	RJ1qQ	R 	R	R 	R	R 	R	R 	R	R 	R	R 	Rs;   C2C>6D
&DD"2C;>D
DD"D+c                 `    t        dddd      }t        dddd      }| j                  ||       y)z8
        NEXT releases are equal to each other.
        r0   r1   r   N)r   assertEqualsr    s      r   test_comparingNEXTReleasesEqualz-VersionsTests.test_comparingNEXTReleasesEquall   s4     ZA.ZA."b!r   c                     t        ddddd      }t        dddd      }| j                  ||k         | j                  ||kD         | j                  ||       y)zP
        Prereleases are always less than versions without prereleases.
        r0   r   r   
prereleaseNr2   r    s      r   %test_comparingPrereleasesWithReleasesz3VersionsTests.test_comparingPrereleasesWithReleasest   sX     ZAqQ7ZAq)R b!R$r   c                     t        ddddd       | j                  | j                  g      }| j                  t	        |      d       | j                  |d   d   d       y)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~   sa     	
Aq!2%%t'E'E&FGX*QK	"I	
r   c                     t        ddddd      }|j                   | j                  | j                  g      }| j	                  t        |      d       | j	                  |d   d   d       y)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   sj     ZAqA>
%%t'N'N&OPX*QK	"I	
r   c                     t        ddddd      }t        dddd      }| j                  ||k         | j                  ||kD         | j                  ||       y)zf
        Release Candidates are always less than versions without release
        candidates.
        r0   r   r   rH   Nr2   r    s      r   +test_comparingReleaseCandidatesWithReleasesz9VersionsTests.test_comparingReleaseCandidatesWithReleases   sX    
 ZAqA>ZAq)R b!R$r   c                     t        ddddd      }t        dddd      }| j                  ||kD         | j                  ||k         | j                  ||       y)z_
        Post releases are always greater than versions without post
        releases.
        r0   r   r   r   Nr2   r    s      r   &test_comparingPostReleasesWithReleasesz4VersionsTests.test_comparingPostReleasesWithReleases   sX    
 ZAqq1ZAq)R b!R$r   c                     t        ddddd      }t        ddddd      }| j                  ||kD         | j                  ||k         | j                  ||       y)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   sZ    
 ZAqa0ZAqq1R b!R$r   c                     t        ddddd      }t        dddd      }| j                  ||k         | j                  ||kD         | j                  ||       y)zR
        Dev releases are always less than versions without dev releases.
        r0   r   r   rP   Nr2   r    s      r   %test_comparingDevReleasesWithReleasesz3VersionsTests.test_comparingDevReleasesWithReleases   sX     ZAqa0ZAq)R b!R$r   c                     t        ddddd      }t        ddddd      }| j                  ||k(         | j                  ||k7         y)z>
        Release Candidates are equal to prereleases.
        r0   r   r   rH   r>   N)r   r   r(   r    s      r   test_rcEqualsprezVersionsTests.test_rcEqualspre   sJ     ZAqA>ZAqQ7b!r"r   c           	      z    | j                  t              5  t        dddddd       ddd       y# 1 sw Y   yxY w)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J1aAK	L 	L 	Ls   1:c           
      x   t        ddddd      }t        ddddd      }| j                  ||k         | j                  ||kD         | j                  ||k         | j                  ||k\         | j                  ||k7         | j                  |t        ddddd      k(         | j                  ||k(         y)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Pb!r   c           
      x   t        ddddd      }t        ddddd      }| j                  ||k         | j                  ||kD         | j                  ||k         | j                  ||k\         | j                  ||k7         | j                  |t        ddddd      k(         | j                  ||k(         y)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ZAqq1R R b!b!b!gj!QBBCb!r   c           
      x   t        ddddd      }t        ddddd      }| j                  ||k         | j                  ||kD         | j                  ||k         | j                  ||k\         | j                  ||k7         | j                  |t        ddddd      k(         | j                  ||k(         y)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ZAqa0R R b!b!b!gj!QqAABb!r   c                 ~   t        dddddd      }t        dddddd      }| j                  ||k         | j                  ||kD         | j                  ||k         | j                  ||k\         | j                  ||k7         | j                  |t        dddddd      k(         | j                  ||k(         y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ZAqA1ER R b!b!b!gj!QQTUVVWb!r   c                 ~   t        dddddd      }t        dddddd      }| j                  ||k         | j                  ||kD         | j                  ||k         | j                  ||k\         | j                  ||k7         | j                  |t        dddddd      k(         | j                  ||k(         yr_   r   r    s      r   test_comparingDevAndRCDifferentz-VersionsTests.test_comparingDevAndRCDifferent  rb   r   c                 P   | j                  t        t               | j                  t        t        k         | j                  t        t        kD         | j                  t        t        k\         | j                  t        t        k         | j                  t        t        k7         y)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  sj     	t$%%%%&r   c                 8   t               }| j                  t        |kD         | j                  t        |k         | j                  t        |k\         | j                  t        |k         | j                  t        |k7         | j                  t        |k(         y)z;
        L{_inf} is greater than any other object.
        N)r%   r   r   r(   )r   r*   s     r   test_infComparisonz VersionsTests.test_infComparison*  sq     Hq!"	"#	"#r   c                     | j                  t        t        j                  t	        dddd      t	        dddd             y)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  s8     	 KKGQ1%GQ1%		
r   c                 n    t        dddd      }d}| j                  |j                  |      t               y)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  s1    
 WaA&B8r   c           
      R    | j                  t        t        dddd            d       y)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  s%    
 	ggq!Q78:UVr   c                 V    | j                  t        t        ddddd            d       y)	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  s*     	!Qa89<	
r   c                 V    | j                  t        t        ddddd            d       y)	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\  s*    
 	!QQ?@<	
r   c                 V    | j                  t        t        ddddd            d       y)	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  s*     	!Q235X	
r   c                 V    | j                  t        t        ddddd            d       y)	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  s*     	!Qq124V	
r   c           
      R    | j                  t        t        dddd            d       y)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  s%    
 	WWaA679QRr   c                 V    | j                  t        t        ddddd            d       y)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  s*    
 	AqQ78:U	
r   c                 V    | j                  t        t        ddddd            d       y)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  s*    
 	AqA>?'	
r   c                 V    | j                  t        t        ddddd            d       y)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  s*    
 	Aqq124R	
r   c                 X    | j                  t        t        dddddd            d       y)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  s,    
 	AqA1EF,	
r   c                 V    | j                  t        t        ddddd            d       y)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  s*    
 	Aqa013P	
r   c                 X    | j                  t        t        dddddd            d       y)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  s,    
 	Aqqa89/	
r   c                 \    | j                  t        dddd      j                         d       y )Nr   r   r   r   z1.2.3)r   r   r   r8   s    r   	testShortzVersionsTests.testShort  s&    !Q288:GDr   c                 R    | j                  dt        t        dddd                   y)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  s'    
 	*:79aQRTU;V*WXr   c                 V    | j                  t        t        ddddd            d       y)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  s*    
 	WZAqQGH	
r   c                 V    | j                  t        t        ddddd            d       y)zM
        L{getVersionString} includes the release candidate, if any.
        r0   r   r   r   rH   r   Nr   r8   s    r   )test_getVersionStringWithReleaseCandidatez7VersionsTests.test_getVersionStringWithReleaseCandidate  s*     	WZAqANO	
r   c                 V    | j                  t        t        ddddd            d       y)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  s*     	WZAqqAB"	
r   c                 V    | j                  t        t        ddddd            d       y)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  s*     	WZAqa@ACX	
r   c                 X    | j                  t        t        dddddd            d       y)	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  s-    
 	WZAqASTUV$	
r   c                 X    | j                  t        t        dddddd            d       y)	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  s,    
 	WZAqqaHI'	
r   c                 \    | j                  t        dddd      j                         d       y)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::<fEr   c                 \    | j                  t        dddd      j                         d       y)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557Ar   c           	      `    | j                  t        ddddd      j                         d       y)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EzRr   c           	      `    | j                  t        ddddd      j                         d       y)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==?Or   c           	      `    | j                  t        ddddd      j                         d       y)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<<>Mr   c           	      `    | j                  t        ddddd      j                         d       y)r   r   r   r   r   rH   r   Nr   r8   s    r   test_baseWithReleaseCandidatez+VersionsTests.test_baseWithReleaseCandidate  s-     	E1aa8==?	
r   c           
      b    | j                  t        dddddd      j                         d       y)	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"  s/    
 	E1aaQ?DDF	
r   c           
      b    | j                  t        dddddd      j                         d       y)	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+  s0    
 	E1a277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      s?   1" X__S%%,.OP  Q ,"%R&"%

	%	%	%%#L"""""'
$	
9W	



S





EY





FBSP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 
   > % +^
H ^
r   