o
    KXhpN                     @   s>   d dl Z d dlmZ G dd de jZedkre   dS dS )    NLoggingResultc                   @   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+d, Zd-d. Zd/d0 Zd1d2 Zd3S )4Test_TestSkippingc                    sN  G  fdddt j}g  t }|d}| ||| |  g d | |j|dfg g  | }|  g d | |j|dfg | |jd G  fdddt j}g  t }|d	}| ||| |  g d | |j|d
fg | |jd g  | }|  g d | |j|d
fg | |jd d S )Nc                           e Zd Z fddZdd ZdS ),Test_TestSkipping.test_skipping.<locals>.Fooc                       t  S Nr   selfevents E/opt/python-3.10.19/usr/lib/python3.10/unittest/test/test_skipping.pydefaultTestResult
      >Test_TestSkipping.test_skipping.<locals>.Foo.defaultTestResultc                 S      |  d d S NskipskipTestr	   r   r   r   test_skip_me      z9Test_TestSkipping.test_skipping.<locals>.Foo.test_skip_meN__name__
__module____qualname__r   r   r   r   r   r   Foo	       r   r   	startTestaddSkipstopTestr   startTestRunr    r!   r"   stopTestRun   c                       s(   e Zd Z fddZdd Zdd ZdS )r   c                    r   r   r   r	   r   r   r   r      r   r   c                 S   r   )Ntestingr   r	   r   r   r   setUp    r   z2Test_TestSkipping.test_skipping.<locals>.Foo.setUpc                 S      d S r   r   r	   r   r   r   test_nothing"   s    z9Test_TestSkipping.test_skipping.<locals>.Foo.test_nothingN)r   r   r   r   r(   r*   r   r   r   r   r      s    r*   r'   )unittestTestCaser   assertIsrunassertEqualskippedtestsRun)r
   r   resulttestr   r   r   test_skipping   s2   zTest_TestSkipping.test_skippingc                    s  G  fdddt j}g  t }|d}| ||| |  g d | t|jd |jd \}}| |d | |t j | 	|| |jd \}}| |d	 | |t j | 	|| | |jd
 |df g  | }|  g d | dd |jD g d d S )Nc                       r   )z5Test_TestSkipping.test_skipping_subtests.<locals>.Fooc                    r   r   r   r	   r   r   r   r   4   r   zGTest_TestSkipping.test_skipping_subtests.<locals>.Foo.defaultTestResultc              	   S   sz   | j dd( | j dd | d W d    n1 sw   Y  | d W d    n1 s1w   Y  | d d S )Nr&   a   )bskip 1skip 2skip 3)subTestr   r	   r   r   r   r   6   s   zBTest_TestSkipping.test_skipping_subtests.<locals>.Foo.test_skip_meNr   r   r   r   r   r   3   r   r   r   )r    r!   r!   r!   r"      r   r9   r&   r:   r7   r;   )r$   r    r!   r!   r!   r"   r%   c                 S   s   g | ]\}}|qS r   r   ).0subtestmsgr   r   r   
<listcomp>R   s    z<Test_TestSkipping.test_skipping_subtests.<locals>.<listcomp>)r9   r:   r;   )
r+   r,   r   r-   r.   r/   lenr0   ZassertIsInstanceZassertIsNot)r
   r   r2   r3   r?   r@   r   r   r   test_skipping_subtests2   s0   	z(Test_TestSkipping.test_skipping_subtestsc                    s4  t jddft jddff}|D ]\ G  fdddt j}|d}|d}t ||g}g t}| ||| | t	|j
