a
    åzeB²  ã                   @   s
  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Zd dlZd dl	m
Z
 G dd„ deƒZdd„ Zd	d
„ Zdd„ ZG dd„ dƒZG dd„ dejƒZeejjƒZdD ]
Zee= q¤ddd„Zeed< edefeƒZG dd„ dejƒZG dd„ dejƒZedkre ¡  dS )é    N)Úsupport)Úcaptured_stdout)Ústrclassc                   @   s   e Zd ZG dd„ dƒZdS )ÚMockTracebackc                   @   s   e Zd Zdd„ Zdd„ ZdS )z MockTraceback.TracebackExceptionc                 O   s   |  dd¡| _d S )NÚcapture_localsF)Úgetr   )ÚselfÚargsÚkwargs© r   ú//usr/lib/python3.9/unittest/test/test_result.pyÚ__init__   s    z)MockTraceback.TracebackException.__init__c                 C   s   dg}| j r| d¡ |S )NzA tracebackÚlocals)r   Úappend©r   Úresultr   r   r   Úformat   s    
z'MockTraceback.TracebackException.formatN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   ÚTracebackException   s   r   N)r   r   r   r   r   r   r   r   r      s   r   c                   C   s   t tj_ d S ©N)Ú	tracebackÚunittestr   r   r   r   r   Úrestore_traceback   s    r   c                   C   s   t dƒ tdƒ‚d S )Nzdo cleanup1zbad cleanup1)ÚprintÚ	TypeErrorr   r   r   r   Úbad_cleanup1   s    r   c                   C   s   t dƒ tdƒ‚d S )Nzdo cleanup2zbad cleanup2)r   Ú
ValueErrorr   r   r   r   Úbad_cleanup2    s    r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚBufferedWriterc                 C   s   d| _ d| _d S ©NÚ ©r   Úbuffer©r   r   r   r   r   &   s    zBufferedWriter.__init__c                 C   s   |  j |7  _ d S r   )r$   )r   Úargr   r   r   Úwrite*   s    zBufferedWriter.writec                 C   s   |  j | j7  _ d| _d S r!   r#   r%   r   r   r   Úflush-   s    zBufferedWriter.flushc                 C   s   | j S r   ©r   r%   r   r   r   Úgetvalue1   s    zBufferedWriter.getvalueN)r   r   r   r   r'   r(   r*   r   r   r   r   r    %   s   r    c                   @   s$  e Z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e ejjd%kd&¡d'd(„ ƒZe ejjd%kd&¡d)d*„ ƒZe ejjd%kd&¡d+d,„ ƒZe ejjd%kd&¡d-d.„ ƒZd/d0„ Zd1d2„ Zd3d4„ Z d5S )6ÚTest_TestResultc                 C   sr   t  ¡ }|  | ¡ ¡ |  t|jƒd¡ |  t|jƒd¡ |  |jd¡ |  |j	d¡ |  
|j¡ |  
|j¡ d S ©Nr   F)r   Ú
TestResultÚ
assertTrueÚwasSuccessfulÚassertEqualÚlenÚerrorsÚfailuresÚtestsRunÚ
shouldStopZassertIsNoneZ_stdout_bufferZ_stderr_bufferr   r   r   r   Ú	test_init?   s    zTest_TestResult.test_initc                 C   s"   t  ¡ }| ¡  |  |jd¡ d S ©NT)r   r-   Ústopr0   r5   r   r   r   r   Ú	test_stopM   s    zTest_TestResult.test_stopc                 C   sˆ   G dd„ dt jƒ}|dƒ}t  ¡ }| |¡ |  | ¡ ¡ |  t|jƒd¡ |  t|j	ƒd¡ |  |j
d¡ |  |jd¡ | |¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z+Test_TestResult.test_startTest.<locals>.Fooc                 S   s   d S r   r   r%   r   r   r   Útest_1X   s    z2Test_TestResult.test_startTest.<locals>.Foo.test_1N©r   r   r   r:   r   r   r   r   ÚFooW   s   r<   r:   r   é   F©r   ÚTestCaser-   Ú	startTestr.   r/   r0   r1   r2   r3   r4   r5   ÚstopTest©r   r<   Útestr   r   r   r   Útest_startTestV   s    
zTest_TestResult.test_startTestc                 C   sÖ   G dd„ dt jƒ}|dƒ}t  ¡ }| |¡ |  | ¡ ¡ |  t|jƒd¡ |  t|j	ƒd¡ |  |j
d¡ |  |jd¡ | |¡ |  | ¡ ¡ |  t|jƒd¡ |  t|j	ƒd¡ |  |j
d¡ |  |jd¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z*Test_TestResult.test_stopTest.<locals>.Fooc                 S   s   d S r   r   r%   r   r   r   r:   m   s    z1Test_TestResult.test_stopTest.<locals>.Foo.test_1Nr;   r   r   r   r   r<   l   s   r<   r:   r   r=   Fr>   rB   r   r   r   Útest_stopTestk   s    

zTest_TestResult.test_stopTestc                 C   s   t  ¡ }| ¡  | ¡  d S r   )r   r-   ÚstartTestRunÚstopTestRunr   r   r   r   Útest_startTestRun_stopTestRun†   s    z-Test_TestResult.test_startTestRun_stopTestRunc                 C   s’   G dd„ dt jƒ}|dƒ}t  ¡ }| |¡ | |¡ | |¡ |  | ¡ ¡ |  t	|j
ƒd¡ |  t	|jƒd¡ |  |jd¡ |  |jd¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z,Test_TestResult.test_addSuccess.<locals>.Fooc                 S   s   d S r   r   r%   r   r   r   r:       s    z3Test_TestResult.test_addSuccess.<locals>.Foo.test_1Nr;   r   r   r   r   r<   Ÿ   s   r<   r:   r   r=   F)r   r?   r-   r@   Ú
addSuccessrA   r.   r/   r0   r1   r2   r3   r4   r5   rB   r   r   r   Útest_addSuccessž   s    


