B
    18™\¨a  ã               @   sÖ   d dl Z d dlZd dlZd dlmZ d dlZd dlZG dd„ deƒZdd„ Z	G dd„ dej
ƒZeejjƒZxd	D ]
Zee= qpW 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)Úsupportc               @   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	   ú]/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/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               @   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Ú
shouldStopÚassertIsNoneÚ_stdout_bufferÚ_stderr_buffer)r   r   r	   r	   r
   Ú	test_init#   s    zTest_TestResult.test_initc             C   s"   t  ¡ }| ¡  |  |jd¡ d S )NT)r   r   Ústopr   r    )r   r   r	   r	   r
   Ú	test_stop1   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 )Nr	   )r   r	   r	   r
   Útest_1<   s    z2Test_TestResult.test_startTest.<locals>.Foo.test_1N)r   r   r   r'   r	   r	   r	   r
   ÚFoo;   s   r(   r'   r   é   F)r   ÚTestCaser   Ú	startTestr   r   r   r   r   r   r   r    ÚstopTest)r   r(   Útestr   r	   r	   r
   Útest_startTest:   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 )Nr	   )r   r	   r	   r
   r'   Q   s    z1Test_TestResult.test_stopTest.<locals>.Foo.test_1N)r   r   r   r'   r	   r	   r	   r
   r(   P   s   r(   r'   r   r)   F)r   r*   r   r+   r   r   r   r   r   r   r   r    r,   )r   r(   r-   r   r	   r	   r
   Útest_stopTestO   s    

zTest_TestResult.test_stopTestc             C   s   t  ¡ }| ¡  | ¡  d S )N)r   r   ÚstartTestRunÚstopTestRun)r   r   r	   r	   r
   Útest_startTestRun_stopTestRunj   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 )Nr	   )r   r	   r	   r
   r'   „   s    z3Test_TestResult.test_addSuccess.<locals>.Foo.test_1N)r   r   r   r'   r	   r	   r	   r
   r(   ƒ   s   r(   r'   r   r)   F)r   r*   r   r+   Ú
addSuccessr,   r   r   r   r   r   r   r   r    )r   r(   r-   r   r	   r	   r
   Útest_addSuccess‚   s    


zTest_TestResult.test_addSuccessc             C   sÞ   G dd„ dt jƒ}|dƒ}y| d¡ W n   t ¡ }Y nX 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 )Nr	   )r   r	   r	   r
   r'   «   s    z3Test_TestResult.test_addFailure.<locals>.Foo.test_1N)r   r   r   r'   r	   r	   r	   r
   r(   ª   s   r(   r'   Úfoor   r)   F)r   r*   ÚfailÚsysÚexc_infor   r+   Ú
addFailurer,   ÚassertFalser   r   r   r   r   r   r    ÚassertIsÚassertIsInstanceÚstr)r   r(   r-   Ú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ƒ}y
tƒ ‚W n   t ¡ }Y nX 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 )Nr	   )r   r	   r	   r
   r'   Û   s    z1Test_TestResult.test_addError.<locals>.Foo.test_1N)r   r   r   r'   r	   r	   r	   r
   r(   Ú   s   r(   r'   r)   r   F)r   r*   Ú	TypeErrorr7   r8   r   r+   ÚaddErrorr,   r:   r   r   r   r   r   r   r    r;   r<   r=   )r   r(   r-   r>   r   r?   r@   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_1N)r   r   r   r'   r	   r	   r	   r
   r(   õ   s   r(   r'   Tr)   r   zA tracebacklocals)r   r*   r   Ú	tb_localsr   r   r   Ú
addCleanupr   r0   Úrunr1   r   r   r   )r   r(   r-   r   r?   r@   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          	      sd   | j ddN | j‰ydd  W n tk
r<   t ¡ }Y nX ˆ  ˆˆ|¡ |  d¡ W d Q R X d S )Nr)   )r5   r   zsome recognizable failure)ÚsubTestÚ_subtestÚZeroDivisionErrorr7   r8   Ú
addSubTestr6   )r   r>   )r   Úsubtestr-   r	   r
   r'   	  s    z3Test_TestResult.test_addSubTest.<locals>.Foo.test_1N)r   r   r   r'   r	   )r   rM   r-   r	   r
   r(     s   r(   r'   r)   Fr   rK   zsome recognizable failure)r   r*   r   rG   r:   r   r   r   r   r   r   r    r;   ÚassertIn)r   r(   r?   r@   r	   )r   rM   r-   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   ÚTextTestResultr   ÚgetDescriptionr   )r   r   r	   r	   r
   Ú"testGetDescriptionWithoutDocstring)  s
    z2Test_TestResult.testGetDescriptionWithoutDocstringc          	   C   sˆ   | j ddd0 t d dd¡}|  | | j¡dt d ¡ W d Q R X |   d¡0 t d dd¡}|  | | j¡dt d ¡ W d Q R X d S )	Nr)   é   )r5   ÚbarTz+testGetSubTestDescriptionWithoutDocstring (z .Test_TestResult) (foo=1, bar=2)zsome messagez .Test_TestResult) [some message])rI   r   rP   r   rQ   rJ   r   )r   r   r	   r	   r
   Ú)testGetSubTestDescriptionWithoutDocstring0  s    