d g d}| | | |jd	 | |j
|d
fg | |  g | }| g d | |j
|d
fg g | }| g d | |j
g  qd S )NFTc                       s<   e Zd ZfddZ ddd Z ddd ZdS )	z7Test_TestSkipping.test_skipping_decorators.<locals>.Fooc                    r   r   r   r	   r   r   r   r   Z   r   zITest_TestSkipping.test_skipping_decorators.<locals>.Foo.defaultTestResultr'   c                 S   r)   r   r   r	   r   r   r   	test_skip]      zATest_TestSkipping.test_skipping_decorators.<locals>.Foo.test_skipc                 S   r)   r   r   r	   r   r   r   test_dont_skip`   rE   zFTest_TestSkipping.test_skipping_decorators.<locals>.Foo.test_dont_skipN)r   r   r   r   rD   rF   r   ZdecoZdo_skipZ	dont_skipr   r   r   r   Y   s    
r   rD   rF   r&   )r    r!   r"   r    
addSuccessr"   r7   r'   r#   )r$   r    rH   r"   r%   )r+   Z
skipUnlessZskipIfr,   	TestSuiter   r-   r.   r/   rB   r0   r1   
assertTruewasSuccessful)r
   Zop_tabler   Ztest_do_skiprF   suiter2   Zexpectedr   rG   r   test_skipping_decoratorsU   s4   

	z*Test_TestSkipping.test_skipping_decoratorsc                    s   t dG  fdddt j}g  g t }|d}t |g}| ||| |  g d | |j|dfg | g  g  | }|  g d | |j|dfg | g  d S )Nr'   c                       s$   e Zd Z fddZfddZdS )z.Test_TestSkipping.test_skip_class.<locals>.Fooc                    r   r   r   r	   r   r   r   r      r   z@Test_TestSkipping.test_skip_class.<locals>.Foo.defaultTestResultc                         d d S Nr&   appendr	   recordr   r   test_1   r   z5Test_TestSkipping.test_skip_class.<locals>.Foo.test_1N)r   r   r   r   rT   r   r   rS   r   r   r   ~   s    r   rT   r   r#   )	r+   r   r,   r   rI   r-   r.   r/   r0   r
   r   r2   r3   rL   r   rU   r   test_skip_class}   s    z!Test_TestSkipping.test_skip_classc                    s   t dG  fddd}G dd d|t j}g  t  }|d}t |g}| ||| | |j|dfg |  g  d S )Nr'   c                       s   e Zd Z fddZdS )z=Test_TestSkipping.test_skip_non_unittest_class.<locals>.Mixinc                    rN   rO   rP   r	   rR   r   r   rT      r   zDTest_TestSkipping.test_skip_non_unittest_class.<locals>.Mixin.test_1Nr   r   r   rT   r   rR   r   r   Mixin   s    rY   c                   @      e Zd ZdS )z;Test_TestSkipping.test_skip_non_unittest_class.<locals>.FooNr   r   r   r   r   r   r   r      s    r   rT   )	r+   r   r,   