zTest_TestResult.test_addSuccessc                 C   sÞ   G dd„ dt jƒ}|dƒ}z| d¡ W n   t ¡ }Y n0 t  ¡ }| |¡ | ||¡ | |¡ |  	| 
¡ ¡ |  t|jƒd¡ |  t|jƒd¡ |  |jd¡ |  |jd¡ |jd \}}|  ||¡ |  |t¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z,Test_TestResult.test_addFailure.<locals>.Fooc                 S   s   d S r   r   r%   r   r   r   r:   Ç   s    z3Test_TestResult.test_addFailure.<locals>.Foo.test_1Nr;   r   r   r   r   r<   Æ   s   r<   r:   Úfoor   r=   F)r   r?   ÚfailÚsysÚexc_infor-   r@   Ú
addFailurerA   ÚassertFalser/   r0   r1   r2   r3   r4   r5   ÚassertIsÚassertIsInstanceÚstr©r   r<   rC   Úexc_info_tupler   Ú	test_caseÚformatted_excr   r   r   Útest_addFailureÅ   s$    

zTest_TestResult.test_addFailurec                    s¢   G dd„ dt jƒ}|dƒ‰‡fdd„}|ƒ }tj|Ž }t  ¡ }| ˆ¡ | ˆ|¡ | ˆ¡ |jd d ‰ ‡ fdd	„|D ƒ}|  	t
|ƒd¡ |  d
|d ¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zDTest_TestResult.test_addFailure_filter_traceback_frames.<locals>.Fooc                 S   s   d S r   r   r%   r   r   r   r:   â   s    zKTest_TestResult.test_addFailure_filter_traceback_frames.<locals>.Foo.test_1Nr;   r   r   r   r   r<   á   s   r<   r:   c                      s(   zˆ   d¡ W n   t ¡  Y S 0 d S )NrK   )rL   rM   rN   r   ©rC   r   r   Úget_exc_infoæ   s    zMTest_TestResult.test_addFailure_filter_traceback_frames.<locals>.get_exc_infor   r=   c                    s   g | ]}|ˆ vr|‘qS r   r   ©Ú.0Úl©rW   r   r   Ú
<listcomp>ö   ó    zKTest_TestResult.test_addFailure_filter_traceback_frames.<locals>.<listcomp>ú raise self.failureException(msg)©r   r?   r   Úformat_exceptionr-   r@   rO   rA   r3   r0   r1   ÚassertIn©r   r<   rZ   rU   Zfull_excr   Zdroppedr   ©rW   rC   r   Ú'test_addFailure_filter_traceback_framesà   s    


