Ë
    òT•j€(  ã                   óž   — d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 dZ
 G d„ d	e«      Z G d
„ dej                  «      Z G d„ de«      Zy)zRunning testsé    Né   )Úresult)Ú_SubTest)ÚregisterResultTc                   ó$   — e Zd ZdZd„ Zd„ Zdd„Zy)Ú_WritelnDecoratorz@Used to decorate file-like objects with a handy 'writeln' methodc                 ó   — || _         y ©N)Ústream)Úselfr   s     ú&/usr/lib/python3.12/unittest/runner.pyÚ__init__z_WritelnDecorator.__init__   s	   € Øˆ�ó    c                 óL   — |dv rt        |«      ‚t        | j                  |«      S )N)r   Ú__getstate__)ÚAttributeErrorÚgetattrr   )r   Úattrs     r   Ú__getattr__z_WritelnDecorator.__getattr__   s'   € ØÐ-Ñ-Ü  Ó&Ð&Ü�t—{‘{ 4Ó(Ð(r   Nc                 óL   — |r| j                  |«       | j                  d«       y ©Nú
)Úwrite)r   Úargs     r   Úwritelnz_WritelnDecorator.writeln   s   € ÙØ�J‰J�sŒOØ�
‰
�4Õr   r
   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   © r   r   r   r      s   „ ÙJòò)ô
r   r   c                   ó˜   ‡ — e Zd ZdZdZdZddœˆ fd„
Zd„ Zˆ fd„Zd	„ Z	ˆ fd
„Z
ˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zd„ Zd„ Zˆ xZS )ÚTextTestResultzhA test result class that can print formatted text results to a stream.

    Used by TextTestRunner.
    zF======================================================================zF----------------------------------------------------------------------N©Ú	durationsc                ó�   •— t         t        | �  |||«       || _        |dkD  | _        |dk(  | _        || _        d| _        || _        y)zwConstruct a TextTestResult. Subclasses should accept **kwargs
        to ensure compatibility as the interface changes.r   TN)	Úsuperr"   r   r   ÚshowAllÚdotsÚdescriptionsÚ_newliner$   )r   r   r)   Ú	verbosityr$   Ú	__class__s        €r   r   zTextTestResult.__init__&   sK   ø€ ô 	Œn˜dÑ,¨V°\À9ÔMØˆŒØ  1‘}ˆŒØ ‘NˆŒ	Ø(ˆÔØˆŒØ"ˆ�r   c                 óŒ   — |j                  «       }| j                  r|rdj                  t        |«      |f«      S t        |«      S r   )ÚshortDescriptionr)   ÚjoinÚstr)r   ÚtestÚdoc_first_lines      r   ÚgetDescriptionzTextTestResult.getDescription1   s=   € Ø×.Ñ.Ó0ˆØ×Ò¡Ø—9‘9œc $›i¨Ð8Ó9Ð9ä�t“9Ðr   c                 ó  •— t         t        | �  |«       | j                  rg| j                  j                  | j                  |«      «       | j                  j                  d«       | j                  j                  «        d| _        y y )Nú ... F)	r&   r"   Ú	startTestr'   r   r   r3   Úflushr*   ©r   r1   r,   s     €r   r6   zTextTestResult.startTest8   sd   ø€ ÜŒn˜dÑ-¨dÔ3Ø�<Š<Ø�K‰K×Ñ˜d×1Ñ1°$Ó7Ô8Ø�K‰K×Ñ˜gÔ&Ø�K‰K×ÑÔØ!ˆD�Mð	 r   c                 óÈ  — t        |t        «      }|s| j                  rˆ| j                  s| j                  j	                  «        |r| j                  j                  d«       | j                  j                  | j                  |«      «       | j                  j                  d«       | j                  j	                  |«       | j                  j                  «        d| _        y )Nz  r5   T)Ú
