a
    
¼3j´«  ã                   @   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   úU/www/server/python_manager/versions/3.9.10/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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+d,„ Zd-d.„ Zd/d0„ Zd1S )2Ú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                 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:     s    z8Test_TestResult.test_addError_locals.<locals>.Foo.test_1Nr;   r   r   r   r   r<     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_locals  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   rd   r   r   r<   $  s   r<   r:   r=   Fr   rc   r`   )r   r?   r-   r]   rP   r/   r0   r1   r2   r3   r4   r5   rQ   ÚassertIn)r   r<   rV   rW   r   rd   r   Útest_addSubTest#  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   Ú"testGetDescriptionWithoutDocstringE  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]©ra   r   rh   r0   ri   rb   r   r   r   r   r   Ú)testGetSubTestDescriptionWithoutDocstringL  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>)rn   r   r   r   r   Ú2testGetSubTestDescriptionWithoutDocstringAndParamsZ  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   rh   ra   r0   ri   rb   r   )r   Zexpectedr   r&   r   r   r   Ú'testGetSubTestDescriptionForFalsyValuesb  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=   r_   rk   é   ©Zbazrm   Tz1testGetNestedSubTestDescriptionWithoutDocstring (z'.Test_TestResult) (baz=2, bar=3, foo=1)rn   r   r   r   r   Ú/testGetNestedSubTestDescriptionWithoutDocstringl  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=   rk   rl   rs   é   rt   Tz;testGetDuplicatedNestedSubTestDescriptionWithoutDocstring (z'.Test_TestResult) (baz=3, bar=4, foo=1)rn   r   r   r   r   Ú9testGetDuplicatedNestedSubTestDescriptionWithoutDocstringu  s    
ÿÿþzITest_TestResult.testGetDuplicatedNestedSubTestDescriptionWithoutDocstringrk   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.rg   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 )rx   NTr=   rk   rl   z/testGetSubTestDescriptionWithOneLineDocstring (zV.Test_TestResult) (foo=1, bar=2)
Tests getDescription() for a method with a docstring.rq   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.rg   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=   rk   rl   z1testGetSubTestDescriptionWithMultiLineDocstring (z].Test_TestResult) (foo=1, bar=2)
Tests getDescription() for a method with a longer docstring.rq   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>¾  ó    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ÚfailfastrY   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   ÚTextTestRunnerr]   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   rZ   r^   rf   rj   ro   rp   rr   ru   rw   r   ZskipIfrM   ÚflagsÚoptimizery   rz   r|   r}   r‚   r‰   rŽ   r   r   r   r   r+   5   sF   
	'0"
		ÿ
	ÿ

ÿ
ÿ

r+   )ZaddSkipZaddExpectedFailurerˆ   r   c                 C   s(   g | _ g | _d| _d| _d| _d| _d S r,   )r3   r2   r4   r5   r$   r[   )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’   r]   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   ÚtestUnexpectedSuccessù  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Ÿ     s    z?Test_OldTestResult.testOldTestResultClass.<locals>.Test.testFooN©r   r   r   rŸ   r   r   r   r   rš     s   rš   rŸ   r   )r   Úskipr?   r•   r    r   r   r   ÚtestOldTestResultClass  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Ÿ     s    z@Test_OldTestResult.testOldResultWithRunner.<locals>.Test.testFooNr¢   r   r   r   r   rš     s   rš   )ZresultclassrŠ   rŸ   )r   r?   r‹   r’   ÚioÚStringIOr]   )r   rš   r   r   r   r   ÚtestOldResultWithRunner  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ž     s    zTestOutputBuffering.setUpc                 C   s   | j t_| jt_d S r   )rª   rM   r©   r¬   r«   r%   r   r   r   ÚtearDown#  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   rm   ©Ú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   Ú#testBufferOutputStartTestAddSuccess6  s>    




z7TestOutputBuffering.testBufferOutputStartTestAddSuccessc                 C   s   t  ¡ }d|_| | ¡ |S r7   )r   r-   r$   r@   r   r   r   r   ÚgetStartedResultf  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   rY   T©r3   rO   Fr·   r¸   rK   r±   rm   )NNNr=   r   z9
                Stdout:
                foo
            r"   z9
                Stderr:
                bar
            zA traceback%s%s)r   r   r   r   r\   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   Ú!testBufferOutputAddErrorOrFailurel  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   re   ©	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   r\   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
rk   rÃ   rÄ   r   úValueError: bad cleanup2r   r=   úTypeError: bad cleanup1r   ©r   r   r-   r$   r?   rÇ   r0   r*   r1   r2   r   rS   re   Ú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Ñ   rs   rÃ   rÄ   r   rÅ   r   r   r=   rÒ   rc   rk   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ž     s    
zDTestOutputBuffering.testBufferTearDown_DoCleanups.<locals>.Foo.setUpc                 S   s   t dƒ dd  d S rÍ   rÀ   r%   r   r   r   r­     s    zGTestOutputBuffering.testBufferTearDown_DoCleanups.<locals>.Foo.tearDownc                 S   s   d S r   r   r%   r   r   r   rÁ     s    zGTestOutputBuffering.testBufferTearDown_DoCleanups.<locals>.Foo.test_fooN)r   r   r   rž   r­   rÁ   r   r   r   r   r<     s   r<   rÁ   z2
Stdout:
set up
tear down
do cleanup2
do cleanup1
rs   rÃ   rÄ   r   rÅ   r   r   r=   rÒ   rc   rk   rÓ   rÔ   rÈ   r   r   r   ÚtestBufferTearDown_DoCleanups
  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   Ú
setUpClass8  s    z@TestOutputBuffering.testBufferSetupClass.<locals>.Foo.setUpClassc                 S   s   d S r   r   r%   r   r   r   rÁ   <  s    z>TestOutputBuffering.testBufferSetupClass.<locals>.Foo.test_fooN©r   r   r   ÚclassmethodrÝ   rÁ   r   r   r   r   r<   7  s   
r<   rÁ   ú
Stdout:
set up class
r=   úsetUpClass (rÄ   r   rÅ   ©r   r   r-   r$   r?   rÇ   r0   r*   r1   r2   r   rË   re   rÈ   r   r   r   ÚtestBufferSetupClass2  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   ÚtearDownClassO  s    zFTestOutputBuffering.testBufferTearDownClass.<locals>.Foo.tearDownClassc                 S   s   d S r   r   r%   r   r   r   rÁ   S  s    zATestOutputBuffering.testBufferTearDownClass.<locals>.Foo.test_fooN)r   r   r   rß   ræ   rÁ   r   r   r   r   r<   N  s   
r<   rÁ   ú
Stdout:
tear down class
r=   útearDownClass (rÄ   r   rÅ   râ   rÈ   r   r   r   ÚtestBufferTearDownClassI  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Ý   f  s    
zETestOutputBuffering.testBufferDoClassCleanups.<locals>.Foo.setUpClassc                 S   s   t dƒ d S )Nrå   rÀ   rÛ   r   r   r   ræ   k  s    zHTestOutputBuffering.testBufferDoClassCleanups.<locals>.Foo.tearDownClassc                 S   s   d S r   r   r%   r   r   r   rÁ   n  s    zCTestOutputBuffering.testBufferDoClassCleanups.<locals>.Foo.test_fooN©r   r   r   rß   rÝ   ræ   rÁ   r   r   r   r   r<   e  s
   

r<   rÁ   ú1
Stdout:
tear down class
do cleanup2
do cleanup1
rk   rè   rÄ   r   rÒ   r   r=   rÓ   r   ©r   r   r-   r$   r?   rÇ   r0   r*   r1   r2   r   rË   re   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
rs   rá   rÄ   r   rÅ   r   r   rà   r=   rÒ   rc   rk   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í   rs   rè   rÄ   r   rÅ   r   r   rç   r=   rÒ   rc   rk   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   Úmodulesr\   ÚpoprÇ   r0   r*   r1   r2   rË   re   ©
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Á     s    zDTestOutputBuffering.testBufferDoModuleCleanups.<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.testBufferDoModuleCleanups.<locals>.Modulec                   S   s    t dƒ t t¡ t t¡ d S ©Nrô   ©r   r   ZaddModuleCleanupr   r   r   r   r   r   rõ     s    
zJTestOutputBuffering.testBufferDoModuleCleanups.<locals>.Module.setUpModuleNrö   r   r   r   r   rø     s   rø   rÁ   z!
Stdout:
do cleanup2
do cleanup1
r=   r  r   rÒ   r   ©r   r   r-   r$   r?   r€   r   rM   rü   r\   rý   rÇ   r0   r*   r1   r2   rË   re   rÕ   rþ   r   r   r   ÚtestBufferDoModuleCleanups
  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Á   .  s    zPTestOutputBuffering.testBufferSetUpModule_DoModuleCleanups.<locals>.Foo.test_fooNrò   r   r   r   r   r<   -  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õ   1  s    

zVTestOutputBuffering.testBufferSetUpModule_DoModuleCleanups.<locals>.Module.setUpModuleNrö   r   r   r   r   rø   0  s   rø   rÁ   z/
Stdout:
set up module
do cleanup2
do cleanup1
rk   rú   r   rÅ   r   r   rù   r=   rÒ   rc   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Á   U  s    zSTestOutputBuffering.testBufferTearDownModule_DoModuleCleanups.<locals>.Foo.test_fooNrò   r   r   r   r   r<   T  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õ   X  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ø   W  s   
rø   rÁ   z2
Stdout:
tear down module
do cleanup2
do cleanup1
rk   r  r   rÅ   r   r   r  r=   rÒ   rc   r  rþ   r   r   r   Ú)testBufferTearDownModule_DoModuleCleanupsO  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¨     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    `