z7Test_TestResult.test_addFailure_filter_traceback_framesc                    s¢   G dd„ dt jƒ}|dƒ‰‡fdd„}|ƒ }tj|Ž }t  ¡ }| ˆ¡ | ˆ|¡ | ˆ¡ |jd d ‰ ‡ fdd	„|D ƒ}|  	t
|ƒd¡ |  d
|d ¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zLTest_TestResult.test_addFailure_filter_traceback_frames_context.<locals>.Fooc                 S   s   d S r   r   r%   r   r   r   r:   ü   s    zSTest_TestResult.test_addFailure_filter_traceback_frames_context.<locals>.Foo.test_1Nr;   r   r   r   r   r<   û   s   r<   r:   c                      sB   z(zˆ   d¡ W n   tdƒ‚Y n0 W n   t ¡  Y S 0 d S )NrK   é*   )rL   r   rM   rN   r   rY   r   r   rZ      s    zUTest_TestResult.test_addFailure_filter_traceback_frames_context.<locals>.get_exc_infor   r=   c                    s   g | ]}|ˆ vr|‘qS r   r   r[   r^   r   r   r_     r`   zSTest_TestResult.test_addFailure_filter_traceback_frames_context.<locals>.<listcomp>ra   rb   re   r   rf   r   Ú/test_addFailure_filter_traceback_frames_contextú   s    	


z?Test_TestResult.test_addFailure_filter_traceback_frames_contextc                 C   sÚ   G dd„ dt jƒ}|dƒ}z
tƒ ‚W n   t ¡ }Y n0 t  ¡ }| |¡ | ||¡ | |¡ |  	| 
¡ ¡ |  t|jƒd¡ |  t|jƒd¡ |  |jd¡ |  |jd¡ |jd \}}|  ||¡ |  |t¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z*Test_TestResult.test_addError.<locals>.Fooc                 S   s   d S r   r   r%   r   r   r   r:   .  s    z1Test_TestResult.test_addError.<locals>.Foo.test_1Nr;   r   r   r   r   r<   -  s   r<   r:   r=   r   F)r   r?   r   rM   rN   r-   r@   ÚaddErrorrA   rP   r/   r0   r1   r2   r3   r4   r5   rQ   rR   rS   rT   r   r   r   Útest_addError,  s$    


zTest_TestResult.test_addErrorc                 C   s„   G dd„ dt jƒ}|dƒ}t  ¡ }d|_tt j_|  t¡ | 	¡  | 
|¡ | ¡  |  t|jƒd¡ |jd \}}|  d|¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z1Test_TestResult.test_addError_locals.<locals>.Fooc                 S   s   dd  d S )Nr=   r   r   r%   r   r   r   r:   I  s    z8Test_TestResult.test_addError_locals.<locals>.Foo.test_1Nr;   r   r   r   r   r<   H  s   r<   r:   Tr=   r   zA tracebacklocals)r   r?   r-   Ú	tb_localsr   r   r   Ú
addCleanupr   rF   ÚrunrG   r0   r1   r2   )r   r<   rC   r   rV   rW   r   r   r   Útest_addError_localsG  s    

z$Test_TestResult.test_addError_localsc                    sÖ   G ‡ ‡‡fdd„dt jƒ}d ‰|dƒ‰t  ¡ ‰ ˆ ˆ ¡ |  ˆ  ¡ ¡ |  tˆ jƒd¡ |  tˆ j	ƒd¡ |  ˆ j
d¡ |  ˆ jd¡ ˆ jd \}}|  |ˆ¡ |  d|¡ ˆ j	d \}}|  |ˆ¡ |  d|¡ d S )	Nc                       s   e Zd Z‡ ‡‡fdd„ZdS )z,Test_TestResult.test_addSubTest.<locals>.Fooc              	      sv   | j ddV | j‰zdd  W n ty:   t ¡ }Y n0 ˆ  ˆˆ|¡ |  d¡ W d   ƒ n1 sh0    Y  d S )Nr=   ©rK   r   úsome recognizable failure)ÚsubTestÚ_subtestÚZeroDivisionErrorrM   rN   Z
addSubTestrL   )r   rU   ©r   ZsubtestrC   r   r   r:   \  s    z3Test_TestResult.test_addSubTest.<locals>.Foo.test_1Nr;   r   ru   r   r   r<   [  s   r<   r:   r=   Fr   rt   rq   )r   r?   r-   rn   rP   r/   r0   r1   r2   r3   r4   r5   rQ   rd   )r   r<   rV   rW   r   ru   r   Útest_addSubTestZ  s     
zTest_TestResult.test_addSubTestc                 C   s,   t  d dd¡}|  | | ¡dt d ¡ d S )NTr=   z$testGetDescriptionWithoutDocstring (z.Test_TestResult)©r   ÚTextTestResultr0   ÚgetDescriptionr   r   r   r   r   Ú"testGetDescriptionWithoutDocstring|  s    ÿþz2Test_TestResult.testGetDescriptionWithoutDocstringc                 C   s°   | j ddd: t d dd¡}|  | | j¡dt d ¡ W d   ƒ n1 sN0    Y  |   d¡: t d dd¡}|  | | j¡dt d ¡ W d   ƒ n1 s¢0    Y  d S )	Nr=   é   ©rK   ÚbarTz+testGetSubTestDescriptionWithoutDocstring (z .Test_TestResult) (foo=1, bar=2)zsome messagez .Test_TestResult) [some message]©rr   r   rx   r0   ry   rs   r   r   r   r   r   Ú)testGetSubTestDescriptionWithoutDocstringƒ  s     
ÿþ"
ÿþz9Test_TestResult.testGetSubTestDescriptionWithoutDocstringc                 C   sV   |   ¡ : t d dd¡}|  | | j¡dt d ¡ W d   ƒ n1 sH0    Y  d S )NTr=   z4testGetSubTestDescriptionWithoutDocstringAndParams (z.Test_TestResult) (<subtest>)r~   r   r   r   r   Ú2testGetSubTestDescriptionWithoutDocstringAndParams‘  s    

ÿÿþzBTest_TestResult.testGetSubTestDescriptionWithoutDocstringAndParamsc              	   C   sl   d}t  d dd¡}dd g fD ]J}|  |¡, |  | | j¡|t|f ¡ W d   ƒ q1 s\0    Y  qd S )NzAtestGetSubTestDescriptionForFalsyValues (%s.Test_TestResult) [%s]Tr=   r   ©r   rx   rr   r0   ry   rs   r   )r   Zexpectedr   r&   r   r   r   Ú'testGetSubTestDescriptionForFalsyValues™  s    

þz7Test_TestResult.testGetSubTestDescriptionForFalsyValuesc              	   C   sˆ   | j ddh | j ddd: t d dd¡}|  | | j¡dt d ¡ W d   ƒ n1 s\0    Y  W d   ƒ n1 sz0    Y  d S )	Nr=   rp   r{   é   ©Zbazr}   Tz1testGetNestedSubTestDescriptionWithoutDocstring (z'.Test_TestResult) (baz=2, bar=3, foo=1)r~   r   r   r   r   Ú/testGetNestedSubTestDescriptionWithoutDocstring£  s    
ÿÿþz?Test_TestResult.testGetNestedSubTestDescriptionWithoutDocstringc              	   C   sŠ   | j dddh | j ddd: t d dd¡}|  | | j¡dt d	 ¡ W d   ƒ n1 s^0    Y  W d   ƒ n1 s|0    Y  d S )
Nr=   r{   r|   rƒ   é   r„   Tz;testGetDuplicatedNestedSubTestDescriptionWithoutDocstring (z'.Test_TestResult) (baz=3, bar=4, foo=1)r~   r   r   r   r   Ú9testGetDuplicatedNestedSubTestDescriptionWithoutDocstring¬  s    
ÿÿþzITest_TestResult.testGetDuplicatedNestedSubTestDescriptionWithoutDocstringr{   z)Docstrings are omitted with -O2 and abovec                 C   s,   t  ddd¡}|  | | ¡dt d ¡ dS )ú5Tests getDescription() for a method with a docstring.NTr=   z(testGetDescriptionWithOneLineDocstring (zG.Test_TestResult)
Tests getDescription() for a method with a docstring.rw   r   r   r   r   Ú&testGetDescriptionWithOneLineDocstringµ  s    ÿÿþz6Test_TestResult.testGetDescriptionWithOneLineDocstringc                 C   s\   t  ddd¡}| jddd, |  | | j¡dt d ¡ W d  ƒ n1 sN0    Y  dS )rˆ   NTr=   r{   r|   z/testGetSubTestDescriptionWithOneLineDocstring (zV.Test_TestResult) (foo=1, bar=2)
Tests getDescription() for a method with a docstring.r   r   r   r   r   Ú-testGetSubTestDescriptionWithOneLineDocstringÀ  s    
ÿÿþz=Test_TestResult.testGetSubTestDescriptionWithOneLineDocstringc                 C   s,   t  ddd¡}|  | | ¡dt d ¡ dS )úoTests getDescription() for a method with a longer docstring.
        The second line of the docstring.
        NTr=   z*testGetDescriptionWithMultiLineDocstring (zN.Test_TestResult)
Tests getDescription() for a method with a longer docstring.rw   r   r   r   r   Ú(testGetDescriptionWithMultiLineDocstringÌ  s    ÿÿþz8Test_TestResult.testGetDescriptionWithMultiLineDocstringc                 C   s\   t  ddd¡}| jddd, |  | | j¡dt d ¡ W d  ƒ n1 sN0    Y  dS )r‹   NTr=   r{   r|   z1testGetSubTestDescriptionWithMultiLineDocstring (z].Test_TestResult) (foo=1, bar=2)
Tests getDescription() for a method with a longer docstring.r   r   r   r   r   Ú/testGetSubTestDescriptionWithMultiLineDocstringÚ  s    
ÿÿþz?Test_TestResult.testGetSubTestDescriptionWithMultiLineDocstringc                 C   sH   G dd„ dt ƒ}t ¡ }|  | |¡¡ d|jjd< |  | |¡¡ d S )Nc                   @   s   e Zd ZG dd„ deƒZdS )z5Test_TestResult.testStackFrameTrimming.<locals>.Framec                   @   s   e Zd Zi ZdS )z>Test_TestResult.testStackFrameTrimming.<locals>.Frame.tb_frameN)r   r   r   Ú	f_globalsr   r   r   r   Útb_frameë  s   r   N)r   r   r   Úobjectr   r   r   r   r   ÚFrameê  s   r‘   TZ
__unittest)r   r   r-   rP   Z_is_relevant_tb_levelr   rŽ   r.   )r   r‘   r   r   r   r   ÚtestStackFrameTrimmingé  s
    z&Test_TestResult.testStackFrameTrimmingc                 C   s’   t  ¡ }dd„ |_d|_| d d ¡ |  |j¡ t  ¡ }dd„ |_d|_| d d ¡ |  |j¡ t  ¡ }dd„ |_d|_| d ¡ |  |j¡ d S )Nc                  W   s   dS r!   r   ©Ú_r   r   r   Ú<lambda>õ  r`   z.Test_TestResult.testFailFast.<locals>.<lambda>Tc                  W   s   dS r!   r   r“   r   r   r   r•   û  r`   c                  W   s   dS r!   r   r“   r   r   r   r•     r`   )	r   r-   Z_exc_info_to_stringÚfailfastrj   r.   r5   rO   ÚaddUnexpectedSuccessr   r   r   r   ÚtestFailFastó  s    



