
    F\h(                         S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	  Sr
 " S S	\5      r " S
 S\R                  5      r " S S\5      rg)zRunning tests    N   )result)_SubTest)registerResultTc                   .    \ rS rSrSrS rS rSS jrSrg)	_WritelnDecorator   z@Used to decorate file-like objects with a handy 'writeln' methodc                     Xl         g Nstream)selfr   s     &/usr/lib/python3.13/unittest/runner.py__init___WritelnDecorator.__init__   s        c                 P    US;   a  [        U5      e[        U R                  U5      $ )N)r   __getstate__)AttributeErrorgetattrr   )r   attrs     r   __getattr___WritelnDecorator.__getattr__   s'    -- &&t{{4((r   Nc                 V    U(       a  U R                  U5        U R                  S5        g N
)write)r   args     r   writeln_WritelnDecorator.writeln   s    JJsO

4r   r   r   )	__name__
__module____qualname____firstlineno____doc__r   r   r   __static_attributes__ r   r   r   r      s    J)
r   r   c                      ^  \ rS rSrSrSrSrSS.U 4S jjrS rU 4S	 jr	S
 r
U 4S jrU 4S jrU 4S jrU 4S jrU 4S jrU 4S jrU 4S jrS rS rSrU =r$ )TextTestResult   z`A test result class that can print formatted text results to a stream.

Used by TextTestRunner.
zF======================================================================zF----------------------------------------------------------------------N	durationsc                   > [         [        U ]  XU5        Xl        US:  U l        US:H  U l        X l        SU l        X@l        g)zoConstruct a TextTestResult. Subclasses should accept **kwargs
to ensure compatibility as the interface changes.r   TN)	superr)   r   r   showAlldotsdescriptions_newliner,   )r   r   r1   	verbosityr,   	__class__s        r   r   TextTestResult.__init__&   sC     	nd,V9M 1}N	("r   c                     UR                  5       nU R                  (       a#  U(       a  SR                  [        U5      U45      $ [        U5      $ r   )shortDescriptionr1   joinstr)r   testdoc_first_lines      r   getDescriptionTextTestResult.getDescription1   s=    ..099c$i899t9r   c                   > [         [        U ]  U5        U R                  (       ag  U R                  R                  U R                  U5      5        U R                  R                  S5        U R                  R                  5         SU l        g g )N ... F)	r.   r)   	startTestr/   r   r   r<   flushr2   r   r:   r4   s     r   r@   TextTestResult.startTest8   sd    nd-d3<<KKd11$78KKg&KK!DM	 r   c                    [        U[        5      nU(       d  U R                  (       a  U R                  (       d  U R                  R	                  5         U(       a  U R                  R                  S5        U R                  R                  U R                  U5      5        U R                  R                  S5        U R                  R	                  U5        U R                  R                  5         SU l        g )Nz  r?   T)
isinstancer   r2   r   r   r   r<   rA   )r   r:   status
is_subtests       r   _write_statusTextTestResult._write_status@   s    h/
==##%!!$'KKd11$78KKg&F#r   c                   > Ub  U R                   (       aD  [        US   UR                  5      (       a  U R                  US5        OU R                  US5        OU R                  (       ao  [        US   UR                  5      (       a  U R
                  R                  S5        OU R
                  R                  S5        U R
                  R                  5         [        [        U ]+  XU5        g )Nr   FAILERRORFE)r/   
issubclassfailureExceptionrH   r0   r   r   rA   r.   r)   
addSubTest)r   r:   subtesterrr4   s       r   rQ   TextTestResult.addSubTestM   s    ?||c!fg&>&>??&&w7&&w8c!fg&>&>??KK%%c*KK%%c*!!#nd.tcBr   c                   > [         [        U ]  U5        U R                  (       a  U R	                  US5        g U R
                  (       a6  U R                  R                  S5        U R                  R                  5         g g )Nok.)	r.   r)   
addSuccessr/   rH   r0   r   r   rA   rB   s     r   rX   TextTestResult.addSuccess\   sW    nd.t4<<tT*YYKKc"KK r   c                   > [         [        U ]  X5        U R                  (       a  U R	                  US5        g U R
                  (       a6  U R                  R                  S5        U R                  R                  5         g g )NrL   rN   )	r.   r)   addErrorr/   rH   r0   r   r   rA   r   r:   rS   r4   s      r   r[   TextTestResult.addErrord   sW    nd,T7<<tW-YYKKc"KK r   c                   > [         [        U ]  X5        U R                  (       a  U R	                  US5        g U R
                  (       a6  U R                  R                  S5        U R                  R                  5         g g )NrK   rM   )	r.   r)   
addFailurer/   rH   r0   r   r   rA   r\   s      r   r_   TextTestResult.addFailurel   sW    nd.t9<<tV,YYKKc"KK r   c                    > [         [        U ]  X5        U R                  (       a"  U R	                  USR                  U5      5        g U R                  (       a6  U R                  R                  S5        U R                  R                  5         g g )Nzskipped {0!r}s)
r.   r)   addSkipr/   rH   formatr0   r   r   rA   )r   r:   reasonr4   s      r   rc   TextTestResult.addSkipt   sb    nd+D9<<t_%;%;F%CDYYKKc"KK r   c                 H  > [         [        U ]  X5        U R                  (       a6  U R                  R                  S5        U R                  R                  5         g U R                  (       a6  U R                  R                  S5        U R                  R                  5         g g )Nzexpected failurex)	r.   r)   addExpectedFailurer/   r   r   rA   r0   r   r\   s      r   ri   !TextTestResult.addExpectedFailure|   sj    nd6tA<<KK 23KKYYKKc"KK r   c                 H  > [         [        U ]  U5        U R                  (       a6  U R                  R                  S5        U R                  R                  5         g U R                  (       a6  U R                  R                  S5        U R                  R                  5         g g )Nzunexpected successu)	r.   r)   addUnexpectedSuccessr/   r   r   rA   r0   r   rB   s     r   rm   #TextTestResult.addUnexpectedSuccess   sj    nd8><<KK 45KKYYKKc"KK r   c                 4   U R                   (       d  U R                  (       a4  U R                  R                  5         U R                  R	                  5         U R                  SU R                  5        U R                  SU R                  5        [        U SS5      nU(       av  U R                  R                  U R                  5        U H0  nU R                  R                  SU R                  U5       35        M2     U R                  R	                  5         g g )NrL   rK   unexpectedSuccessesr'   zUNEXPECTED SUCCESS: )r0   r/   r   r   rA   printErrorListerrorsfailuresr   
separator1r<   )r   rp   r:   s      r   printErrorsTextTestResult.printErrors   s    99KK!KKGT[[1FDMM2%d,A2FKK0+##&:4;N;Nt;T:U$VW ,KK	 r   c                    U H  u  p4U R                   R                  U R                  5        U R                   R                  U< SU R                  U5      < 35        U R                   R                  U R                  5        U R                   R                  SU-  5        U R                   R                  5         M     g )Nz: z%s)r   r   rt   r<   
separator2rA   )r   flavourrr   r:   rS   s        r   rq   TextTestResult.printErrorList   s    IDKK0KKGD4G4G4M NOKK0KKs
+KK  r   )r2   r1   r0   r,   r/   r   )r!   r"   r#   r$   r%   rt   rx   r   r<   r@   rH   rQ   rX   r[   r_   rc   ri   rm   ru   rq   r&   __classcell__)r4   s   @r   r)   r)      sc     JJEI 	# 	#"C          r   r)   c                   F    \ rS rSrSr\r  SSSS.S jjrS rS r	S	 r
S
rg)TextTestRunner   zA 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                    Uc  [         R                  n[        U5      U l        X l        X0l        X@l        XPl        Xl        Xl	        Xpl
        Ub  X`l        gg)zqConstruct a TextTestRunner.