isinstancer   r*   r   r   r   r3   r7   )r   r1   ÚstatusÚ
is_subtests       r   Ú_write_statuszTextTestResult._write_status@   s›   € Ü ¤hÓ/ˆ
Ù˜ŸšØ—=’=Ø—‘×#Ñ#Ô%ÙØ—‘×!Ñ! $Ô'Ø�K‰K×Ñ˜d×1Ñ1°$Ó7Ô8Ø�K‰K×Ñ˜gÔ&Ø�‰×Ñ˜FÔ#Ø�‰×ÑÔØˆ�r   c                 ó¶  •— |�Á| j                   r?t        |d   |j                  «      r| j                  |d«       n‰| j                  |d«       nv| j                  rjt        |d   |j                  «      r| j
                  j                  d«       n| j
                  j                  d«       | j
                  j                  «        t        t        | �+  |||«       y )Nr   ÚFAILÚERRORÚFÚE)r'   Ú
issubclassÚfailureExceptionr=   r(   r   r   r7   r&   r"   Ú
addSubTest)r   r1   ÚsubtestÚerrr,   s       €r   rE   zTextTestResult.addSubTestM   s¥   ø€ Øˆ?Ø�|Š|Ü˜c !™f g×&>Ñ&>Ô?Ø×&Ñ& w°Õ7à×&Ñ& w°Õ8Ø—’Ü˜c !™f g×&>Ñ&>Ô?Ø—K‘K×%Ñ% cÕ*à—K‘K×%Ñ% cÔ*Ø—‘×!Ñ!Ô#ÜŒn˜dÑ.¨t°W¸cÕBr   c                 óî   •— t         t        | �  |«       | j                  r| j	                  |d«       y | j
                  r6| j                  j                  d«       | j                  j                  «        y y )NÚokú.)	r&   r"   Ú
addSuccessr'   r=   r(   r   r   r7   r8   s     €r   rK   zTextTestResult.addSuccess\   sW   ø€ ÜŒn˜dÑ.¨tÔ4Ø�<Š<Ø×Ñ˜t TÕ*Ø�YŠYØ�K‰K×Ñ˜cÔ"Ø�K‰K×ÑÕð r   c                 óð   •— t         t        | �  ||«       | j                  r| j	                  |d«       y | j
                  r6| j                  j                  d«       | j                  j                  «        y y )Nr@   rB   )	r&   r"   ÚaddErrorr'   r=   r(   r   r   r7   ©r   r1   rG   r,   s      €r   rM   zTextTestResult.addErrord   sY   ø€ ÜŒn˜dÑ,¨T°3Ô7Ø�<Š<Ø×Ñ˜t WÕ-Ø�YŠYØ�K‰K×Ñ˜cÔ"Ø�K‰K×ÑÕð r   c                 óð   •— t         t        | �  ||«       | j                  r| j	                  |d«       y | j
                  r6| j                  j                  d«       | j                  j                  «        y y )Nr?   rA   )	r&   r"   Ú