TestResultrI   r-   r.   r/   r0   )r
   rY   r   r2   r3   rL   r   rR   r   test_skip_non_unittest_class   s   z.Test_TestSkipping.test_skip_non_unittest_classc                 C   `   G dd dt j}g }t|}|d}| ||| | |g d | |j|dfg d S )Nc                   @      e Zd Zdd Zdd ZdS )z1Test_TestSkipping.test_skip_in_setup.<locals>.Fooc                 S   r   r   r   r	   r   r   r   r(      r   z7Test_TestSkipping.test_skip_in_setup.<locals>.Foo.setUpc                 S   r   )Nshouldn't come herefailr	   r   r   r   r      r   z>Test_TestSkipping.test_skip_in_setup.<locals>.Foo.test_skip_meN)r   r   r   r(   r   r   r   r   r   r          r   r   r   r   r+   r,   r   r-   r.   r/   r0   r
   r   r   r2   r3   r   r   r   test_skip_in_setup      z$Test_TestSkipping.test_skip_in_setupc                 C   r^   )Nc                   @   r_   )z3Test_TestSkipping.test_skip_in_cleanup.<locals>.Fooc                 S   r)   r   r   r	   r   r   r   r      rE   z@Test_TestSkipping.test_skip_in_cleanup.<locals>.Foo.test_skip_mec                 S   r   r   r   r	   r   r   r   tearDown   r   z<Test_TestSkipping.test_skip_in_cleanup.<locals>.Foo.tearDownNr   r   r   r   rh   r   r   r   r   r      rc   r   r   r   r   rd   re   r   r   r   test_skip_in_cleanup   rg   z&Test_TestSkipping.test_skip_in_cleanupc                 C   r^   )Nc                   @   r_   )z?Test_TestSkipping.test_failure_and_skip_in_cleanup.<locals>.Fooc                 S   r   Nrb   ra   r	   r   r   r   r      r   zLTest_TestSkipping.test_failure_and_skip_in_cleanup.<locals>.Foo.test_skip_mec                 S   r   r   r   r	   r   r   r   rh      r   zHTest_TestSkipping.test_failure_and_skip_in_cleanup.<locals>.Foo.tearDownNri   r   r   r   r   r      rc   r   r   r    r!   
addFailurer"   r   rd   re   r   r   r    test_failure_and_skip_in_cleanup   rg   z2Test_TestSkipping.test_failure_and_skip_in_cleanupc                 C   r^   )Nc                   @   r_   )z@Test_TestSkipping.test_skipping_and_fail_in_cleanup.<locals>.Fooc                 S   r   r   r   r	   r   r   r   r      r   zMTest_TestSkipping.test_skipping_and_fail_in_cleanup.<locals>.Foo.test_skip_mec                 S   r   rk   ra   r	   r   r   r   rh      r   zITest_TestSkipping.test_skipping_and_fail_in_cleanup.<locals>.Foo.tearDownNri   r   r   r   r   r      rc   r   r   rl   r   rd   re   r   r   r   !test_skipping_and_fail_in_cleanup   rg   z3Test_TestSkipping.test_skipping_and_fail_in_cleanupc                 C   s   G dd dt j}g }t|}|d}| ||| | |g d | |j | |jd d | | |j	 | 
|  d S )Nc                   @      e Zd Zejdd ZdS )z4Test_TestSkipping.test_expected_failure.<locals>.Fooc                 S   r   Nhelp me!ra   r	   r   r   r   test_die      z=Test_TestSkipping.test_expected_failure.<locals>.Foo.test_dieNr   r   r   r+   expectedFailurers   r   r   r   r   r          r   rs   r    addExpectedFailurer"   r   )r+   r,   r   r-   r.   r/   assertFalsefailuresexpectedFailuresunexpectedSuccessesrJ   rK   re   r   r   r   test_expected_failure   s   z'Test_TestSkipping.test_expected_failurec                 C   s   t jG dd dt j}g }t|}|d}| ||| | |g d | |j | |j	d d | | |j
 | |  d S )Nc                   @      e Zd Zdd ZdS )zGTest_TestSkipping.test_expected_failure_with_wrapped_class.<locals>.Fooc                 S   r   NFrJ   r	   r   r   r   rT      r   zNTest_TestSkipping.test_expected_failure_with_wrapped_class.<locals>.Foo.test_1NrX   r   r   r   r   r      s    r   rT   rx   r   )r+   rv   r,   r   r-   r.   r/   rz   r{   r|   r}   rJ   rK   re   r   r   r   (test_expected_failure_with_wrapped_class   s   z:Test_TestSkipping.test_expected_failure_with_wrapped_classc                 C   s   G dd dt j}t jG dd d|}g }t|}|d}| ||| | |g d | |j | |j	d d | | |j
 | |  d S )Nc                   @   r   )zJTest_TestSkipping.test_expected_failure_with_wrapped_subclass.<locals>.Fooc                 S   r   r   r   r	   r   r   r   rT      r   zQTest_TestSkipping.test_expected_failure_with_wrapped_subclass.<locals>.Foo.test_1NrX   r   r   r   r   r      s    r   c                   @   rZ   )zJTest_TestSkipping.test_expected_failure_with_wrapped_subclass.<locals>.BarNr[   r   r   r   r   Bar   s    r   rT   rx   r   )r+   r,   rv   r   r-   r.   r/   rz   r{   r|   r}   rJ   rK   )r
   r   r   r   r2   r3   r   r   r   +test_expected_failure_with_wrapped_subclass   s   z=Test_TestSkipping.test_expected_failure_with_wrapped_subclassc                 C   s   G dd dt j}g }t|}|d}| ||| | |g d | |j | t|j	d | |j	d d | | |j
 | |  d S )Nc                   @   rp   )z=Test_TestSkipping.test_expected_failure_subtests.<locals>.Fooc                 S   s   |    W d    n1 sw   Y  |    | d W d    n1 s(w   Y  |    | d W d    d S 1 sBw   Y  d S )Nrr   r`   )r<   rb   r	   r   r   r   rs     s   