zTest_TestResult.testFailFastc                    sJ   t ƒ }tj|dd}‡ fdd„}| |¡}| ¡  ˆ  | ¡  d¡¡ d S )NT)Ústreamr–   c                    s   ˆ   | j¡ d S r   )r.   r–   r)   r%   r   r   rC   	  s    z5Test_TestResult.testFailFastSetByRunner.<locals>.testz

OK
)r    r   ÚTextTestRunnerrn   r(   r.   r*   Úendswith)r   r™   ÚrunnerrC   r   r   r%   r   ÚtestFailFastSetByRunner  s    
z'Test_TestResult.testFailFastSetByRunnerN)!r   r   r   r6   r9   rD   rE   rH   rJ   rX   rg   ri   rk   ro   rv   rz   r   r€   r‚   r…   r‡   r   ZskipIfrM   ÚflagsÚoptimizer‰   rŠ   rŒ   r   r’   r˜   r   r   r   r   r   r+   5   sJ   
	'2"
		ÿ
	ÿ

ÿ
ÿ

r+   )ZaddSkipZaddExpectedFailurer—   r   c                 C   s(   g | _ g | _d| _d| _d| _d| _d S r,   )r3   r2   r4   r5   r$   rl   )r   r™   ZdescriptionsÚ	verbosityr   r   r   r     s    r   Ú	OldResultc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTest_OldTestResultc                 C   sT   t  dtf¡2 tƒ }| |¡ |  t|jƒ|¡ W d   ƒ n1 sF0    Y  d S )NzTestResult has no add.+ method,)r   Zcheck_warningsÚRuntimeWarningr¡   rn   r0   r1   r3   )r   rC   r3   r   r   r   r   ÚassertOldResultWarning"  s    ÿ
z)Test_OldTestResult.assertOldResultWarningc                 C   s>   G dd„ dt jƒ}dD ]"\}}||ƒ}|  |t| ƒ¡ qd S )Nc                   @   s0   e Zd Zdd„ Zejdd„ ƒZejdd„ ƒZdS )z2Test_OldTestResult.testOldTestResult.<locals>.Testc                 S   s   |   d¡ d S )NZfoobar©ZskipTestr%   r   r   r   ÚtestSkip+  s    z;Test_OldTestResult.testOldTestResult.<locals>.Test.testSkipc                 S   s   t ‚d S r   )r   r%   r   r   r   ÚtestExpectedFail-  s    zCTest_OldTestResult.testOldTestResult.<locals>.Test.testExpectedFailc                 S   s   d S r   r   r%   r   r   r   ÚtestUnexpectedSuccess0  s    zHTest_OldTestResult.testOldTestResult.<locals>.Test.testUnexpectedSuccessN)r   r   r   r¦   r   ZexpectedFailurer§   r¨   r   r   r   r   ÚTest*  s
   
r©   ))r¦   T)r§   T)r¨   F)r   r?   r¤   Úint)r   r©   Z	test_nameZshould_passrC   r   r   r   ÚtestOldTestResult)  s    
z$Test_OldTestResult.testOldTestResultc                 C   s&   G dd„ dt jƒ}|  |dƒd¡ d S )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )z7Test_OldTestResult.testOldTestTesultSetup.<locals>.Testc                 S   s   |   d¡ d S )Nú	no reasonr¥   r%   r   r   r   ÚsetUp<  s    z=Test_OldTestResult.testOldTestTesultSetup.<locals>.Test.setUpc                 S   s   d S r   r   r%   r   r   r   ÚtestFoo>  s    z?Test_OldTestResult.testOldTestTesultSetup.<locals>.Test.testFooN)r   r   r   r­   r®   r   r   r   r   r©   ;  s   r©   r®   r   )r   r?   r¤   ©r   r©   r   r   r   ÚtestOldTestTesultSetup:  s    z)Test_OldTestResult.testOldTestTesultSetupc                 C   s0   t  d¡G dd„ dt jƒƒ}|  |dƒd¡ d S )Nr¬   c                   @   s   e Zd Zdd„ ZdS )z7Test_OldTestResult.testOldTestResultClass.<locals>.Testc                 S   s   d S r   r   r%   r   r   r   r®   E  s    z?Test_OldTestResult.testOldTestResultClass.<locals>.Test.testFooN©r   r   r   r®   r   r   r   r   r©   C  s   r©   r®   r   )r   Úskipr?   r¤   r¯   r   r   r   ÚtestOldTestResultClassB  s    z)Test_OldTestResult.testOldTestResultClassc                 C   s6   G dd„ dt jƒ}t jtt ¡ d}| |dƒ¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z8Test_OldTestResult.testOldResultWithRunner.<locals>.Testc                 S   s   d S r   r   r%   r   r   r   r®   K  s    z@Test_OldTestResult.testOldResultWithRunner.<locals>.Test.testFooNr±   r   r   r   r   r©   J  s   r©   )Zresultclassr™   r®   )r   r?   rš   r¡   ÚioÚStringIOrn   )r   r©   rœ   r   r   r   ÚtestOldResultWithRunnerI  s
    ÿz*Test_OldTestResult.testOldResultWithRunnerN)r   r   r   r¤   r«   r°   r³   r¶   r   r   r   r   r¢      s
   r¢   c                   @   s´   e Z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'd(„ Zd)d*„ Zd+S ),ÚTestOutputBufferingc                 C   s   t j| _t j| _d S r   )rM   ÚstdoutÚ	_real_outÚstderrÚ	_real_errr%   r   r   r   r­   V  s    zTestOutputBuffering.setUpc                 C   s   | j t_| jt_d S r   )r¹   rM   r¸   r»   rº   r%   r   r   r   ÚtearDownZ  s    zTestOutputBuffering.tearDownc                 C   sf   | j }| j}t ¡ }|  |j¡ |  |tj¡ |  |tj	¡ | 