z9Test_TestResult.testGetSubTestDescriptionWithoutDocstringc          	   C   sB   |   ¡ 0 t d dd¡}|  | | j¡dt d ¡ W d Q R X d S )NTr)   z4testGetSubTestDescriptionWithoutDocstringAndParams (z.Test_TestResult) (<subtest>))rI   r   rP   r   rQ   rJ   r   )r   r   r	   r	   r
   Ú2testGetSubTestDescriptionWithoutDocstringAndParams>  s
    

zBTest_TestResult.testGetSubTestDescriptionWithoutDocstringAndParamsc          
   C   s\   d}t  d dd¡}xDdd g gD ]6}|  |¡" |  | | j¡|t|f ¡ W d Q R X qW d S )NzAtestGetSubTestDescriptionForFalsyValues (%s.Test_TestResult) [%s]Tr)   r   )r   rP   rI   r   rQ   rJ   r   )r   Úexpectedr   Úargr	   r	   r
   Ú'testGetSubTestDescriptionForFalsyValuesF  s    
z7Test_TestResult.testGetSubTestDescriptionForFalsyValuesc          
   C   s`   | j ddJ | j ddd0 t d dd¡}|  | | j¡dt d ¡ W d Q R X W d Q R X d S )	Nr)   )r5   rS   é   )ÚbazrT   Tz1testGetNestedSubTestDescriptionWithoutDocstring (z'.Test_TestResult) (baz=2, bar=3, foo=1))rI   r   rP   r   rQ   rJ   r   )r   r   r	   r	   r
   Ú/testGetNestedSubTestDescriptionWithoutDocstringP  s    
z?Test_TestResult.testGetNestedSubTestDescriptionWithoutDocstringc          
   C   sb   | j dddJ | j ddd0 t d dd¡}|  | | j¡dt d	 ¡ W d Q R X W d Q R X d S )
Nr)   rS   )r5   rT   rZ   é   )r[   rT   Tz;testGetDuplicatedNestedSubTestDescriptionWithoutDocstring (z'.Test_TestResult) (baz=3, bar=4, foo=1))rI   r   rP   r   rQ   rJ   r   )r   r   r	   r	   r
   Ú9testGetDuplicatedNestedSubTestDescriptionWithoutDocstringY  s    
zITest_TestResult.testGetDuplicatedNestedSubTestDescriptionWithoutDocstringrS   z)Docstrings are omitted with -O2 and abovec             C   s,   t  ddd¡}|  | | ¡dt d ¡ dS )z5Tests getDescription() for a method with a docstring.NTr)   z(testGetDescriptionWithOneLineDocstring (zG.Test_TestResult)
Tests getDescription() for a method with a docstring.)r   rP   r   rQ   r   )r   r   r	   r	   r
   Ú&testGetDescriptionWithOneLineDocstringb  s    z6Test_TestResult.testGetDescriptionWithOneLineDocstringc          	   C   sH   t  ddd¡}| jddd" |  | | j¡dt d ¡ W dQ R X dS )z5Tests getDescription() for a method with a docstring.NTr)   rS   )r5   rT   z/testGetSubTestDescriptionWithOneLineDocstring (zV.Test_TestResult) (foo=1, bar=2)
Tests getDescription() for a method with a docstring.)r   rP   rI   r   rQ   rJ   r   )r   r   r	   r	   r
   Ú-testGetSubTestDescriptionWithOneLineDocstringm  s
    
z=Test_TestResult.testGetSubTestDescriptionWithOneLineDocstringc             C   s,   t  ddd¡}|  | | ¡dt d ¡ dS )zoTests 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.)r   rP   r   rQ   r   )r   r   r	   r	   r
   Ú(testGetDescriptionWithMultiLineDocstringy  s    z8Test_TestResult.testGetDescriptionWithMultiLineDocstringc          	   C   sH   t  ddd¡}| jddd" |  | | j¡dt d ¡ W dQ R X dS )zoTests getDescription() for a method with a longer docstring.
        The second line of the docstring.
        NTr)   rS   )r5   rT   z1testGetSubTestDescriptionWithMultiLineDocstring (z].Test_TestResult) (foo=1, bar=2)
Tests getDescription() for a method with a longer docstring.)r   rP   rI   r   rQ   rJ   r   )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   rd   N)r   r   r   Úobjectrd   r	   r	   r	   r
   ÚFrame—  s   rf   TÚ
__unittest)re   r   r   r:   Ú_is_relevant_tb_levelrd   rc   r   )r   rf   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 )NÚ r	   )Ú_r	   r	   r
   Ú<lambda>¢  ó    z.Test_TestResult.testFailFast.<locals>.<lambda>Tc              W   s   dS )Nrj   r	   )rk   r	   r	   r
   rl   ¨  rm   c              W   s   dS )Nrj   r	   )rk   r	   r	   r
   rl   ®  rm   )	r   r   Ú_exc_info_to_stringÚfailfastrC   r   r    r9   ÚaddUnexpectedSuccess)r   r   r	   r	   r
   ÚtestFailFast   s    



zTest_TestResult.testFailFastc                s,   t jt ¡ dd}‡ fdd„}| |¡}d S )NT)Ústreamro   c                s   ˆ   | j¡ d S )N)r   ro   )r   )r   r	   r
   r-   µ  s    z5Test_TestResult.testFailFastSetByRunner.<locals>.test)r   ÚTextTestRunnerÚioÚStringIOrG   )r   Úrunnerr-   r   r	   )r   r
   ÚtestFailFastSetByRunner³  s    z'Test_TestResult.testFailFastSetByRunnerN)r   r   r   r$   r&   r.   r/   r2   r4   rA   rD   rH   rO   rR   rU   rV   rY   r\   r^   r   ÚskipIfr7   ÚflagsÚoptimizer_   r`   ra   rb   ri   rq   rw   r	   r	   r	   r
   r      s6   
	'0"
		

