a
    zew@                     @   sF   d dl Z d dlZd dlZdd ZG dd dejZedkrBe  dS )    Nc                  G   s   t  S N)unittestZ
TestResult)_ r   //usr/lib/python3.9/unittest/test/test_setups.pyresultFactory   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'S )(
TestSetupsc                 C   s   t jtt dS )N)Zresultclassstream)r   ZTextTestRunnerr   ioStringIOselfr   r   r   	getRunner   s    zTestSetups.getRunnerc                 G   sh   t  }|D ]}t j|}|| q|  }t  }|| |t   |t   ||S r   )r   	TestSuitedefaultTestLoaderloadTestsFromTestCaseZaddTestsr   ZaddTestrun)r   ZcasessuiteZcaseZtestsrunnerZ	realSuiter   r   r   runTests   s    
zTestSetups.runTestsc                    sR   G  fdddt j |  }|  jd | |jd | t|jd d S )Nc                       s0   e Zd ZdZe fddZdd Zdd ZdS )	z)TestSetups.test_setup_class.<locals>.Testr   c                    s     j d7  _ tj  d S N   )setUpCalledr   TestCase
setUpClassclsTestr   r   r   #   s    z4TestSetups.test_setup_class.<locals>.Test.setUpClassc                 S   s   d S r   r   r   r   r   r   test_one'   s    z2TestSetups.test_setup_class.<locals>.Test.test_onec                 S   s   d S r   r   r   r   r   r   test_two)   s    z2TestSetups.test_setup_class.<locals>.Test.test_twoN)__name__
__module____qualname__r   classmethodr   r   r    r   r   r   r   r   !   s
   r   r      r   )r   r   r   assertEqualr   testsRunlenerrorsr   resultr   r   r   test_setup_class    s
    
zTestSetups.test_setup_classc                    sR   G  fdddt j |  }|  jd | |jd | t|jd d S )Nc                       s0   e Zd ZdZe fddZdd Zdd ZdS )	z,TestSetups.test_teardown_class.<locals>.Testr   c                    s     j d7  _ tj  d S r   tearDownCalledr   r   tearDownClassr   r   r   r   r/   5   s    z:TestSetups.test_teardown_class.<locals>.Test.tearDownClassc                 S   s   d S r   r   r   r   r   r   r   9   s    z5TestSetups.test_teardown_class.<locals>.Test.test_onec                 S   s   d S r   r   r   r   r   r   r    ;   s    z5TestSetups.test_teardown_class.<locals>.Test.test_twoNr!   r"   r#   r.   r$   r/   r   r    r   r   r   r   r   3   s
   r   r   r%   r   r   r   r   r&   r.   r'   r(   r)   r*   r   r   r   test_teardown_class2   s
    
zTestSetups.test_teardown_classc                    sx   G  fdddt j G fdddt j|  }|  jd | jd | |jd | t|jd d S )Nc                       s0   e Zd ZdZe fddZdd Zdd ZdS )	z8TestSetups.test_teardown_class_two_classes.<locals>.Testr   c                    s     j d7  _ tj  d S r   r-   r   r   r   r   r/   G   s    zFTestSetups.test_teardown_class_two_classes.<locals>.Test.tearDownClassc                 S   s   d S r   r   r   r   r   r   r   K   s    zATestSetups.test_teardown_class_two_classes.<locals>.Test.test_onec                 S   s   d S r   r   r   r   r   r   r    M   s    zATestSetups.test_teardown_class_two_classes.<locals>.Test.test_twoNr0   r   r   r   r   r   E   s
   r   c                       s0   e Zd ZdZe fddZdd Zdd ZdS )	z9TestSetups.test_teardown_class_two_classes.<locals>.Test2r   c                    s     j d7  _ tj  d S r   r-   r   Test2r   r   r/   R   s    zGTestSetups.test_teardown_class_two_classes.<locals>.Test2.tearDownClassc                 S   s   d S r   r   r   r   r   r   r   V   s    zBTestSetups.test_teardown_class_two_classes.<locals>.Test2.test_onec                 S   s   d S r   r   r   r   r   r   r    X   s    zBTestSetups.test_teardown_class_two_classes.<locals>.Test2.test_twoNr0   r   r3   r   r   r4   P   s
   r4   r      r   r1   r*   r   r   r4   r   test_teardown_class_two_classesD   s    z*TestSetups.test_teardown_class_two_classesc                 C   sh   G dd dt j}| |}| |jd | t|jd |jd \}}| t|dt|j	f  d S )Nc                   @   s(   e Zd Zedd Zdd Zdd ZdS )z7TestSetups.test_error_in_setupclass.<locals>.BrokenTestc                 S   s   t dd S Nfoo	TypeErrorr   r   r   r   r   d   s    zBTestSetups.test_error_in_setupclass.<locals>.BrokenTest.setUpClassc                 S   s   d S r   r   r   r   r   r   r   g   s    z@TestSetups.test_error_in_setupclass.<locals>.BrokenTest.test_onec                 S   s   d S r   r   r   r   r   r   r    i   s    z@TestSetups.test_error_in_setupclass.<locals>.BrokenTest.test_twoNr!   r"   r#   r$   r   r   r    r   r   r   r   