| ¡ |  |tj¡ |  |tj	¡ d S r   )r¹   r»   r   r-   rP   r$   rQ   rM   r¸   rº   r@   )r   Úreal_outÚreal_errr   r   r   r   ÚtestBufferOutputOff^  s    
z'TestOutputBuffering.testBufferOutputOffc                 C   sŽ  | j }| j}t ¡ }|  |j¡ d|_|  |tj¡ |  |tj	¡ | 
| ¡ |  |tj¡ |  |tj	¡ |  tjtj¡ |  tj	tj¡ |  tjtj	¡ tj}tj	}t ¡ |_t ¡ |_tdƒ tdtj	d |  | ¡ d¡ |  | ¡ d¡ |  |j ¡ d¡ |  |j ¡ d¡ | | ¡ | | ¡ |  tj|j¡ |  tj	|j¡ |  |j ¡ d¡ |  |j ¡ d¡ |  | ¡ d¡ |  | ¡ d¡ d S )NTrK   r}   ©Úfilezfoo
zbar
r"   )r¹   r»   r   r-   rP   r$   rQ   rM   r¸   rº   r@   ZassertIsNotrR   r´   rµ   Ú_original_stdoutÚ_original_stderrr   r0   r*   rI   rA   )r   r½   r¾   r   Z
out_streamZ
err_streamr   r   r   Ú#testBufferOutputStartTestAddSuccessm  s>    




z7TestOutputBuffering.testBufferOutputStartTestAddSuccessc                 C   s   t  ¡ }d|_| | ¡ |S r7   )r   r-   r$   r@   r   r   r   r   ÚgetStartedResult  s    
z$TestOutputBuffering.getStartedResultc                 C   s  t tj_|  t¡ dD ]ú\}}}|  ¡ }tj}tj	}t
 ¡ |_t
 ¡ |_tdtjd |rhtdtj	d t||ƒ}|| dƒ | | ¡ t||ƒ}|  t|ƒd¡ |d \}	}
t d¡}d	}|rÈt d
¡}d||f }|  |	| ¡ |  |j ¡ |¡ |  |j ¡ |¡ |  |
|¡ qd S )N)©r2   rj   T©r3   rO   FrÆ   rÇ   rK   rÀ   r}   )NNNr=   r   z9
                Stdout:
                foo
            r"   z9
                Stderr:
                bar
            zA traceback%s%s)r   r   r   r   rm   r   rÅ   rM   r¸   rº   r´   rµ   rÂ   rÃ   r   ÚgetattrrA   r0   r1   ÚtextwrapÚdedentrQ   r*   ZassertMultiLineEqual)r   Zmessage_attrZadd_attrZinclude_errorr   Zbuffered_outZbuffered_errZaddFunctionZresult_listrC   ÚmessageZexpectedOutMessageZexpectedErrMessageZexpectedFullMessager   r   r   Ú!testBufferOutputAddErrorOrFailure£  s4    