r   )ÚaddSkipÚaddExpectedFailurerp   r   c             C   s(   g | _ g | _d| _d| _d| _d| _d S )Nr   F)r   r   r   r    ÚbufferrE   )r   rr   Ú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   s@   t  dtf¡( tƒ }| |¡ |  t|jƒ|¡ W d Q R X d S )NzTestResult has no add.+ method,)r   Úcheck_warningsÚRuntimeWarningr€   rG   r   r   r   )r   r-   r   r   r	   r	   r
   ÚassertOldResultWarningÌ  s
    

z)Test_OldTestResult.assertOldResultWarningc             C   sB   G dd„ dt jƒ}x*dD ]"\}}||ƒ}|  |t| ƒ¡ qW 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 )NÚfoobar)ÚskipTest)r   r	   r	   r
   ÚtestSkipÕ  s    z;Test_OldTestResult.testOldTestResult.<locals>.Test.testSkipc             S   s   t ‚d S )N)rB   )r   r	   r	   r
   ÚtestExpectedFail×  s    zCTest_OldTestResult.testOldTestResult.<locals>.Test.testExpectedFailc             S   s   d S )Nr	   )r   r	   r	   r
   ÚtestUnexpectedSuccessÚ  s    zHTest_OldTestResult.testOldTestResult.<locals>.Test.testUnexpectedSuccessN)r   r   r   r‡   r   ÚexpectedFailurerˆ   r‰   r	   r	   r	   r
   ÚTestÔ  s   r‹   ))r‡   T)rˆ   T)r‰   F)r   r*   r„   Úint)r   r‹   Ú	test_nameZshould_passr-   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 )Nz	no reason)r†   )r   r	   r	   r
   ÚsetUpæ  s    z=Test_OldTestResult.testOldTestTesultSetup.<locals>.Test.setUpc             S   s   d S )Nr	   )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 )Nz	no reasonc               @   s   e Zd Zdd„ ZdS )z7Test_OldTestResult.testOldTestResultClass.<locals>.Testc             S   s   d S )Nr	   )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	   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 )Nr	   )r   r	   r	   r
   r   õ  s    z@Test_OldTestResult.testOldResultWithRunner.<locals>.Test.testFooN)r   r   r   r   r	   r	   r	   r
   r‹   ô  s   r‹   )Úresultclassrr   r   )r   r*   rs   r€   rt   ru   rG   )r   r‹   rv   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S )ÚTestOutputBufferingc             C   s   t j| _t j| _d S )N)r7   ÚstdoutÚ	_real_outÚstderrÚ	_real_err)r   r	   r	   r
   r      s    zTestOutputBuffering.setUpc             C   s   | j t_| jt_d S )N)r˜   r7   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 )N)r˜   rš   r   r   r:   r}   r;   r7   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 )NTr5   rT   )Úfilezfoo