Subclasses should accept **kwargs to ensure compatibility as the
interface changes.
N)sysstderrr   r   r1   r3   failfastbufferr   r,   warningsresultclass)
r   r   r1   r3   r   r   r   r   r   r,   s
             r   r   TextTestRunner.__init__   sS     >ZZF'/(" "" "* #r   c                      U R                  U R                  U R                  U R                  U R                  S9$ ! [
         a4    U R                  U R                  U R                  U R                  5      s $ f = f)Nr+   )r   r   r1   r3   r,   	TypeError)r   s    r   _makeResultTextTestRunner._makeResult   ss    	4##DKK1B1B$(NNdnn $ N N 	4##DKK1B1B$(NN4 4	4s   9< ;A:9A:c                 J   UR                   (       d  g [        UR                   S SS9nU R                  S:  a  US U R                   nU R                  R	                  S5        [        US5      (       a%  U R                  R	                  UR                  5        SnU HE  u  pEU R                  S:  a
  US	:  a  SnM  U R                  R	                  S
U-  <S SU< 35        MG     U(       a  U R                  R	                  S5        g U R                  R	                  S5        g )Nc                     U S   $ )Nr   r'   )rh   s    r   <lambda>0TextTestRunner._printDurations.<locals>.<lambda>   s    QqTr   T)keyreverser   zSlowest test durationsrx   F   gMbP?z%.3fs10 zA
(durations < 0.001s were hidden; use -v to show these durations) )collectedDurationssortedr,   r   r   hasattrrx   r3   )r   r   lshiddenr:   elapseds         r   _printDurationsTextTestRunner._printDurations   s    ((F--> ">>AOT^^$B456<((KK 1 12MD~~!goKKg.? FG	  
 KK !B C KK#r   c                    U R                  5       n[        U5        U R                  Ul        U R                  Ul        U R                  Ul        [
        R                  " 5          U R
                  (       a   [
        R                  " U R
                  5        [        R                  " 5       n[        USS5      nUb  U" 5          U" U5        [        USS5      nUb  U" 5         [        R                  " 5       nSSS5        WW-
  nUR                  " 5         U R                  b  U R                  U5        [        US5      (       a%  U R                  R!                  UR"                  5        UR$                  nU R                  R!                  SXS:g  =(       a    S=(       d    SU4-  5        U R                  R!                  5         S	=n	=p ['        [(        UR*                  UR,                  UR.                  45      nUu  pn/ nUR2                  " 5       (       d{  U R                  R5                  S
5        [)        UR6                  5      [)        UR8                  5      pU(       a  UR;                  SU-  5        U(       a  UR;                  SU-  5        ODUS	:X  a#  U(       d  U R                  R5                  S5        OU R                  R5                  S5        U(       a  UR;                  SU-  5        U	(       a  UR;                  SU	-  5        U
(       a  UR;                  SU
-  5        U(       a0  U R                  R!                  SSR=                  U5      < S35        OU R                  R5                  S5        U R                  R?                  5         U$ ! [        USS5      nUb  U" 5         f f = f! , (       d  f       GN= f! [0         a     GNf = f)z&Run the given test case or test suite.startTestRunNstopTestRunrx   zRan %d test%s in %.3fsr   rb   r   r   FAILEDzfailures=%dz	errors=%dzNO TESTS RANOKz
skipped=%dzexpected failures=%dzunexpected successes=%dz (z, )r   ) r   r   r   r   r   r   catch_warningssimplefiltertimeperf_counterr   ru   r,   r   r   r   r   rx   testsRunmaplenexpectedFailuresrp   skippedr   wasSuccessfulr   rs   rr   appendr8   rA   )r   r:   r   	startTimer   r   stopTime	timeTakenrunexpectedFailsrp   r   resultsinfosfailederroreds                   r   r   TextTestRunner.run   s   !!#v-->>$$&}}%%dmm4))+I"6>4@L'"V%fmTB*M((*H ' y(	>>%  (6<((KK 1 12oo4 ("2s"8b)DE 	F8999+	B# 7 7 & : : & 0 1G ;B7M##%%KKh'!&//2C4FG]V34[723AXgKKn-KKd#LL/0LL/-?@LL25HHIKK499U+; =>KKd#e &fmTB*M + '&B  		s7   $AN3N,N3
1O N00N33
O
OO)	r   r1   r,   r   r   r   r   r3   r   )NTr   FFNN)r!   r"   r#   r$   r%   r)   r   r   r   r   r   r&   r'   r   r   r}   r}      s3    
 !KABJN+#t+*4$,Dr   r}   )r%   r   r   r   r   r   caser   signalsr   
__unittestobjectr   
TestResultr)   r}   r'   r   r   <module>r      sN     
     #
  C V&& C L@V @r   