addFailurer'   r=   r(   r   r   r7   rN   s      €r   rP   zTextTestResult.addFailurel   sY   ø€ ÜŒn˜dÑ.¨t°SÔ9Ø�<Š<Ø×Ñ˜t VÕ,Ø�YŠYØ�K‰K×Ñ˜cÔ"Ø�K‰K×ÑÕð r   c                 ó  •— t         t        | �  ||«       | j                  r"| j	                  |dj                  |«      «       y | j                  r6| j                  j                  d«       | j                  j                  «        y y )Nzskipped {0!r}Ús)
r&   r"   ÚaddSkipr'   r=   Úformatr(   r   r   r7   )r   r1   Úreasonr,   s      €r   rS   zTextTestResult.addSkipt   sd   ø€ ÜŒn˜dÑ+¨D°&Ô9Ø�<Š<Ø×Ñ˜t _×%;Ñ%;¸FÓ%CÕDØ�YŠYØ�K‰K×Ñ˜cÔ"Ø�K‰K×ÑÕð r   c                 ó6  •— t         t        | �  ||«       | j                  r6| j                  j                  d«       | j                  j                  «        y | j                  r6| j                  j                  d«       | j                  j                  «        y y )Nzexpected failureÚx)	r&   r"   ÚaddExpectedFailurer'   r   r   r7   r(   r   rN   s      €r   rX   z!TextTestResult.addExpectedFailure|   sl   ø€ ÜŒn˜dÑ6°t¸SÔAØ�<Š<Ø�K‰K×ÑÐ 2Ô3Ø�K‰K×ÑÕØ�YŠYØ�K‰K×Ñ˜cÔ"Ø�K‰K×ÑÕð r   c                 ó4  •— t         t        | �  |«       | j                  r6| j                  j                  d«       | j                  j                  «        y | j                  r6| j                  j                  d«       | j                  j                  «        y y )Nzunexpected successÚu)	r&   r"   ÚaddUnexpectedSuccessr'   r   r   r7   r(   r   r8   s     €r   r[   z#TextTestResult.addUnexpectedSuccess…   sj   ø€ ÜŒn˜dÑ8¸Ô>Ø�<Š<Ø�K‰K×ÑÐ 4Ô5Ø�K‰K×ÑÕØ�YŠYØ�K‰K×Ñ˜cÔ"Ø�K‰K×ÑÕð r   c                 ó  — | j                   s| j                  r4| j                  j                  «        | j                  j	                  «        | j                  d| j                  «       | j                  d| j                  «       t        | dd«      }|rt| j                  j                  | j                  «       |D ]/  }| j                  j                  d| j                  |«      › �«       Œ1 | j                  j	                  «        y y )Nr@   r?   ÚunexpectedSuccessesr    zUNEXPECTED SUCCESS: )r(   r'   r   r   r7   ÚprintErrorListÚerrorsÚfailuresr   Ú
separator1r3   )r   r]   r1   s      r   ÚprintErrorszTextTestResult.printErrorsŽ   sÌ   € Ø�9Š9˜ŸšØ�K‰K×ÑÔ!Ø�K‰K×ÑÔØ×Ñ˜G T§[¡[Ô1Ø×Ñ˜F D§M¡MÔ2Ü% dÐ,AÀ2ÓFÐÙØ�K‰K×Ñ §¡Ô0Ø+ò X�Ø—‘×#Ñ#Ð&:¸4×;NÑ;NÈtÓ;TÐ:UÐ$VÕWðXà�K‰K×ÑÕð	 r   c                 óz  — |D ]¶  \  }}| j                   j                  | j                  «       | j                   j                  |›d| j                  |«      ›�«       | j                   j                  | j                  «       | j                   j                  d|z  «       | j                   j                  «        Œ¸ y )Nz: z%s)r   r   ra   r3   Ú
separator2r7   )r   Úflavourr_   r1   rG   s        r   r^   zTextTestResult.printErrorList›   s‰   € Øò 	 ‰IˆD�#Ø�K‰K×Ñ §¡Ô0Ø�K‰K×ÑªG°D×4GÑ4GÈÔ4MÐ NÔOØ�K‰K×Ñ §¡Ô0Ø�K‰K×Ñ  s¡
Ô+Ø�K‰K×ÑÕñ	 r   )r   r   r   r   ra   rd   r   r3   r6   r=   rE   rK   rM   rP   rS   rX   r[   rb   r^   Ú__classcell__)r,   s   @r   r"   r"      sY   ø„ ñð €JØ€JàEIö 	#òô"òôCô ô ô ô ô ô ò ö r   r"   c                   ó:   — e Zd ZdZeZ	 	 d	dddœd„Zd„ Zd„ Zd„ Z	y)
ÚTextTestRunnerzÉA test runner class that displays results in textual form.

    It prints out the names of tests as they are run, errors as they
    occur, and a summary of the results at the end of the test run.
    NF)Ú	tb_localsr$   c                ó¾   — |€t         j                  }t        |«      | _        || _        || _        || _        || _        || _        |	| _	        || _
        |�|| _        yy)z‰Construct a TextTestRunner.

        Subclasses should accept **kwargs to ensure compatibility as the
        interface changes.
        N)ÚsysÚstderrr   r   r)   r+   ÚfailfastÚbufferri   r$   ÚwarningsÚresultclass)