z5TestOutputBuffering.testBufferOutputAddErrorOrFailurec           	      C   sÎ   t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|j	ƒd¡ dt
|ƒ› d}|j	d	 \}}|  t|ƒ|¡ |  d
|¡ |  ||¡ d S )NTc                   @   s   e Zd Zdd„ Zdd„ ZdS )z0TestOutputBuffering.testBufferSetUp.<locals>.Fooc                 S   s   t dƒ dd  d S ©Núset upr=   r   ©r   r%   r   r   r   r­   Ø  s    z6TestOutputBuffering.testBufferSetUp.<locals>.Foo.setUpc                 S   s   d S r   r   r%   r   r   r   Útest_fooÛ  s    z9TestOutputBuffering.testBufferSetUp.<locals>.Foo.test_fooN©r   r   r   r­   rÐ   r   r   r   r   r<   ×  s   r<   rÐ   z
Stdout:
set up
r=   ú
test_foo (ú)r   ú#ZeroDivisionError: division by zero©r   r   r-   r$   r?   Ú	TestSuiter0   r*   r1   r2   r   rS   rd   ©	r   r¸   r   r<   ÚsuiteÚexpected_outÚdescriptionrV   rW   r   r   r   ÚtestBufferSetUpÒ  s    &z#TestOutputBuffering.testBufferSetUpc           	      C   sÎ   t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|j	ƒd¡ dt
|ƒ› d}|j	d	 \}}|  t|ƒ|¡ |  d
|¡ |  ||¡ d S )NTc                   @   s   e Zd Zdd„ Zdd„ ZdS )z3TestOutputBuffering.testBufferTearDown.<locals>.Fooc                 S   s   t dƒ dd  d S ©Nz	tear downr=   r   rÏ   r%   r   r   r   r¼   î  s    z<TestOutputBuffering.testBufferTearDown.<locals>.Foo.tearDownc                 S   s   d S r   r   r%   r   r   r   rÐ   ñ  s    z<TestOutputBuffering.testBufferTearDown.<locals>.Foo.test_fooN)r   r   r   r¼   rÐ   r   r   r   r   r<   í  s   r<   rÐ   z
Stdout:
tear down
r=   rÒ   rÓ   r   rÔ   rÕ   r×   r   r   r   ÚtestBufferTearDownè  s    &z&TestOutputBuffering.testBufferTearDownc           	      C   s  t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|j	ƒd¡ dt
|ƒ› d}|j	d	 \}}|  t|ƒ|¡ |  d
|¡ |  d|¡ |  ||¡ |j	d \}}|  t|ƒ|¡ |  d|¡ |  d|¡ |  ||¡ d S )NTc                   @   s   e Zd Zdd„ Zdd„ ZdS )z5TestOutputBuffering.testBufferDoCleanups.<locals>.Fooc                 S   s    t dƒ |  t¡ |  t¡ d S ©NrÎ   ©r   rm   r   r   r%   r   r   r   r­     s    
z;TestOutputBuffering.testBufferDoCleanups.<locals>.Foo.setUpc                 S   s   d S r   r   r%   r   r   r   rÐ     s    z>TestOutputBuffering.testBufferDoCleanups.<locals>.Foo.test_fooNrÑ   r   r   r   r   r<     s   r<   rÐ   ú(
Stdout:
set up
do cleanup2
do cleanup1
r{   rÒ   rÓ   r   úValueError: bad cleanup2r   r=   úTypeError: bad cleanup1r   ©r   r   r-   r$   r?   rÖ   r0   r*   r1   r2   r   rS   rd   ÚassertNotInr×   r   r   r   ÚtestBufferDoCleanupsþ  s(    &z(TestOutputBuffering.testBufferDoCleanupsc           	      C   s‚  t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|j	ƒd¡ dt
|ƒ› d}|j	d	 \}}|  t|ƒ|¡ |  d
|¡ |  d|¡ |  d|¡ |  ||¡ |j	d \}}|  t|ƒ|¡ |  d|¡ |  d|¡ |  d|¡ |  ||¡ |j	d \}}|  t|ƒ|¡ |  d|¡ |  d|¡ |  d|¡ |  ||¡ d S )NTc                   @   s   e Zd Zdd„ Zdd„ ZdS )z;TestOutputBuffering.testBufferSetUp_DoCleanups.<locals>.Fooc                 S   s(   t dƒ |  t¡ |  t¡ dd  d S rÍ   rß   r%   r   r   r   r­   !  s    

zATestOutputBuffering.testBufferSetUp_DoCleanups.<locals>.Foo.setUpc                 S   s   d S r   r   r%   r   r   r   rÐ   &  s    zDTestOutputBuffering.testBufferSetUp_DoCleanups.<locals>.Foo.test_fooNrÑ   r   r   r   r   r<      s   r<   rÐ   rà   rƒ   rÒ   rÓ   r   rÔ   r   r   r=   rá   rt   r{   râ   rã   r×   r   r   r   ÚtestBufferSetUp_DoCleanups  s8    &z.TestOutputBuffering.testBufferSetUp_DoCleanupsc           	      C   s‚  t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|j	ƒd¡ dt
|ƒ› d}|j	d	 \}}|  t|ƒ|¡ |  d
|¡ |  d|¡ |  d|¡ |  ||¡ |j	d \}}|  t|ƒ|¡ |  d|¡ |  d|¡ |  d|¡ |  ||¡ |j	d \}}|  t|ƒ|¡ |  d|¡ |  d|¡ |  d|¡ |  ||¡ d S )NTc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )z>TestOutputBuffering.testBufferTearDown_DoCleanups.<locals>.Fooc                 S   s    t dƒ |  t¡ |  t¡ d S rÞ   rß   r%   r   r   r   r­   G  s    
zDTestOutputBuffering.testBufferTearDown_DoCleanups.<locals>.Foo.setUpc                 S   s   t dƒ dd  d S rÜ   rÏ   r%   r   r   r   r¼   K  s    zGTestOutputBuffering.testBufferTearDown_DoCleanups.<locals>.Foo.tearDownc                 S   s   d S r   r   r%   r   r   r   rÐ   N  s    zGTestOutputBuffering.testBufferTearDown_DoCleanups.<locals>.Foo.test_fooN)r   r   r   r­   r¼   rÐ   r   r   r   r   r<   F  s   r<   rÐ   z2
Stdout:
set up
tear down
do cleanup2
do cleanup1
rƒ   rÒ   rÓ   r   rÔ   r   r   r=   rá   rt   r{   râ   rã   r×   r   r   r   ÚtestBufferTearDown_DoCleanupsA  s8    &
z1TestOutputBuffering.testBufferTearDown_DoCleanupsc           	      C   sÌ   t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|j	ƒd¡ dt
|ƒ› d}|j	d	 \}}|  |j|¡ |  d
|¡ |  ||¡ d S )NTc                   @   s    e Zd Zedd„ ƒZdd„ ZdS )z5TestOutputBuffering.testBufferSetupClass.<locals>.Fooc                 S   s   t dƒ dd  d S ©Núset up classr=   r   rÏ   ©Úclsr   r   r   Ú
setUpClasso  s    z@TestOutputBuffering.testBufferSetupClass.<locals>.Foo.setUpClassc                 S   s   d S r   r   r%   r   r   r   rÐ   s  s    z>TestOutputBuffering.testBufferSetupClass.<locals>.Foo.test_fooN©r   r   r   Úclassmethodrì   rÐ   r   r   r   r   r<   n  s   
r<   rÐ   ú
Stdout:
set up class
r=   úsetUpClass (rÓ   r   rÔ   ©r   r   r-   r$   r?   rÖ   r0   r*   r1   r2   r   rÚ   rd   r×   r   r   r   ÚtestBufferSetupClassi  s    &z(TestOutputBuffering.testBufferSetupClassc           	      C   sÌ   t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|j	ƒd¡ dt
|ƒ› d}|j	d	 \}}|  |j|¡ |  d
|¡ |  ||¡ d S )NTc                   @   s    e Zd Zedd„ ƒZdd„ ZdS )z8TestOutputBuffering.testBufferTearDownClass.<locals>.Fooc                 S   s   t dƒ dd  d S ©Nútear down classr=   r   rÏ   rê   r   r   r   ÚtearDownClass†  s    zFTestOutputBuffering.testBufferTearDownClass.<locals>.Foo.tearDownClassc                 S   s   d S r   r   r%   r   r   r   rÐ   Š  s    zATestOutputBuffering.testBufferTearDownClass.<locals>.Foo.test_fooN)r   r   r   rî   rõ   rÐ   r   r   r   r   r<   …  s   
r<   rÐ   ú
Stdout:
tear down class
r=   útearDownClass (rÓ   r   rÔ   rñ   r×   r   r   r   ÚtestBufferTearDownClass€  s    &z+TestOutputBuffering.testBufferTearDownClassc           	      C   s  t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|j	ƒd¡ dt
|ƒ› d}|j	d	 \}}|  |j|¡ |  d
|¡ |  d|¡ |  ||¡ |j	d \}}|  |j|¡ |  d|¡ |  d|¡ |  ||¡ d S )NTc                   @   s,   e Zd Zedd„ ƒZedd„ ƒZdd„ ZdS )z:TestOutputBuffering.testBufferDoClassCleanups.<locals>.Fooc                 S   s    t dƒ |  t¡ |  t¡ d S ©Nré   ©r   ZaddClassCleanupr   r   rê   r   r   r   rì     s    
zETestOutputBuffering.testBufferDoClassCleanups.<locals>.Foo.setUpClassc                 S   s   t dƒ d S )Nrô   rÏ   rê   r   r   r   rõ   ¢  s    zHTestOutputBuffering.testBufferDoClassCleanups.<locals>.Foo.tearDownClassc                 S   s   d S r   r   r%   r   r   r   rÐ   ¥  s    zCTestOutputBuffering.testBufferDoClassCleanups.<locals>.Foo.test_fooN©r   r   r   rî   rì   rõ   rÐ   r   r   r   r   r<   œ  s
   