BrokenTestc   s   
r=   r   r   setUpClass (%s.%s))
r   r   r   r&   r'   r(   r)   strr!   r#   )r   r=   r+   errorr   r   r   r   test_error_in_setupclassb   s    	

z#TestSetups.test_error_in_setupclassc                    s   G  fdddt j G fdddt j|  }| |jd | t|jd |  jd | jd |jd \}}| t|d	t	 j
f  d S )
Nc                       s0   e Zd ZdZe fddZdd Zdd ZdS )	z5TestSetups.test_error_in_teardown_class.<locals>.Testr   c                    s     j d7  _ tdd S Nr   r9   tornDownr;   r   r   r   r   r/   w   s    zCTestSetups.test_error_in_teardown_class.<locals>.Test.tearDownClassc                 S   s   d S r   r   r   r   r   r   r   {   s    z>TestSetups.test_error_in_teardown_class.<locals>.Test.test_onec                 S   s   d S r   r   r   r   r   r   r    }   s    z>TestSetups.test_error_in_teardown_class.<locals>.Test.test_twoNr!   r"   r#   rD   r$   r/   r   r    r   r   r   r   r   u   s
   r   c                       s0   e Zd ZdZe fddZdd Zdd ZdS )	z6TestSetups.test_error_in_teardown_class.<locals>.Test2r   c                    s     j d7  _ tdd S rB   rC   r   r3   r   r   r/      s    zDTestSetups.test_error_in_teardown_class.<locals>.Test2.tearDownClassc                 S   s   d S r   r   r   r   r   r   r      s    z?TestSetups.test_error_in_teardown_class.<locals>.Test2.test_onec                 S   s   d S r   r   r   r   r   r   r       s    z?TestSetups.test_error_in_teardown_class.<locals>.Test2.test_twoNrE   r   r3   r   r   r4      s
   r4   r5   r%   r   r   ztearDownClass (%s.%s))r   r   r   r&   r'   r(   r)   rD   r?   r!   r#   )r   r+   r@   r   r   r6   r   test_error_in_teardown_classt   s    
z'TestSetups.test_error_in_teardown_classc                    s0   G  fdddt j |   |  j d S )Nc                       s4   e Zd ZdZedd Ze fddZdd ZdS )	zATestSetups.test_class_not_torndown_when_setup_fails.<locals>.TestFc                 S   s   t d S r   r:   r   r   r   r   r      s    zLTestSetups.test_class_not_torndown_when_setup_fails.<locals>.Test.setUpClassc                    s   d _ tdd S )NTr9   rC   r   r   r   r   r/      s    zOTestSetups.test_class_not_torndown_when_setup_fails.<locals>.Test.tearDownClassc                 S   s   d S r   r   r   r   r   r   r      s    zJTestSetups.test_class_not_torndown_when_setup_fails.<locals>.Test.test_oneN)r!   r"   r#   rD   r$   r   r/   r   r   r   r   r   r      s   
r   )r   r   r   assertFalserD   r   r   r   r   (test_class_not_torndown_when_setup_fails   s    
z3TestSetups.test_class_not_torndown_when_setup_failsc                    sJ   G  fdddt j t d  |   |  j |  j d S )Nc                       s<   e Zd ZdZdZe fddZe fddZdd ZdS )	zFTestSetups.test_class_not_setup_or_torndown_when_skipped.<locals>.TestFc                    s
   d _ d S NT