r   r   r)   r+   rm   rn   rp   ro   ri   r$   s
             r   r   zTextTestRunner.__init__¬   sc   € ð ˆ>Ü—Z‘ZˆFÜ'¨Ó/ˆŒØ(ˆÔØ"ˆŒØ ˆŒØˆŒØ"ˆŒØ"ˆŒØ ˆŒØÐ"Ø*ˆDÕð #r   c                 óþ   — 	 | j                  | j                  | j                  | j                  | j                  ¬«      S # t
        $ r4 | j                  | j                  | j                  | j                  «      cY S w xY w)Nr#   )rp   r   r)   r+   r$   Ú	TypeError)r   s    r   Ú_makeResultzTextTestRunner._makeResultÁ   ss   € ð	4Ø×#Ñ# D§K¡K°×1BÑ1BØ$(§N¡N¸d¿n¹nð $ó Nð Nøäò 	4à×#Ñ# D§K¡K°×1BÑ1BØ$(§N¡Nó4ò 4ð	4ús   ‚<? ¿:A<Á;A<c                 ó$  — |j                   sy t        |j                   d„ d¬«      }| j                  dkD  r|d | j                   }| j                  j	                  d«       t        |d«      r%| j                  j	                  |j                  «       d}|D ]@  \  }}| j                  dk  r|d	k  rd}Œ| j                  j	                  d
|z  d›d|›�«       ŒB |r| j                  j	                  d«       y | j                  j	                  d«       y )Nc                 ó   — | d   S )Nr   r    )rW   s    r   ú<lambda>z0TextTestRunner._printDurations.<locals>.<lambda>Í   s
   € ¸Q¸q¹T€ r   T)ÚkeyÚreverser   zSlowest test durationsrd   Fé   gü©ñÒMbP?z%.3fsÚ10ú zA