"zFTest_TestSkipping.test_expected_failure_subtests.<locals>.Foo.test_dieNru   r   r   r   r   r     rw   r   rs   )r    addSubTestSuccessry   r"   r&   r   )r+   r,   r   r-   r.   r/   rz   r{   rB   r|   r}   rJ   rK   re   r   r   r   test_expected_failure_subtests  s   z0Test_TestSkipping.test_expected_failure_subtestsc                 C      G dd dt j}g }t|}|d}| ||| | |g d | t|jd | d|jd d  | 	|j
 | 	|j | 	|  d S )Nc                   @   "   e Zd Zejdd Zdd ZdS )zHTest_TestSkipping.test_expected_failure_and_fail_in_cleanup.<locals>.Fooc                 S   r   rq   ra   r	   r   r   r   rs   *  rt   zQTest_TestSkipping.test_expected_failure_and_fail_in_cleanup.<locals>.Foo.test_diec                 S   r   Nzbad tearDownra   r	   r   r   r   rh   -  r   zQTest_TestSkipping.test_expected_failure_and_fail_in_cleanup.<locals>.Foo.tearDownNr   r   r   r+   rv   rs   rh   r   r   r   r   r   )      
r   rs   r    rm   r"   r&   AssertionError: bad tearDownr   r+   r,   r   r-   r.   r/   rB   r{   assertInrz   r|   r}   rK   re   r   r   r   )test_expected_failure_and_fail_in_cleanup(     z;Test_TestSkipping.test_expected_failure_and_fail_in_cleanupc                 C      G dd dt j}g }t|}|d}| ||| | |g d | |j | |j | |j	 | |j
|dfg | |  d S )Nc                   @   r   )zHTest_TestSkipping.test_expected_failure_and_skip_in_cleanup.<locals>.Fooc                 S   r   rq   ra   r	   r   r   r   rs   =  rt   zQTest_TestSkipping.test_expected_failure_and_skip_in_cleanup.<locals>.Foo.test_diec                 S   r   r   r   r	   r   r   r   rh   @  r   zQTest_TestSkipping.test_expected_failure_and_skip_in_cleanup.<locals>.Foo.tearDownNr   r   r   r   r   r   <  r   r   rs   r   r   r+   r,   r   r-   r.   r/   rz   r{   r|   r}   r0   rJ   rK   re   r   r   r   )test_expected_failure_and_skip_in_cleanup;     z;Test_TestSkipping.test_expected_failure_and_skip_in_cleanupc                 C      G dd dt j}g }t|}|d}| ||| | |g d | |j | |j | |j	|g | |
  d S )Nc                   @   rp   )z6Test_TestSkipping.test_unexpected_success.<locals>.Fooc                 S   r)   r   r   r	   r   r   r   rs   P     z?Test_TestSkipping.test_unexpected_success.<locals>.Foo.test_dieNru   r   r   r   r   r   O  rw   r   rs   )r    addUnexpectedSuccessr"   r+   r,   r   r-   r.   r/   rz   r{   r|   r}   rK   re   r   r   r   test_unexpected_successN  s   z)Test_TestSkipping.test_unexpected_successc                 C   r   )Nc                   @   rp   )z?Test_TestSkipping.test_unexpected_success_subtests.<locals>.Fooc                 S   sV   |    W d    n1 sw   Y  |   	 W d    d S 1 s$w   Y  d S r   )r<   r	   r   r   r   rs   b  s   