zbar
rj   )r˜   rš   r   r   r:   r}   r;   r7   r—   r™   r+   ÚassertIsNotr<   rt   ru   Ú_original_stdoutÚ_original_stderrÚprintr   Úgetvaluer3   r,   )r   rœ   r   r   Z
out_streamZ
err_streamr	   r	   r
   Ú#testBufferOutputStartTestAddSuccess  s>    




z7TestOutputBuffering.testBufferOutputStartTestAddSuccessc             C   s   t  ¡ }d|_| | ¡ |S )NT)r   r   r}   r+   )r   r   r	   r	   r
   ÚgetStartedResultG  s    
z$TestOutputBuffering.getStartedResultc             C   s  t tj_|  t¡ xdD ]ú\}}}|  ¡ }tj}tj	}t
 ¡ |_t
 ¡ |_tdtjd |rltdtj	d t||ƒ}|| dƒ | | ¡ t||ƒ}|  t|ƒd¡ |d \}	}
t d¡}d	}|rÌt d
¡}d||f }|  |	| ¡ |  |j ¡ |¡ |  |j ¡ |¡ |  |
|¡ qW d S )N))r   rC   T)r   r9   F)r   rC   T)r   r9   Fr5   )rŸ   rT   )NNNr)   r   z9
                Stdout:
                foo
            rj   z9
                Stderr:
                bar
            zA traceback%s%s)r   r   r   r   rF   r   r¦   r7   r—   r™   rt   ru   r¡   r¢   r£   Úgetattrr,   r   r   ÚtextwrapÚdedentr;   r¤   ÚassertMultiLineEqual)r   Zmessage_attrZadd_attrZinclude_errorr   Zbuffered_outZbuffered_errZaddFunctionZresult_listr-   ÚmessageZexpectedOutMessageZexpectedErrMessageZexpectedFullMessager	   r	   r
   Ú!testBufferOutputAddErrorOrFailureM  s8    