(durations < 0.001s were hidden; use -v to show these durations)Ú )ÚcollectedDurationsÚsortedr$   r   r   Úhasattrrd   r+   )r   r   ÚlsÚhiddenr1   Úelapseds         r   Ú_printDurationszTextTestRunner._printDurationsÊ   sø   € Ø×(Ò(ØÜ�F×-Ñ-±>Ø ô"ˆà�>‰>˜AÒØ�O�T—^‘^Ð$ˆBØ�‰×ÑÐ4Ô5Ü�6˜<Ô(Ø�K‰K×Ñ × 1Ñ 1Ô2ØˆØò 	H‰MˆD�'Ø�~‰~ Ò! g°¢oØ�ØØ�K‰K×Ñ¨g¸Ô.?ÁÐ FÕGð		Hñ
 Ø�K‰K×Ñð !Bõ Cð �K‰K×Ñ Õ#r   c                 ó  — | j                  «       }t        |«       | j                  |_        | j                  |_        | j                  |_        t        j                  «       5  | j
                  rt        j                  | j
                  «       t        j                  «       }t        |dd«      }|� |«        	  ||«       t        |dd«      }|� |«        	 t        j                  «       }ddd«       z
  } |j                  «        | j                  �| j                  |«       t        |d«      r%| j                  j!                  |j"                  «       |j$                  }| j                  j!                  d||dk7  xr dxs d|fz  «       | j                  j!                  «        d	x}	x}
}	 t'        t(        |j*                  |j,                  |j.                  f«      }|\  }	}
}g } |j2                  «       sr| j                  j5                  d
«       t)        |j6                  «      t)        |j8                  «      }}|r|j;                  d|z  «       |rS|j;                  d|z  «       n>|d	k(  r|s| j                  j5                  d«       n| j                  j5                  d«       |r|j;                  d|z  «       |	r|j;                  d|	z  «       |
r|j;                  d|
z  «       |r/| j                  j!                  ddj=                  |«      ›d�«       n| j                  j5                  d«       | j                  j?                  «        |S # t        |dd«      }|� |«        w w xY w# 1 sw Y   �Œ‡xY w# t0        $ r Y �Œ¢w xY w)z&Run the given test case or test suite.ÚstartTestRunNÚstopTestRunrd   zRan %d test%s in %.3fsr   rR   r|   r   ÚFAILEDzfailures=%dz	errors=%dzNO TESTS RANÚOKz
skipped=%dzexpected failures=%dzunexpected successes=%dz (z, ú)r   ) rs   r   rm   rn   ri   ro   Úcatch_warningsÚsimplefilterÚtimeÚperf_counterr   rb   r$   rƒ   r   r   r   rd   ÚtestsRunÚmapÚlenÚexpectedFailuresr]   Úskippedr   ÚwasSuccessfulr   r`   r_   Úappendr/   r7   )r   r1   r   Ú	startTimer…   r†   ÚstopTimeÚ	timeTakenÚrunÚexpectedFailsr]   r’   ÚresultsÚinfosÚfailedÚerroreds                   r   r˜   zTextTestRunner.runà   s  € à×!Ñ!Ó#ˆÜ�vÔØŸ-™-ˆŒØŸ™ˆŒØŸ>™>ˆÔÜ×$Ñ$Ó&ñ 	+Ø�}Š}ä×%Ñ% d§m¡mÔ4Ü×)Ñ)Ó+ˆIÜ" 6¨>¸4Ó@ˆLØÐ'Ù”ð"Ù�V”ä% f¨m¸TÓB�ØÐ*Ù•MÜ×(Ñ(Ó*ˆH÷	+ð ˜yÑ(ˆ	Øˆ×ÑÔØ�>‰>Ð%Ø× Ñ  Ô(ä�6˜<Ô(Ø�K‰K×Ñ × 1Ñ 1Ô2à�o‰oˆØ�‰×ÑÐ4Ø  #¨¡(Ò"2¨sÒ"8°b¸)ÐDñEô 	Fà�‰×ÑÔà89Ð9ˆÐ9Ð+¨gð	BÜœ# × 7Ñ 7Ø &× :Ñ :Ø &§¡ð 0ó 1ˆGð ;BÑ7ˆMÐ.°àˆØ#ˆv×#Ñ#Ô%Ø�K‰K×Ñ˜hÔ'Ü! &§/¡/Ó2´C¸¿¹Ó4F�GˆFÙØ—‘˜]¨VÑ3Ô4ÙØ—‘˜[¨7Ñ2Õ3Ø�AŠX™gØ�K‰K×Ñ˜nÕ-à�K‰K×Ñ˜dÔ#ÙØ�L‰L˜¨Ñ/Ô0ÙØ�L‰LÐ/°-Ñ?Ô@ÙØ�L‰LÐ2Ð5HÑHÔIÙØ�K‰K×Ò¨4¯9©9°UÕ+;Ð =Õ>à�K‰K×Ñ˜dÔ#Ø�‰×ÑÔØˆøôe & f¨m¸TÓB�ØÐ*Ù•Mð +ú÷	+ñ 	+ûôB ò 	Úð	ús7   Á#AM2Â:MÃ+M2Æ21M? ÍM/Í/M2Í2M<Í?	NÎN)NTr   FFNN)
r   r   r   r   r"   rp   r   rs   rƒ   r˜   r    r   r   rh   rh   ¤   s3   „ ñð
 !€KàABØJNð+à#¨tô+ò*4ò$ó,Dr   rh   )r   rk   rŒ   ro   r|   r   Úcaser   Úsignalsr   Ú
__unittestÚobjectr   Ú
TestResultr"   rh   r    r   r   ú<module>r£      sN   ðÙ ã 
Û Û å Ý Ý #à€
ô˜ô ô C �V×&Ñ&ô C ôL@�Võ @r   