B
    v9ad$                 @   s:   d dl Z d dlmZ G dd de jZedkr6e   dS )    N)LoggingResultc               @   st   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S )Test_TestSkippingc             C   s   G dd dt j}g }t|}|d}|| | |dddg | |j|dfg G dd dt j}g }t|}|d	}|| | |dddg | |j|d
fg | |jd d S )Nc               @   s   e Zd Zdd ZdS )z,Test_TestSkipping.test_skipping.<locals>.Fooc             S   s   |  d d S )Nskip)skipTest)self r   #/usr/lib/python3.7/test_skipping.pytest_skip_me
   s    z9Test_TestSkipping.test_skipping.<locals>.Foo.test_skip_meN)__name__
__module____qualname__r	   r   r   r   r   Foo	   s   r   r	   	startTestaddSkipstopTestr   c               @   s   e Zd Zdd Zdd ZdS )z,Test_TestSkipping.test_skipping.<locals>.Fooc             S   s   |  d d S )Ntesting)r   )r   r   r   r   setUp   s    z2Test_TestSkipping.test_skipping.<locals>.Foo.setUpc             S   s   d S )Nr   )r   r   r   r   test_nothing       z9Test_TestSkipping.test_skipping.<locals>.Foo.test_nothingN)r
   r   r   r   r   r   r   r   r   r      s   r   r      )unittestTestCaser   runassertEqualskippedtestsRun)r   r   eventsresulttestr   r   r   test_skipping   s    

zTest_TestSkipping.test_skippingc             C   s   G dd dt j}g }t|}|d}|| | |dddddg | t|jd |jd \}}| |d	 | |t j | || |jd
 \}}| |d | |t j | || | |jd |df d S )Nc               @   s   e Zd Zdd ZdS )z5Test_TestSkipping.test_skipping_subtests.<locals>.Fooc          
   S   sR   | j dd2 | j dd | d W d Q R X | d W d Q R X | d d S )Nr   )a   )bzskip 1zskip 2zskip 3)subTestr   )r   r   r   r   r	   "   s
    zBTest_TestSkipping.test_skipping_subtests.<locals>.Foo.test_skip_meN)r
   r   r   r	   r   r   r   r   r   !   s   r   r	   r   r   r      r   zskip 1r   zskip 2r!   zskip 3)	r   r   r   r   r   lenr   ZassertIsInstanceZassertIsNot)r   r   r   r   r   Zsubtestmsgr   r   r   test_skipping_subtests    s"    

z(Test_TestSkipping.test_skipping_subtestsc       	         s   t jddft jddff}x|D ]\ G  fdddt j}|d}|d}t ||g}g }t|}|| | t|j	d dd	d
ddd
g}| || | |j
d | |j	|dfg | |  qW d S )NFTc                   s0   e Zd Z ddd Z ddd ZdS )z7Test_TestSkipping.test_skipping_decorators.<locals>.Foor   c             S   s   d S )Nr   )r   r   r   r   	test_skip>   s    zATest_TestSkipping.test_skipping_decorators.<locals>.Foo.test_skipc             S   s   d S )Nr   )r   r   r   r   test_dont_skipA   s    zFTest_TestSkipping.test_skipping_decorators.<locals>.Foo.test_dont_skipN)r
   r   r   r(   r)   r   )decodo_skip	dont_skipr   r   r   =   s   r   r(   r)   r   r   r   r   Z
addSuccessr!   r   )r   Z
skipUnlessZskipIfr   	TestSuiter   r   r   r%   r   r   
assertTruewasSuccessful)	r   Zop_tabler   Ztest_do_skipr)   suiter   r   Zexpectedr   )r*   r+   r,   r   test_skipping_decorators9   s"    


z*Test_TestSkipping.test_skipping_decoratorsc                sn   t dG  f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_class.<locals>.Fooc                s     d d S )Nr   )append)r   )recordr   r   test_1T   s    z5Test_TestSkipping.test_skip_class.<locals>.Foo.test_1N)r
   r   r   r4   r   )r3   r   r   r   R   s   r   r4   )r   r   r   
TestResultr-   r   r   r   )r   r   r   r   r0   r   )r3   r   test_skip_classQ   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                s     d d S )Nr   )r2   )r   )r3   r   r   r4   a   s    zDTest_TestSkipping.test_skip_non_unittest_class.<locals>.Mixin.test_1N)r
   r   r   r4   r   )r3   r   r   Mixin_   s   r7   c               @   s   e Zd ZdS )z;Test_TestSkipping.test_skip_non_unittest_class.<locals>.FooN)r
   r   r   r   r   r   r   r   c   s   r   r4   )r   r   r   r5   r-   r   r   r   )r   r7   r   r   r   r0   r   )r3   r   test_skip_non_unittest_class^   s    
z.Test_TestSkipping.test_skip_non_unittest_classc             C   sj   G dd dt j}g }t|}|d}|| | |dddg | |jd d | | |  d S )Nc               @   s   e Zd Zejdd ZdS )z4Test_TestSkipping.test_expected_failure.<locals>.Fooc             S   s   |  d d S )Nzhelp me!)fail)r   r   r   r   test_dieo   s    z=Test_TestSkipping.test_expected_failure.<locals>.Foo.test_dieN)r
   r   r   r   expectedFailurer:   r   r   r   r   r   n   s   r   r:   r   addExpectedFailurer   r   )r   r   r   r   r   expectedFailuresr.   r/   )r   r   r   r   r   r   r   r   test_expected_failurem   s    