r<   rÐ   ú1
Stdout:
tear down class
do cleanup2
do cleanup1
r{   r÷   rÓ   r   rá   r   r=   râ   r   ©r   r   r-   r$   r?   rÖ   r0   r*   r1   r2   r   rÚ   rd   rä   r×   r   r   r   ÚtestBufferDoClassCleanups—  s(    &z-TestOutputBuffering.testBufferDoClassCleanupsc           	      C   s|  t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|j	ƒd¡ dt
|ƒ› d}|j	d	 \}}|  |j|¡ |  d
|¡ |  d|¡ |  d|¡ |  d|¡ |j	d \}}|  |j|¡ |  d|¡ |  d|¡ |  d|¡ |  ||¡ |j	d \}}|  |j|¡ |  d|¡ |  d|¡ |  d|¡ |  ||¡ d S )NTc                   @   s    e Zd Zedd„ ƒZdd„ ZdS )zETestOutputBuffering.testBufferSetupClass_DoClassCleanups.<locals>.Fooc                 S   s(   t dƒ |  t¡ |  t¡ dd  d S rè   rú   rê   r   r   r   rì   ¾  s    

zPTestOutputBuffering.testBufferSetupClass_DoClassCleanups.<locals>.Foo.setUpClassc                 S   s   d S r   r   r%   r   r   r   rÐ   Ä  s    zNTestOutputBuffering.testBufferSetupClass_DoClassCleanups.<locals>.Foo.test_fooNrí   r   r   r   r   r<   ½  s   
r<   rÐ   z.
Stdout:
set up class
do cleanup2
do cleanup1
rƒ   rð   rÓ   r   rÔ   r   r   rï   r=   rá   rt   r{   râ   rý   r×   r   r   r   Ú$testBufferSetupClass_DoClassCleanups¸  s8    &	z8TestOutputBuffering.testBufferSetupClass_DoClassCleanupsc           	      C   s|  t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|j	ƒd¡ dt
|ƒ› d}|j	d	 \}}|  |j|¡ |  d
|¡ |  d|¡ |  d|¡ |  d|¡ |j	d \}}|  |j|¡ |  d|¡ |  d|¡ |  d|¡ |  ||¡ |j	d \}}|  |j|¡ |  d|¡ |  d|¡ |  d|¡ |  ||¡ d S )NTc                   @   s,   e Zd Zedd„ ƒZedd„ ƒZdd„ ZdS )zHTestOutputBuffering.testBufferTearDownClass_DoClassCleanups.<locals>.Fooc                 S   s    t dƒ |  t¡ |  t¡ d S rù   rú   rê   r   r   r   rì   å  s    
zSTestOutputBuffering.testBufferTearDownClass_DoClassCleanups.<locals>.Foo.setUpClassc                 S   s   t dƒ dd  d S ró   rÏ   rê   r   r   r   rõ   ê  s    zVTestOutputBuffering.testBufferTearDownClass_DoClassCleanups.<locals>.Foo.tearDownClassc                 S   s   d S r   r   r%   r   r   r   rÐ   î  s    zQTestOutputBuffering.testBufferTearDownClass_DoClassCleanups.<locals>.Foo.test_fooNrû   r   r   r   r   r<   ä  s
   

r<   rÐ   rü   rƒ   r÷   rÓ   r   rÔ   r   r   rö   r=   rá   rt   r{   râ   rý   r×   r   r   r   Ú'testBufferTearDownClass_DoClassCleanupsß  s8    &z;TestOutputBuffering.testBufferTearDownClass_DoClassCleanupsc           
      C   sð   t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}G dd„ dtƒ}d|_|tjd< |  	tjj
d¡ t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|jƒd¡ d	}|jd
 \}}	|  |j|¡ |  d|	¡ |  ||	¡ d S )NTc                   @   s   e Zd Zdd„ ZdS )z6TestOutputBuffering.testBufferSetUpModule.<locals>.Fooc                 S   s   d S r   r   r%   r   r   r   rÐ     s    z?TestOutputBuffering.testBufferSetUpModule.<locals>.Foo.test_fooN©r   r   r   rÐ   r   r   r   r   r<     s   r<   c                   @   s   e Zd Zedd„ ƒZdS )z9TestOutputBuffering.testBufferSetUpModule.<locals>.Modulec                   S   s   t dƒ dd  d S ©Núset up moduler=   r   rÏ   r   r   r   r   ÚsetUpModule  s    zETestOutputBuffering.testBufferSetUpModule.<locals>.Module.setUpModuleN©r   r   r   Ústaticmethodr  r   r   r   r   ÚModule  s   r  rÐ   ú
Stdout:
set up module
r=   úsetUpModule (Module)r   rÔ   ©r   r   r-   r$   r?   r   r   rM   Úmodulesrm   ÚpoprÖ   r0   r*   r1   r2   rÚ   rd   ©
r   r¸   r   r<   r  rØ   rÙ   rÚ   rV   rW   r   r   r   ÚtestBufferSetUpModule	  s$    &
z)TestOutputBuffering.testBufferSetUpModulec           
      C   sð   t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}G dd„ dtƒ}d|_|tjd< |  	tjj