"zHTest_TestSkipping.test_unexpected_success_subtests.<locals>.Foo.test_dieNru   r   r   r   r   r   a  rw   r   rs   )r    r   r   r   r"   r   re   r   r   r    test_unexpected_success_subtests^  s   	z2Test_TestSkipping.test_unexpected_success_subtestsc                 C   r   )Nc                   @   r   )zJTest_TestSkipping.test_unexpected_success_and_fail_in_cleanup.<locals>.Fooc                 S   r)   r   r   r	   r   r   r   rs   y  r   zSTest_TestSkipping.test_unexpected_success_and_fail_in_cleanup.<locals>.Foo.test_diec                 S   r   r   ra   r	   r   r   r   rh   |  r   zSTest_TestSkipping.test_unexpected_success_and_fail_in_cleanup.<locals>.Foo.tearDownNr   r   r   r   r   r   x  r   r   rs   r   r&   r   r   r   re   r   r   r   +test_unexpected_success_and_fail_in_cleanupw  r   z=Test_TestSkipping.test_unexpected_success_and_fail_in_cleanupc                 C   r   )Nc                   @   r   )zJTest_TestSkipping.test_unexpected_success_and_skip_in_cleanup.<locals>.Fooc                 S   r)   r   r   r	   r   r   r   rs     r   zSTest_TestSkipping.test_unexpected_success_and_skip_in_cleanup.<locals>.Foo.test_diec                 S   r   r   r   r	   r   r   r   rh     r   zSTest_TestSkipping.test_unexpected_success_and_skip_in_cleanup.<locals>.Foo.tearDownNr   r   r   r   r   r     r   r   rs   r   r   r   re   r   r   r   +test_unexpected_success_and_skip_in_cleanup  r   z=Test_TestSkipping.test_unexpected_success_and_skip_in_cleanupc                    st   G  fdddt j t  } d}t |g}| ||| | |j|dfg |  j	 |  j
 d S )Nc                       s>   e Zd ZdZdZ fddZ fddZeddd Z	d	S )
z9Test_TestSkipping.test_skip_doesnt_run_setup.<locals>.FooFc                    
   d _ d S NT)wasSetUpr	   r   r   r   r(        
z?Test_TestSkipping.test_skip_doesnt_run_setup.<locals>.Foo.setUpc                    r   r   )wasTornDownr	   r   r   r   tornDown  r   zBTest_TestSkipping.test_skip_doesnt_run_setup.<locals>.Foo.tornDownr'   c                 S   r)   r   r   r	   r   r   r   rT     r   z@Test_TestSkipping.test_skip_doesnt_run_setup.<locals>.Foo.test_1N)
r   r   r   r   r   r(   r   r+   r   rT   r   r   r   r   r     s    r   rT   r'   )r+   r,   r\   rI   r-   r.   r/   r0   rz   r   r   )r
   r2   r3   rL   r   r   r   test_skip_doesnt_run_setup  s   z,Test_TestSkipping.test_skip_doesnt_run_setupc                    sd   dd  G  fdddt j}t  }|d}t |g}| ||| | |j|dfg d S )Nc                    s    fdd}|S )Nc                     s    |  S r   r   r5   funcr   r   inner  r   zGTest_TestSkipping.test_decorated_skip.<locals>.decorator.<locals>.innerr   )r   r   r   r   r   	decorator  s   z8Test_TestSkipping.test_decorated_skip.<locals>.decoratorc                       s"   e Zd Z eddd ZdS )z2Test_TestSkipping.test_decorated_skip.<locals>.Foor'   c                 S   r)   r   r   r	   r   r   r   rT     s   z9Test_TestSkipping.test_decorated_skip.<locals>.Foo.test_1Nr   r   r   r+   r   rT   r   r   r   r   r     s    r   rT   r'   r+   r,   r\   rI   r-   r.   r/   r0   rV   r   r   r   test_decorated_skip  s   z%Test_TestSkipping.test_decorated_skipc                 C   sX   G dd dt j}t  }|d}t |g}| ||| | |j|dfg d S )Nc                   @   rp   )z7Test_TestSkipping.test_skip_without_reason.<locals>.Fooc                 S   r)   r   r   r	   r   r   r   rT     r   z>Test_TestSkipping.test_skip_without_reason.<locals>.Foo.test_1Nr   r   r   r   r   r     rw   r   rT    r   rV   r   r   r   test_skip_without_reason  s   z*Test_TestSkipping.test_skip_without_reasonc                    s   G  fdddt j}g  |d}| t j}|  W d    n1 s&w   Y  | dt|j |  dg g  |d}| t j}|  W d    n1 sVw   Y  | dt|j |  g  d S )Nc                       sF   e Zd Z fddZ fddZ fddZed fdd	Zd