classSetUpr   r   r   r   r      s    zQTestSetups.test_class_not_setup_or_torndown_when_skipped.<locals>.Test.setUpClassc                    s
   d _ d S rI   )rD   r   r   r   r   r/      s    zTTestSetups.test_class_not_setup_or_torndown_when_skipped.<locals>.Test.tearDownClassc                 S   s   d S r   r   r   r   r   r   r      s    zOTestSetups.test_class_not_setup_or_torndown_when_skipped.<locals>.Test.test_oneN)	r!   r"   r#   rK   rD   r$   r   r/   r   r   r   r   r   r      s   r   Zhop)r   r   skipr   rG   rK   rD   r   r   r   r   -test_class_not_setup_or_torndown_when_skipped   s
    
z8TestSetups.test_class_not_setup_or_torndown_when_skippedc                    sP  g  G  fdddt }G  fdddt }G  fdddtj}G  fdddtj}G  fd	d
d
tj}d |_|_d|_|tjd< |tjd< t|df}t|df}t|df}t|df}	t|df}
t|df}t||||	|
|f}|  }||}| 	|j
d | 	t|jd | 	 g d d S )Nc                       s,   e Zd Ze fddZe fddZdS )zMTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Module1c                      s     d d S )NModule1.setUpModuleappendr   resultsr   r   setUpModule   s    zYTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Module1.setUpModulec                      s     d d S )NModule1.tearDownModulerO   r   rQ   r   r   tearDownModule   s    z\TestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Module1.tearDownModuleNr!   r"   r#   staticmethodrS   rU   r   rQ   r   r   Module1   s   rX   c                       s,   e Zd Ze fddZe fddZdS )zMTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Module2c                      s     d d S )NModule2.setUpModulerO   r   rQ   r   r   rS      s    zYTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Module2.setUpModulec                      s     d d S )NModule2.tearDownModulerO   r   rQ   r   r   rU      s    z\TestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Module2.tearDownModuleNrV   r   rQ   r   r   Module2   s   r[   c                       sD   e Zd Ze fddZe fddZ fddZ fddZd	S )
zKTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test1c                    s     d d S )Nsetup 1rO   r   rQ   r   r   r      s    zVTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test1.setUpClassc                    s     d d S )N
teardown 1rO   r   rQ   r   r   r/      s    zYTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test1.tearDownClassc                    s     d d S )NTest1.testOnerO   r   rQ   r   r   testOne   s    zSTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test1.testOnec                    s     d d S )NTest1.testTworO   r   rQ   r   r   testTwo   s    zSTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test1.testTwoNr!   r"   r#   r$   r   r/   r_   ra   r   rQ   r   r   Test1   s   rc   c                       sD   e Zd Ze fddZe fddZ fddZ fddZd	S )
zKTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test2c                    s     d d S )Nsetup 2rO   r   rQ   r   r   r      s    zVTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test2.setUpClassc                    s     d d S )N
teardown 2rO   r   rQ   r   r   r/      s    zYTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test2.tearDownClassc                    s     d d S )NTest2.testOnerO   r   rQ   r   r   r_      s    zSTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test2.testOnec                    s     d d S )NTest2.testTworO   r   rQ   r   r   ra      s    zSTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test2.testTwoNrb   r   rQ   r   r   r4      s   r4   c                       sD   e Zd Ze fddZe fddZ fddZ fddZd	S )
zKTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test3c                    s     d d S )Nsetup 3rO   r   rQ   r   r   r      s    zVTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test3.setUpClassc                    s     d d S )N
teardown 3rO   r   rQ   r   r   r/      s    zYTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test3.tearDownClassc                    s     d d S )NTest3.testOnerO   r   rQ   r   r   r_      s    zSTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test3.testOnec                    s     d d S )NTest3.testTworO   r   rQ   r   r   ra      s    zSTestSetups.test_setup_teardown_order_with_pathological_suite.<locals>.Test3.testTwoNrb   r   rQ   r   r   Test3   s   rl   Moduler_   ra      r   )rN   r\   r^   r`   r]   rd   rf   rg   re   rT   rY   rh   rj   rk   ri   rZ   )objectr   r   r"   sysmodulesr   r   r   r&   r'   r(   r)   )r   rX   r[   rc   r4   rl   firstsecondthirdZfourthZfifthZsixthr   r   r+   r   rQ   r   1test_setup_teardown_order_with_pathological_suite   s0    


z<TestSetups.test_setup_teardown_order_with_pathological_suitec                    sr   G  fdddt  G dd dtj}d|_ tjd< | |}|  jd | |j	d | t
|jd d S )Nc                       s    e Zd ZdZe fddZdS )z,TestSetups.test_setup_module.<locals>.Moduler   c                      s     j d7  _ d S r   )moduleSetupr   rm   r   r   rS     s    z8TestSetups.test_setup_module.<locals>.Module.setUpModuleN)r!   r"   r#   rv   rW   rS   r   rw   r   r   rm   
  s   rm   c                   @   s   e Zd Zdd Zdd ZdS )z*TestSetups.test_setup_module.<locals>.Testc                 S   s   d S r   r   r   r   r   r   r     s    z3TestSetups.test_setup_module.<locals>.Test.test_onec                 S   s   d S r   r   r   r   r   r   r      s    z3TestSetups.test_setup_module.<locals>.Test.test_twoNr!   r"   r#   r   r    r   r   r   r   r     s   r   r   r%   r   )ro   r   r   r"   rp   rq   r   r&   rv   r'   r(   r)   r   r   r+   r   rw   r   test_setup_module	  s    

zTestSetups.test_setup_modulec                    s   G  fdddt  G fdddtjG dd dtj}d_d|_ tjd< | |}|  jd |  j	d | |j
d | j | j | t|jd |jd \}}| t|d	 d S )
Nc                       s4   e Zd ZdZdZe fddZe fddZdS )z5TestSetups.test_error_in_setup_module.<locals>.Moduler   c                      s     j d7  _ tdd S rB   )rv   r;   r   rw   r   r   rS   !  s    zATestSetups.test_error_in_setup_module.<locals>.Module.setUpModulec                      s     j d7  _ d S r   moduleTornDownr   rw   r   r   rU   %  s    zDTestSetups.test_error_in_setup_module.<locals>.Module.tearDownModuleN)r!   r"   r#   rv   r|   rW   rS   rU   r   rw   r   r   rm     s   rm   c                       sD   e Zd ZdZdZe fddZe fddZdd Zdd	 Z	d
S )z3TestSetups.test_error_in_setup_module.<locals>.TestFc                    s
   d _ d S rI   rJ   r   r   r   r   r   ,  s    z>TestSetups.test_error_in_setup_module.<locals>.Test.setUpClassc                    s
   d _ d S rI   classTornDownr   r   r   r   r/   /  s    zATestSetups.test_error_in_setup_module.<locals>.Test.tearDownClassc                 S   s   d S r   r   r   r   r   r   r   2  s    z<TestSetups.test_error_in_setup_module.<locals>.Test.test_onec                 S   s   d S r   r   r   r   r   r   r    4  s    z<TestSetups.test_error_in_setup_module.<locals>.Test.test_twoN
r!   r"   r#   rK   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S )z4TestSetups.test_error_in_setup_module.<locals>.Test2c                 S   s   d S r   r   r   r   r   r   r   8  s    z=TestSetups.test_error_in_setup_module.<locals>.Test2.test_onec                 S   s   d S r   r   r   r   r   r   r    :  s    z=TestSetups.test_error_in_setup_module.<locals>.Test2.test_twoNrx   r   r   r   r   r4   7  s   r4   r   r   setUpModule (Module))ro   r   r   r"   rp   rq   r   r&   rv   r|   r'   rG   rK   r~   r(   r)   r?   r   r4   r+   r@   r   r   rm   r   r   test_error_in_setup_module  s    
z%TestSetups.test_error_in_setup_modulec                 C   sB   G dd dt j}d|_tjdd  | |}| |jd d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z:TestSetups.test_testcase_with_missing_module.<locals>.Testc                 S   s   d S r   r   r   r   r   r   r   L  s    zCTestSetups.test_testcase_with_missing_module.<locals>.Test.test_onec                 S   s   d S r   r   r   r   r   r   r    N  s    zCTestSetups.test_testcase_with_missing_module.<locals>.Test.test_twoNrx   r   r   r   r   r   K  s   r   rm   r%   )	r   r   r"   rp   rq   popr   r&   r'   ry   r   r   r   !test_testcase_with_missing_moduleJ  s
    
z,TestSetups.test_testcase_with_missing_modulec                    sr   G  fdddt  G dd dtj}d|_ tjd< | |}|  jd | |j	d | t
|jd d S )Nc                       s    e Zd ZdZe fddZdS )z/TestSetups.test_teardown_module.<locals>.Moduler   c                      s     j d7  _ d S r   r{   r   rw   r   r   rU   Y  s    z>TestSetups.test_teardown_module.<locals>.Module.tearDownModuleNr!   r"   r#   r|   rW   rU   r   rw   r   r   rm   W  s   rm   c                   @   s   e Zd Zdd Zdd ZdS )z-TestSetups.test_teardown_module.<locals>.Testc                 S   s   d S r   r   r   r   r   r   r   ^  s    z6TestSetups.test_teardown_module.<locals>.Test.test_onec                 S   s   d S r   r   r   r   r   r   r    `  s    z6TestSetups.test_teardown_module.<locals>.Test.test_twoNrx   r   r   r   r   r   ]  s   r   r   r%   r   )ro   r   r   r"   rp   rq   r   r&   r|   r'   r(   r)   ry   r   rw   r   test_teardown_moduleV  s    