z'Test_TestSkipping.test_expected_failurec             C   sp   t jG dd dt j}g }t|}|d}|| | |dddg | |jd d | | |  d S )Nc               @   s   e Zd Zdd ZdS )zGTest_TestSkipping.test_expected_failure_with_wrapped_class.<locals>.Fooc             S   s   |  d d S )NF)r.   )r   r   r   r   r4   ~   s    zNTest_TestSkipping.test_expected_failure_with_wrapped_class.<locals>.Foo.test_1N)r
   r   r   r4   r   r   r   r   r   |   s   r   r4   r   r<   r   r   )	r   r;   r   r   r   r   r=   r.   r/   )r   r   r   r   r   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}|| | |dddg | |jd	 d	 | | |  d S )
Nc               @   s   e Zd Zdd ZdS )zJTest_TestSkipping.test_expected_failure_with_wrapped_subclass.<locals>.Fooc             S   s   |  d d S )NF)r.   )r   r   r   r   r4      s    zQTest_TestSkipping.test_expected_failure_with_wrapped_subclass.<locals>.Foo.test_1N)r
   r   r   r4   r   r   r   r   r      s   r   c               @   s   e Zd ZdS )zJTest_TestSkipping.test_expected_failure_with_wrapped_subclass.<locals>.BarN)r
   r   r   r   r   r   r   Bar   s   r@   r4   r   r<   r   r   )	r   r   r;   r   r   r   r=   r.   r/   )r   r   r@   r   r   r   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}|| | |ddddg | t|jd | |jd	 d	 | | |	  d S )
Nc               @   s   e Zd Zejdd ZdS )z=Test_TestSkipping.test_expected_failure_subtests.<locals>.Fooc          	   S   sT   |    W d Q R X |    | d W d Q R X |    | d W d Q R X d S )Nzhelp me!zshouldn't come here)r#   r9   )r   r   r   r   r:      s    



zFTest_TestSkipping.test_expected_failure_subtests.<locals>.Foo.test_dieN)r
   r   r   r   r;   r:   r   r   r   r   r      s   r   r:   r   addSubTestSuccessr<   r   r   r   )
r   r   r   r   r   r%   r=   ZassertIsr.   r/   )r   r   r   r   r   r   r   r   test_expected_failure_subtests   s    

z0Test_TestSkipping.test_expected_failure_subtestsc             C   sp   G dd dt j}g }t|}|d}|| | |dddg | |j | |j|g | |  d S )Nc               @   s   e Zd Zejdd ZdS )z6Test_TestSkipping.test_unexpected_success.<locals>.Fooc             S   s   d S )Nr   )r   r   r   r   r:      s    z?Test_TestSkipping.test_unexpected_success.<locals>.Foo.test_dieN)r
   r   r   r   r;   r:   r   r   r   r   r      s   r   r:   r   addUnexpectedSuccessr   )	r   r   r   r   r   assertFalsefailuresunexpectedSuccessesr/   )r   r   r   r   r   r   r   r   test_unexpected_success   s    
z)Test_TestSkipping.test_unexpected_successc             C   st   G dd dt j}g }t|}|d}|| | |dddddg | |j | |j|g | |  d S )Nc               @   s   e Zd Zejdd ZdS )z?Test_TestSkipping.test_unexpected_success_subtests.<locals>.Fooc          	   S   s,   |    W d Q R X |    W d Q R X d S )N)r#   )r   r   r   r   r:      s    


zHTest_TestSkipping.test_unexpected_success_subtests.<locals>.Foo.test_dieN)r
   r   r   r   r;   r:   r   r   r   r   r      s   r   r:   r   rB   rD   r   )	r   r   r   r   r   rE   rF   rG   r/   )r   r   r   r   r   r   r   r    test_unexpected_success_subtests   s    	

z2Test_TestSkipping.test_unexpected_success_subtestsc                sl   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                s
   d _ d S )NT)wasSetUp)r   )r   r   r   r      s    z?Test_TestSkipping.test_skip_doesnt_run_setup.<locals>.Foo.setUpc                s
   d _ d S )NT)wasTornDown)r   )r   r   r   tornDown   s    zBTest_TestSkipping.test_skip_doesnt_run_setup.<locals>.Foo.tornDownr   c             S   s   d S )Nr   )r   r   r   r   r4      s    z@Test_TestSkipping.test_skip_doesnt_run_setup.<locals>.Foo.test_1N)
r
   r   r   rJ   rK   r   rL   r   r   r4   r   )r   r   r   r      s
   r   r4   r   )
r   r   r5   r-   r   r   r   rE   rJ   rK   )r   r   r   r0   r   )r   r   test_skip_doesnt_run_setup   s    
z,Test_TestSkipping.test_skip_doesnt_run_setupc                s\   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 )Nr   )r    )funcr   r   inner   s    zGTest_TestSkipping.test_decorated_skip.<locals>.decorator.<locals>.innerr   )rN   rO   r   )rN   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   s   d S )Nr   )r   r   r   r   r4      s    z9Test_TestSkipping.test_decorated_skip.<locals>.Foo.test_1N)r
   r   r   r   r   r4   r   )rP   r   r   r      s   r   r4   r   )r   r   r5   r-   r   r   r   )r   r   r   r   r0   r   )rP   r   test_decorated_skip   s    
z%Test_TestSkipping.test_decorated_skipN)r
   r   r   r   r'   r1   r6   r8   r>   r?   rA   rC   rH   rI   rM   rQ   r   r   r   r   r      s   r   __main__)r   Zunittest.test.supportr   r   r   r
   mainr   r   r   r   <module>   s
    ~