z5TestOutputBuffering.testBufferOutputAddErrorOrFailurec             C   sN   t  ¡ }d|_G dd„ dt jƒ}t  |dƒg¡}||ƒ |  t|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   dd  d S )Nr)   r   r	   )Úclsr	   r	   r
   Ú
setUpClass  s    z@TestOutputBuffering.testBufferSetupClass.<locals>.Foo.setUpClassc             S   s   d S )Nr	   )r   r	   r	   r
   Útest_foo„  s    z>TestOutputBuffering.testBufferSetupClass.<locals>.Foo.test_fooN)r   r   r   Úclassmethodr®   r¯   r	   r	   r	   r
   r(   €  s   r(   r¯   r)   )r   r   r}   r*   Ú	TestSuiter   r   r   )r   r   r(   Úsuiter	   r	   r
   ÚtestBufferSetupClass|  s    z(TestOutputBuffering.testBufferSetupClassc             C   sN   t  ¡ }d|_G dd„ dt jƒ}t  |dƒg¡}||ƒ |  t|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   dd  d S )Nr)   r   r	   )r­   r	   r	   r
   ÚtearDownClass  s    zFTestOutputBuffering.testBufferTearDownClass.<locals>.Foo.tearDownClassc             S   s   d S )Nr	   )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¯   r)   )r   r   r}   r*   r±   r   r   r   )r   r   r(   r²   r	   r	   r
   ÚtestBufferTearDownClassŠ  s    z+TestOutputBuffering.testBufferTearDownClassc             C   s~   t  ¡ }d|_G dd„ dt jƒ}G dd„ dtƒ}d|_|tjd< |  tjj	d¡ t  
|dƒg¡}||ƒ |  t|jƒd¡ d S )NTc               @   s   e Zd Zdd„ ZdS )z6TestOutputBuffering.testBufferSetUpModule.<locals>.Fooc             S   s   d S )Nr	   )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   dd  d S )Nr)   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¯   r)   )r   r   r}   r*   re   r   r7   ÚmodulesrF   Úpopr±   r   r   r   )r   r   r(   r¸   r²   r	   r	   r
   ÚtestBufferSetUpModule˜  s    
z)TestOutputBuffering.testBufferSetUpModulec             C   s~   t  ¡ }d|_G dd„ dt jƒ}G dd„ dtƒ}d|_|tjd< |  tjj	d¡ t  
|dƒg¡}||ƒ |  t|jƒd¡ d S )NTc               @   s   e Zd Zdd„ ZdS )z9TestOutputBuffering.testBufferTearDownModule.<locals>.Fooc             S   s   d S )Nr	   )r   r	   r	   r
   r¯   °  s    zBTestOutputBuffering.testBufferTearDownModule.<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 )z<TestOutputBuffering.testBufferTearDownModule.<locals>.Modulec               S   s   dd  d S )Nr)   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¯   r)   )r   r   r}   r*   re   r   r7   r¹   rF   rº   r±   r   r   r   )r   r   r(   r¸   r²   r	   r	   r
   ÚtestBufferTearDownModule«  s    
z,TestOutputBuffering.testBufferTearDownModuleN)r   r   r   r   r›   rž   r¥   r¦   r¬   r³   rµ   r»   r½   r	   r	   r	   r
   r–   þ  s   0/r–   Ú__main__)NNN)rt   r7   r¨   r-   r   r   r   re   r   r   r*   r   Údictr   Ú__dict__Z	classDictÚmr   Útyper€   r   r–   r   Úmainr	   r	   r	   r
   Ú<module>   s,   
   $


4 B