zTestSetups.test_teardown_modulec                    s   G  fdddt  G fdddtjG dd dtj}d_d|_ tjd< | |}|  jd | |j	d | 
j | 
j | t|jd |jd	 \}}| t|d
 d S )Nc                       s    e Zd ZdZe fddZdS )z8TestSetups.test_error_in_teardown_module.<locals>.Moduler   c                      s     j d7  _ tdd S rB   )r|   r;   r   rw   r   r   rU   m  s    zGTestSetups.test_error_in_teardown_module.<locals>.Module.tearDownModuleNr   r   rw   r   r   rm   k  s   rm   c                       sD   e Zd ZdZdZe fddZe fddZdd Zdd	 Z	d
S )z6TestSetups.test_error_in_teardown_module.<locals>.TestFc                    s
   d _ d S rI   rJ   r   r   r   r   r   u  s    zATestSetups.test_error_in_teardown_module.<locals>.Test.setUpClassc                    s
   d _ d S rI   r}   r   r   r   r   r/   x  s    zDTestSetups.test_error_in_teardown_module.<locals>.Test.tearDownClassc                 S   s   d S r   r   r   r   r   r   r   {  s    z?TestSetups.test_error_in_teardown_module.<locals>.Test.test_onec                 S   s   d S r   r   r   r   r   r   r    }  s    z?TestSetups.test_error_in_teardown_module.<locals>.Test.test_twoNr   r   r   r   r   r   r  s   r   c                   @   s   e Zd Zdd Zdd ZdS )z7TestSetups.test_error_in_teardown_module.<locals>.Test2c                 S   s   d S r   r   r   r   r   r   r     s    z@TestSetups.test_error_in_teardown_module.<locals>.Test2.test_onec                 S   s   d S r   r   r   r   r   r   r      s    z@TestSetups.test_error_in_teardown_module.<locals>.Test2.test_twoNrx   r   r   r   r   r4     s   r4   r   r5   r   ztearDownModule (Module))ro   r   r   r"   rp   rq   r   r&   r|   r'   Z