d¡ t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|jƒd¡ d	}|jd
 \}}	|  |j|¡ |  d|	¡ |  ||	¡ d S )NTc                   @   s   e Zd Zdd„ ZdS )z9TestOutputBuffering.testBufferTearDownModule.<locals>.Fooc                 S   s   d S r   r   r%   r   r   r   rÐ   +  s    zBTestOutputBuffering.testBufferTearDownModule.<locals>.Foo.test_fooNr  r   r   r   r   r<   *  s   r<   c                   @   s   e Zd Zedd„ ƒZdS )z<TestOutputBuffering.testBufferTearDownModule.<locals>.Modulec                   S   s   t dƒ dd  d S ©Nztear down moduler=   r   rÏ   r   r   r   r   ÚtearDownModule.  s    zKTestOutputBuffering.testBufferTearDownModule.<locals>.Module.tearDownModuleN)r   r   r   r  r  r   r   r   r   r  -  s   r  rÐ   ú
Stdout:
tear down module
r=   útearDownModule (Module)r   rÔ   r
  r  r   r   r   ÚtestBufferTearDownModule%  s$    &
z,TestOutputBuffering.testBufferTearDownModulec           
      C   sü   t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}G dd„ dtƒ}d|_|tjd< |  	tjj
d¡ t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|jƒd¡ d	}|jd
 \}}	|  |j|¡ |  d|	¡ |  d|	¡ |  ||	¡ d S )NTc                   @   s   e Zd Zdd„ ZdS )z;TestOutputBuffering.testBufferDoModuleCleanups.<locals>.Fooc                 S   s   d S r   r   r%   r   r   r   rÐ   G  s    zDTestOutputBuffering.testBufferDoModuleCleanups.<locals>.Foo.test_fooNr  r   r   r   r   r<   F  s   r<   c                   @   s   e Zd Zedd„ ƒZdS )z>TestOutputBuffering.testBufferDoModuleCleanups.<locals>.Modulec                   S   s    t dƒ t t¡ t t¡ d S ©Nr  ©r   r   ZaddModuleCleanupr   r   r   r   r   r   r  J  s    
zJTestOutputBuffering.testBufferDoModuleCleanups.<locals>.Module.setUpModuleNr  r   r   r   r   r  I  s   r  rÐ   z!
Stdout:
do cleanup2
do cleanup1
r=   r  r   rá   r   ©r   r   r-   r$   r?   r   r   rM   r  rm   r  rÖ   r0   r*   r1   r2   rÚ   rd   rä   r  r   r   r   ÚtestBufferDoModuleCleanupsA  s&    &
z.TestOutputBuffering.testBufferDoModuleCleanupsc           
      C   s`  t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}G dd„ dtƒ}d|_|tjd< |  	tjj
d¡ t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|jƒd¡ d	}|jd
 \}}	|  |j|¡ |  d|	¡ |  d|	¡ |  d|	¡ |  d|	¡ |jd \}}	|  ||	¡ |  |j|¡ |  d|	¡ |  d|	¡ |  d|	¡ |  ||	¡ d S )NTc                   @   s   e Zd Zdd„ ZdS )zGTestOutputBuffering.testBufferSetUpModule_DoModuleCleanups.<locals>.Fooc                 S   s   d S r   r   r%   r   r   r   rÐ   e  s    zPTestOutputBuffering.testBufferSetUpModule_DoModuleCleanups.<locals>.Foo.test_fooNr  r   r   r   r   r<   d  s   r<   c                   @   s   e Zd Zedd„ ƒZdS )zJTestOutputBuffering.testBufferSetUpModule_DoModuleCleanups.<locals>.Modulec                   S   s(   t dƒ t t¡ t t¡ dd  d S r  r  r   r   r   r   r  h  s    

zVTestOutputBuffering.testBufferSetUpModule_DoModuleCleanups.<locals>.Module.setUpModuleNr  r   r   r   r   r  g  s   r  rÐ   z/
Stdout:
set up module
do cleanup2
do cleanup1
r{   r	  r   rÔ   r   r   r  r=   rá   rt   r  r  r   r   r   Ú&testBufferSetUpModule_DoModuleCleanups_  s6    &
z:TestOutputBuffering.testBufferSetUpModule_DoModuleCleanupsc           
      C   sT  t ƒ }t ¡ }W d   ƒ n1 s$0    Y  d|_G dd„ dtjƒ}G dd„ dtƒ}d|_|tjd< |  	tjj
d¡ t |dƒg¡}||ƒ d}|  | ¡ |¡ |  t|jƒd¡ d	}|jd
 \}}	|  |j|¡ |  d|	¡ |  d|	¡ |  d|	¡ |  d|	¡ |jd \}}	|  |j|¡ |  d|	¡ |  d|	¡ |  d|	¡ |  ||	¡ d S )NTc                   @   s   e Zd Zdd„ ZdS )zJTestOutputBuffering.testBufferTearDownModule_DoModuleCleanups.<locals>.Fooc                 S   s   d S r   r   r%   r   r   r   rÐ   Œ  s    zSTestOutputBuffering.testBufferTearDownModule_DoModuleCleanups.<locals>.Foo.test_fooNr  r   r   r   r   r<   ‹  s   r<   c                   @   s$   e Zd Zedd„ ƒZedd„ ƒZdS )zMTestOutputBuffering.testBufferTearDownModule_DoModuleCleanups.<locals>.Modulec                   S   s    t dƒ t t¡ t t¡ d S r  r  r   r   r   r   r    s    
zYTestOutputBuffering.testBufferTearDownModule_DoModuleCleanups.<locals>.Module.setUpModulec                   S   s   t dƒ dd  d S r  rÏ   r   r   r   r   r  ”  s    z\TestOutputBuffering.testBufferTearDownModule_DoModuleCleanups.<locals>.Module.tearDownModuleN)r   r   r   r  r  r  r   r   r   r   r  Ž  s   
r  rÐ   z2
Stdout:
tear down module
do cleanup2
do cleanup1
r{   r  r   rÔ   r   r   r  r=   rá   rt   r  r  r   r   r   Ú)testBufferTearDownModule_DoModuleCleanups†  s4    &
z=TestOutputBuffering.testBufferTearDownModule_DoModuleCleanupsN)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·   T  s*   0/&(!'*'r·   Ú__main__)NNN)r´   rM   rÉ   rC   r   Ztest.supportr   r   r   Zunittest.utilr   r   r   r   r   r   r    r?   r+   Údictr-   Ú__dict__Z	classDictÚmr   Útyper¡   r¢   r·   r   Úmainr   r   r   r   Ú<module>   s<   
   ^
4    `