S )z2Test_TestSkipping.test_debug_skipping.<locals>.Fooc                    rN   Nr(   rP   r	   r   r   r   r(     r   z8Test_TestSkipping.test_debug_skipping.<locals>.Foo.setUpc                    rN   Nrh   rP   r	   r   r   r   rh     r   z;Test_TestSkipping.test_debug_skipping.<locals>.Foo.tearDownc                    s   |  d  d d S )Nskipping exceptiontest1)r   rQ   r	   r   r   r   r     s   
z8Test_TestSkipping.test_debug_skipping.<locals>.Foo.test1skipping decoratorc                    rN   )Ntest2rP   r	   r   r   r   r     rt   z8Test_TestSkipping.test_debug_skipping.<locals>.Foo.test2N)	r   r   r   r(   rh   r   r+   r   r   r   r   r   r   r     s    r   r   r   r(   r   r   )	r+   r,   assertRaisesSkipTestdebugr   str	exceptionr/   r
   r   r3   cmr   r   r   test_debug_skipping  s   

z%Test_TestSkipping.test_debug_skippingc                    s   t dG  fdddt j}g  |d}| t j}|  W d    n1 s+w   Y  | dt|j | 	 g  d S )Nr'   c                       0   e Zd Z fddZ fddZ fddZdS )z8Test_TestSkipping.test_debug_skipping_class.<locals>.Fooc                    rN   r   rP   r	   r   r   r   r(     r   z>Test_TestSkipping.test_debug_skipping_class.<locals>.Foo.setUpc                    rN   r   rP   r	   r   r   r   rh     r   zATest_TestSkipping.test_debug_skipping_class.<locals>.Foo.tearDownc                    rN   )Nr3   rP   r	   r   r   r   r3     r   z=Test_TestSkipping.test_debug_skipping_class.<locals>.Foo.testNr   r   r   r(   rh   r3   r   r   r   r   r     s    r   r3   )
r+   r   r,   r   r   r   r   r   r   r/   r   r   r   r   test_debug_skipping_class  s   
z+Test_TestSkipping.test_debug_skipping_classc                    s   G  fdddt j}g  t }|d}| t j}|  W d    n1 s*w   Y  | dt|j | 	 ddg d S )Nc                       r   )z;Test_TestSkipping.test_debug_skipping_subtests.<locals>.Fooc                    rN   r   rP   r	   r   r   r   r(     r   zATest_TestSkipping.test_debug_skipping_subtests.<locals>.Foo.setUpc                    rN   r   rP   r	   r   r   r   rh     r   zDTest_TestSkipping.test_debug_skipping_subtests.<locals>.Foo.tearDownc                    sX   | j dd  d | d  d W d    n1 s w   Y   d d S )Nr&   r5   r?   skip subtestzend subtestzend test)r<   rQ   r   r	   r   r   r   r3     s   

z@Test_TestSkipping.test_debug_skipping_subtests.<locals>.Foo.testNr   r   r   r   r   r     s    r   r3   r   r(   r?   )
r+   r,   r   r   r   r   r   r   r   r/   )r
   r   r2   r3   r   r   r   r   test_debug_skipping_subtests  s   
z.Test_TestSkipping.test_debug_skipping_subtestsN)r   r   r   r4   rC   rM   rW   r]   rf   rj   rn   ro   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s4    *#(r   __main__)r+   Zunittest.test.supportr   r,   r   r   mainr   r   r   r   <module>   s        