assertTruerK   r~   r(   r)   r?   r   r   r   r   test_error_in_teardown_modulej  s    
z(TestSetups.test_error_in_teardown_modulec                 C   sz   G dd dt j}| |}| |jd | t|jd | t|jd |jd d }| t|dt	|j
f  d S )Nc                   @   s(   e Zd Zedd Zdd Zdd ZdS )z4TestSetups.test_skiptest_in_setupclass.<locals>.Testc                 S   s   t dd S r8   r   ZSkipTestr   r   r   r   r     s    z?TestSetups.test_skiptest_in_setupclass.<locals>.Test.setUpClassc                 S   s   d S r   r   r   r   r   r   r     s    z=TestSetups.test_skiptest_in_setupclass.<locals>.Test.test_onec                 S   s   d S r   r   r   r   r   r   r      s    z=TestSetups.test_skiptest_in_setupclass.<locals>.Test.test_twoNr<   r   r   r   r   r     s   
r   r   r   r>   )r   r   r   r&   r'   r(   r)   skippedr?   r!   r#   )r   r   r+   r   r   r   r   test_skiptest_in_setupclass  s    	

z&TestSetups.test_skiptest_in_setupclassc                 C   s   G dd dt j}G dd dt}d|_|tjd< | |}| |jd | t	|j
d | t	|jd |jd d }| t|d d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z5TestSetups.test_skiptest_in_setupmodule.<locals>.Testc                 S   s   d S r   r   r   r   r   r   r     s    z>TestSetups.test_skiptest_in_setupmodule.<locals>.Test.test_onec                 S   s   d S r   r   r   r   r   r   r      s    z>TestSetups.test_skiptest_in_setupmodule.<locals>.Test.test_twoNrx   r   r   r   r   r     s   r   c                   @   s   e Zd Zedd ZdS )z7TestSetups.test_skiptest_in_setupmodule.<locals>.Modulec                   S   s   t dd S r8   r   r   r   r   r   rS     s    zCTestSetups.test_skiptest_in_setupmodule.<locals>.Module.setUpModuleN)r!   r"   r#   rW   rS   r   r   r   r   rm     s   rm   r   r   r   )r   r   ro   r"   rp   rq   r   r&   r'   r(   r)   r   r?   )r   r   rm   r+   r   r   r   r   test_skiptest_in_setupmodule  s    

z'TestSetups.test_skiptest_in_setupmodulec                    sj   g  G  fdddt }G  fdddtj}d|_|tjd< tj|}|  g d}| 	 | d S )Nc                       s,   e Zd Ze fddZe fddZdS )zITestSetups.test_suite_debug_executes_setups_and_teardowns.<locals>.Modulec                      s     d d S )NrS   rO   r   Zorderingr   r   rS     s    zUTestSetups.test_suite_debug_executes_setups_and_teardowns.<locals>.Module.setUpModulec                      s     d d S )NrU   rO   r   r   r   r   rU     s    zXTestSetups.test_suite_debug_executes_setups_and_teardowns.<locals>.Module.tearDownModuleNrV   r   r   r   r   rm     s   rm   c                       s8   e Zd Ze fddZe fddZ fddZdS )zGTestSetups.test_suite_debug_executes_setups_and_teardowns.<locals>.Testc                    s     d d S )Nr   rO   r   r   r   r   r     s    zRTestSetups.test_suite_debug_executes_setups_and_teardowns.<locals>.Test.setUpClassc                    s     d d S )Nr/   rO   r   r   r   r   r/     s    zUTestSetups.test_suite_debug_executes_setups_and_teardowns.<locals>.Test.tearDownClassc                    s     d d S )Ntest_somethingrO   r   r   r   r   r     s    zVTestSetups.test_suite_debug_executes_setups_and_teardowns.<locals>.Test.test_somethingNr!   r"   r#   r$   r   r/   r   r   r   r   r   r     s
   r   )rS   r   r   r/   rU   )
ro   r   r   r"   rp   rq   r   r   debugr&   )r   rm   r   r   ZexpectedOrderr   r   r   .test_suite_debug_executes_setups_and_teardowns  s    

z9TestSetups.test_suite_debug_executes_setups_and_teardownsc              	      s   G  fdddt }G  fdddtj}d|_|tjd< d}t|D ]T\ }tj|}t	|g}| 
t| |  W d    qF1 s0    Y  qFd S )Nc                       s,   e Zd Ze fddZe fddZdS )zATestSetups.test_suite_debug_propagates_exceptions.<locals>.Modulec                      s    dkrt dd S )Nr   rS   	Exceptionr   Zphaser   r   rS     s    zMTestSetups.test_suite_debug_propagates_exceptions.<locals>.Module.setUpModulec                      s    dkrt dd S )Nr   rU   r   r   r   r   r   rU     s    zPTestSetups.test_suite_debug_propagates_exceptions.<locals>.Module.tearDownModuleNrV   r   r   r   r   rm     s   rm   c                       s8   e Zd Ze fddZe fddZ fddZdS )z?TestSetups.test_suite_debug_propagates_exceptions.<locals>.Testc                    s    dkrt dd S )Nr%   r   r   r   r   r   r   r     s    zJTestSetups.test_suite_debug_propagates_exceptions.<locals>.Test.setUpClassc                    s    dkrt dd S )N   r/   r   r   r   r   r   r/     s    zMTestSetups.test_suite_debug_propagates_exceptions.<locals>.Test.tearDownClassc                    s    dkrt dd S )Nr5   r   r   r   r   r   r   r     s    zNTestSetups.test_suite_debug_propagates_exceptions.<locals>.Test.test_somethingNr   r   r   r   r   r     s
   r   )rS   rU   r   r/   r   )ro   r   r   r"   rp   rq   	enumerater   r   r   ZassertRaisesRegexr   r   )r   rm   r   messagesmsgZ_suiter   r   r   r   &test_suite_debug_propagates_exceptions  s    

z1TestSetups.test_suite_debug_propagates_exceptionsN)r!   r"   r#   r   r   r,   r2   r7   rA   rF   rH   rM   ru   rz   r   r   r   r   r   r   r   r   r   r   r   r   r      s&   !R-(r   __main__)r
   rp   r   r   r   r   r!   mainr   r   r   r   <module>   s      r