B
    18\                 @   s   d dl Z 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mZm	Z	m
Z
mZmZmZmZmZmZmZmZ G dd deZG dd deZG d	d
 d
ejZedkre  dS )    N)is_instance)mock)callDEFAULTpatchsentinel	MagicMockMockNonCallableMockNonCallableMagicMock_Call	_CallListcreate_autospecc               @   s(   e Zd Zdd Zdd Zdd ZeZdS )Iterc             C   s   t ddddg| _d S )Nthisisaniter)r   thing)self r   c/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/unittest/test/testmock/testmock.py__init__   s    zIter.__init__c             C   s   | S )Nr   )r   r   r   r   __iter__   s    zIter.__iter__c             C   s
   t | jS )N)nextr   )r   r   r   r   r      s    z	Iter.nextN)__name__
__module____qualname__r   r   r   __next__r   r   r   r   r      s   r   c               @   s2   e Zd ZdddZed	ddZed
ddZdS )	SomethingNc             C   s   d S )Nr   )r   abcdr   r   r   meth   s    zSomething.methc             C   s   d S )Nr   )clsr    r!   r"   r#   r   r   r   cmeth!   s    zSomething.cmethc             C   s   d S )Nr   )r    r!   r"   r#   r   r   r   smeth%   s    zSomething.smeth)N)N)N)r   r   r   r$   classmethodr&   staticmethodr'   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
edejkd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d3d4 Zd5d6 Z d7d8 Z!d9d: Z"d;d< Z#d=d> Z$d?d@ Z%dAdB Z&dCdD Z'dEdF Z(dGdH Z)dIdJ Z*dKdL Z+dMdN Z,dOdP Z-dQdR Z.dSdT Z/dUdV Z0dWdX Z1dYdZ Z2d[d\ Z3d]d^ Z4d_d` Z5dadb Z6dcdd Z7dedf Z8dgdh Z9didj Z:dkdl Z;dmdn Z<dodp Z=dqdr Z>dsdt Z?dudv Z@dwdx ZAdydz ZBd{d| ZCd}d~ ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd ZfddĄ ZgddƄ ZhddȄ Ziddʄ Zjdd̄ Zkdd΄ ZlddЄ Zmdd҄ ZnddԄ Zoddք Zpdd؄ Zqddڄ Zrdd܄ ZsdS )MockTestc             C   s   t d d S )Nzfrom unittest.mock import *)exec)r   r   r   r   test_all,   s    zMockTest.test_allc             C   s   t  }| |jd | |jdd | t|jt d | |jd d | |j	g d | |j
g d | d|jd	 | |jd
 | |jd | |ji d d S )Nz called not initialised correctlyr   z$call_count not initialised correctlyz&return_value not initialised correctlyz#call_args not initialised correctlyz(call_args_list not initialised correctlyz&method_calls not initialised correctly_itemsz/default mock should not have '_items' attributez parent not initialised correctlyz!methods not initialised correctlyz$children not initialised incorrectly)r	   assertFalsecalledassertEqual
call_count
assertTruer   return_value	call_argscall_args_listmethod_callsassertNotIn__dict__assertIsNone_mock_parent_mock_methods_mock_children)r   r   r   r   r   test_constructor3   s(    





zMockTest.test_constructorc             C   s   t d d}| |jd d S )N)r3   z(return value in constructor not honoured)r	   r9   r3   )r   r   r   r   r    test_return_value_in_constructorO   s    
z)MockTest.test_return_value_in_constructorc             C   s   t dd}| dt| | dt| t| t  dft dddfg}x|D ]\}}| d| t|j | d| t|  | d| t| j | d	| t|  | d
| t|   | d| t|  jj j qPW d S )Nfoo)namez'%s'r   barz%s.barz%s.foo()z%s.foo().bingz%s()z%s()()z%s()().foo.bar.baz().bing)r	   assertInrepridrA   r?   Zbingbaz)r   r   mocksr@   r   r   r   	test_reprU   s    

zMockTest.test_reprc             C   s   G dd dt }t|d}| dt| t| d}| dt| t|d}| dt| t| d}| dt| t|dd}| dt| | d	t| tdd
}| dt| t }| dt| tdgd}| dt| d S )Nc               @   s   e Zd ZdS )z'MockTest.test_repr_with_spec.<locals>.XN)r   r   r   r   r   r   r   Xf   s   rH   )specz
 spec='X' )spec_setz spec_set='X' r?   )rI   r@   z name='foo' )r@   rI   )objectr	   rB   rC   r7   )r   rH   r   r   r   r   test_repr_with_spece   s$    


zMockTest.test_repr_with_specc                s   t  }dd }||_| jt|dddd |jdddd dddg  fdd}||_| | | | gdddgd t tjd	}| |jtjd
 dd }t |tjd}| | tj d S )Nc              _   s   t dd S )NZkablooie)SystemError)argskwargsr   r   r   effect   s    z)MockTest.test_side_effect.<locals>.effect         )fishc                  s      S )N)popr   )resultsr   r   rP      s    zside effect not used correctly)side_effectz#side effect in constructor not usedc               S   s   t S )N)r   r   r   r   r   rW      s    z.MockTest.test_side_effect.<locals>.side_effect)rW   r3   )	r	   rW   assertRaisesrM   assert_called_withr0   r   
SideEffectRETURN)r   r   rP   rW   r   )rV   r   test_side_effect   s     
zMockTest.test_side_effectc                s   dddg  fdd}dd }t |}dddg|_| | | | gdddgd dddg t |}||_| | | | gdddgd	 d S )
NrQ   rR   rS   c                  s      S )N)rU   r   )rV   r   r   rP      s    z2MockTest.test_autospec_side_effect.<locals>.effectc               S   s   d S )Nr   r   r   r   r   f   s    z-MockTest.test_autospec_side_effect.<locals>.fz1side effect not used correctly in create_autospecz'callable side effect not used correctly)r   rW   r0   )r   rP   r]   r   r   )rV   r   test_autospec_side_effect   s    

z"MockTest.test_autospec_side_effectc             C   s,   dd }t |}td|_| td| d S )Nc               S   s   d S )Nr   r   r   r   r   r]      s    z7MockTest.test_autospec_side_effect_exception.<locals>.fzBazinga!)r   
ValueErrorrW   assertRaisesRegex)r   r]   r   r   r   r   #test_autospec_side_effect_exception   s    
z,MockTest.test_autospec_side_effect_exceptionjavaz This test only applies to Jythonc             C   sd   dd l }t|jdd}y|dddd W n |jjk
rD   Y nX | d |jdddd d S )	Nr   zBoom!)rW   rQ   rR   rS   )rT   zjava exception not raised)rb   r	   langZRuntimeExceptionfailrY   )r   rb   r   r   r   r   test_java_exception_side_effect   s    
z(MockTest.test_java_exception_side_effectc             C   sR  t  }dg}t d||d}|tjtjd |j}|  tj|_|j}|  |  | 	|j
dd | 	|j|d | 	|j|d | |jd | 	|jd	d
 | 	|jd d | 	|jg d | 	|jg d|jg f  | 	|jg  | 	|jtjd | 	|j|d | |jd | 	|jd|id | 	|j|d | |jjd d S )N	somethingchild)r@   parentrI   )rf   zname incorrectly resetzparent incorrectly resetzmethods incorrectly resetzcalled not resetr   zcall_count not resetzcall_args not resetzcall_args_list not resetz0method_calls not initialised correctly: %r != %rzside_effect incorrectly resetzreturn_value incorrectly resetzreturn value mock not resetzchildren reset incorrectlyzchildren incorrectly clearedzchild not reset)r	   r   r   ZSomethingElserf   rZ   rW   r3   
reset_mockr0   
_mock_namer:   r;   r.   r/   r1   r4   r5   r6   
mock_callsr<   )r   rh   rI   r   rf   r3   r   r   r   test_reset_mock   sD    





zMockTest.test_reset_mockc             C   s   t  }||_|  d S )N)r	   r3   ri   )r   r   r   r   r   test_reset_mock_recursion   s    z"MockTest.test_reset_mock_recursionc             C   s   t  }|  d S )N)r   	mock_openri   )r   r    r   r   r   (test_reset_mock_on_mock_open_issue_18622   s    z1MockTest.test_reset_mock_on_mock_open_issue_18622c             C   s  t  }| t|jt d | }| | |d |  |tj}| |jd | |j	dd | |j
tjfi fd | |jtjfi fgd tj|_|tjtjd}| |tjd	 | |j	d
d | |j
tjfdtjifd | |jtjfi ftjfdtjifgd d S )Nz%Default return_value should be a Mockz'different result from consecutive callszcalled not setrQ   zcall_count incoreectzcall_args not setz(call_args_list not initialised correctly)keyzincorrect return valuerR   zcall_count incorrectrp   zcall_args_list not set)r	   r2   r   r3   r0   ri   r   Argr/   r1   r4   r5   ReturnValueZKeyArg)r   r   resultret_valr   r   r   	test_call   s4    



zMockTest.test_callc          	   C   s   t  }|  |tj |tjd |tjtjd | |jdtjffdtjiftjfdtjifg | |jtjfdtjif | |jdk d S )N)kwr   rv   za long sequence)r	   r   rq   ZKwargr0   r5   r4   r.   )r   r   r   r   r   test_call_args_comparison   s    

z"MockTest.test_call_args_comparisonc             C   s   t  }| ||k | ||k | |t  k | |t  k | |t jk | |t jk | t j|k | t j|k t t  }t t j}| ||k | ||k | ||k | ||k d S )N)r   r   r2   r.   ANYr   )r   mmZcall1Zcall2r   r   r   test_calls_equal_with_any4  s    z"MockTest.test_calls_equal_with_anyc             C   sd   t  }|  |  | t|jd |  | t|j |dddddd |jdddddd d S )NrQ   rR   rS   rT   nothing)r    r!   )r	   rY   rX   AssertionErrorri   )r   r   r   r   r   test_assert_called_withI  s    z MockTest.test_assert_called_withc             C   s    t  }|t   |tj d S )N)r   rY   r   rx   )r   mr   r   r   test_assert_called_with_anyX  s    
z$MockTest.test_assert_called_with_anyc          	   C   s   ddd}t |d}|dddd |ddd |jdddd | jt|jdddd | t}|jd	d
 W d Q R X | |jjt d S )Nc             S   s   d S )Nr   )r    r!   r"   r#   r   r   r   r]   _  s    z9MockTest.test_assert_called_with_function_spec.<locals>.f)rI   rQ   rR   rS   )r!   r"   )r    r!   r"      )e)N)r	   rY   rX   r|   assertIsInstance	exception	__cause__	TypeError)r   r]   r   cmr   r   r   %test_assert_called_with_function_spec^  s    


z.MockTest.test_assert_called_with_function_specc                sz    fdd}t t jd}|| t tjd}|| t t jd}|| t tjd}|| t t jd}|| d S )Nc                sF   | dddd |  ddd | j dddd  jt| j dddd d S )NrQ   rR   rS   )r!   r"   )r    r!   r"   )rY   rX   r|   )r   )r   r   r   _checkp  s
    
z<MockTest.test_assert_called_with_method_spec.<locals>._check)rI   )r	   r   r$   r&   r'   )r   r   r   r   )r   r   #test_assert_called_with_method_speco  s    z,MockTest.test_assert_called_with_method_specc                s   t            | t j    | t j  dddd  jdddd     dddd | t fdd d S )Nr?   rA   rR   )rE   c                  s    j ddddS )NbobrA   rR   )rE   )assert_called_once_withr   )r   r   r   <lambda>      z7MockTest.test_assert_called_once_with.<locals>.<lambda>)r	   r   rX   r|   ri   )r   r   )r   r   test_assert_called_once_with  s    z%MockTest.test_assert_called_once_withc          	   C   s   ddd}t |d}|dddd |ddd |jdddd | jt|jdddd | t}|jd	d
 W d Q R X | |jjt |ddd | t|jddd | t|jddd d S )Nc             S   s   d S )Nr   )r    r!   r"   r#   r   r   r   r]     s    z>MockTest.test_assert_called_once_with_function_spec.<locals>.f)rI   rQ   rR   rS   )r!   r"   )r    r!   r"   r   )r            )N)r	   r   rX   r|   r   r   r   r   )r   r]   r   r   r   r   r   *test_assert_called_once_with_function_spec  s    





z3MockTest.test_assert_called_once_with_function_specc             C   sb   t  }|j}| t|t d | |j|d t  }d|j_| | dd | |jjd d S )Nzattribute isn't a mockz+different attributes returned for same namerS   zmethod returned wrong valuez!method didn't record being called)r	   rf   r2   r   r0   r3   r/   )r   r   rf   r   r   r   #test_attribute_access_returns_mocks  s    

z,MockTest.test_attribute_access_returns_mocksc             C   s0   t  }|j}| |jdd | |j|d d S )Nrf   z attribute name not set correctlyz"attribute parent not set correctly)r	   rf   r0   rj   r:   )r   r   rf   r   r   r   (test_attributes_have_name_and_parent_set  s    

z1MockTest.test_attributes_have_name_and_parent_setc             C   st   t  }|jdd d |jjdtjd | |jjdddtjifgd | |jdd	d
d ifdddtjifgd d S )NrS   )rT   r   )cakerf   )r   r   z#method calls not recorded correctly)rS   rT   zsomething_else.something)r	   rf   something_elser   ZCaker0   r6   )r   r   r   r   r   test_method_calls_recorded  s    
z#MockTest.test_method_calls_recordedc             C   s   t  }|  | |jdg | |jddi fg t  }|d | |jdg | |jddi fg t  }|jdd | |jdd	difg | |jddd	difg t  }|jdd
d | |jdddd
ifg d S )N)rf   rf   r   	different)rf   )r   )r   rQ   )xr   more)somer   )r	   rf   r0   r6   )r   r   r   r   r    test_method_calls_compare_easily  s"    
z)MockTest.test_method_calls_compare_easilyc          	   C   sL   xFdgdfD ]8}x2dD ]*}t f ||i}|j | tdt|d qW qW d S )Nrf   )rf   )rI   rJ   z-Mock object has no attribute 'something_else'r   )r	   rf   r`   AttributeErrorgetattr)r   rI   argr   r   r   r   test_only_allowed_methods_exist  s    
z(MockTest.test_only_allowed_methods_existc                s>   G dd dt } fdd}|t|d |t| d d S )Nc               @   s   e Zd ZdZdZdd ZdS )z*MockTest.test_from_spec.<locals>.SomethingrS   Nc             S   s   d S )Nr   )r   r   r   r   y  s    z,MockTest.test_from_spec.<locals>.Something.y)r   r   r   r   __something__r   r   r   r   r   r     s   r   c                s:   | j  | j | j  tdt| d  tdt| d d S )Nz Mock object has no attribute 'z'zz)Mock object has no attribute '__foobar__'Z
__foobar__)r   r   r   r`   r   r   )r   )r   r   r   test_attributes  s    
z0MockTest.test_from_spec.<locals>.test_attributes)rI   )rK   r	   )r   r   r   r   )r   r   test_from_spec  s    zMockTest.test_from_specc             C   sJ   t  }t |d}| | |  |  |dddd |jdddd d S )N)wrapsrQ   rR   rS   )rT   )r	   r0   ri   rY   )r   realr   r   r   r   test_wraps_calls  s    
zMockTest.test_wraps_callsc                s8   G dd dt }| }t|d | t fdd d S )Nc               @   s   e Zd ZdS )zFMockTest.test_wraps_prevents_automatic_creation_of_mocks.<locals>.RealN)r   r   r   r   r   r   r   Real)  s   r   )r   c                  s      S )N)new_attrr   )r   r   r   r   /  r   zJMockTest.test_wraps_prevents_automatic_creation_of_mocks.<locals>.<lambda>)rK   r	   rX   r   )r   r   r   r   )r   r   /test_wraps_prevents_automatic_creation_of_mocks(  s    
z8MockTest.test_wraps_prevents_automatic_creation_of_mocksc             C   s4   t  }t |d}d|_| | d | |j d S )N)r   rS   )r	   r3   r0   r.   r/   )r   r   r   r   r   r   ,test_wraps_call_with_nondefault_return_value2  s
    
z5MockTest.test_wraps_call_with_nondefault_return_valuec                s   G dd dt }| }t|d |   |  | t fdd |  j|j  jjdddd	}|jjjdddd	 | ||j  d S )
Nc               @   s   e Zd Ze ZdS )z,MockTest.test_wraps_attributes.<locals>.RealN)r   r   r   r	   	attributer   r   r   r   r   =  s   r   )r   c                  s    j S )N)rT   r   )r   r   r   r   D  r   z0MockTest.test_wraps_attributes.<locals>.<lambda>rQ   rR   rS   )rT   )	rK   r	   r0   r   rX   r   assertNotEqualZfrogrY   )r   r   r   rs   r   )r   r   test_wraps_attributes<  s    
zMockTest.test_wraps_attributesc             C   sd   G dd dt }| }t|d}tjtg|j_| | tj | | tj | 	t
|j d S )Nc               @   s   e Zd Zdd ZdS )z[MockTest.test_customize_wrapped_object_with_side_effect_iterable_with_default.<locals>.Realc             S   s   t jS )N)r   ORIGINAL_VALUE)r   r   r   r   methodN  s    zbMockTest.test_customize_wrapped_object_with_side_effect_iterable_with_default.<locals>.Real.methodN)r   r   r   r   r   r   r   r   r   M  s   r   )r   )rK   r	   r   VALUE1r   r   rW   r0   r   rX   StopIteration)r   r   r   r   r   r   r   Dtest_customize_wrapped_object_with_side_effect_iterable_with_defaultL  s    
zMMockTest.test_customize_wrapped_object_with_side_effect_iterable_with_defaultc             C   sf   G dd dt }| }t|d}tjtjg|j_| | tj | | tj | t	|j d S )Nc               @   s   e Zd Zdd ZdS )zNMockTest.test_customize_wrapped_object_with_side_effect_iterable.<locals>.Realc             S   s
   t  d S )N)NotImplementedError)r   r   r   r   r   \  s    zUMockTest.test_customize_wrapped_object_with_side_effect_iterable.<locals>.Real.methodN)r   r   r   r   r   r   r   r   r   [  s   r   )r   )
rK   r	   r   r   VALUE2r   rW   r0   rX   r   )r   r   r   r   r   r   r   7test_customize_wrapped_object_with_side_effect_iterableZ  s    
z@MockTest.test_customize_wrapped_object_with_side_effect_iterablec             C   s:   G dd dt }| }t|d}t|j_| t|j d S )Nc               @   s   e Zd Zdd ZdS )zOMockTest.test_customize_wrapped_object_with_side_effect_exception.<locals>.Realc             S   s
   t  d S )N)r   )r   r   r   r   r   j  s    zVMockTest.test_customize_wrapped_object_with_side_effect_exception.<locals>.Real.methodN)r   r   r   r   r   r   r   r   r   i  s   r   )r   )rK   r	   RuntimeErrorr   rW   rX   )r   r   r   r   r   r   r   8test_customize_wrapped_object_with_side_effect_exceptionh  s
    
zAMockTest.test_customize_wrapped_object_with_side_effect_exceptionc             C   sF   G dd dt }dd }| }t|d}||j_| | tj d S )Nc               @   s   e Zd Zdd ZdS )zNMockTest.test_customize_wrapped_object_with_side_effect_function.<locals>.Realc             S   s
   t  d S )N)r   )r   r   r   r   r   v  s    zUMockTest.test_customize_wrapped_object_with_side_effect_function.<locals>.Real.methodN)r   r   r   r   r   r   r   r   r   u  s   r   c               S   s   t jS )N)r   VALUEr   r   r   r   rW   y  s    zUMockTest.test_customize_wrapped_object_with_side_effect_function.<locals>.side_effect)r   )rK   r	   r   rW   r0   r   r   )r   r   rW   r   r   r   r   r   7test_customize_wrapped_object_with_side_effect_functiont  s    
z@MockTest.test_customize_wrapped_object_with_side_effect_functionc             C   s@   G dd dt }| }t|d}tj|j_| | tj d S )Nc               @   s   e Zd Zdd ZdS )zFMockTest.test_customize_wrapped_object_with_return_value.<locals>.Realc             S   s
   t  d S )N)r   )r   r   r   r   r     s    zMMockTest.test_customize_wrapped_object_with_return_value.<locals>.Real.methodN)r   r   r   r   r   r   r   r   r     s   r   )r   )rK   r	   r   r   r   r3   r0   )r   r   r   r   r   r   r   /test_customize_wrapped_object_with_return_value  s
    

z8MockTest.test_customize_wrapped_object_with_return_valuec             C   sp   G dd dt }| }t|d}tjtjg|j_tj|j_| 	| tj | 	| tj | 
t|j d S )Nc               @   s   e Zd Zdd ZdS )zVMockTest.test_customize_wrapped_object_with_return_value_and_side_effect.<locals>.Realc             S   s
   t  d S )N)r   )r   r   r   r   r     s    z]MockTest.test_customize_wrapped_object_with_return_value_and_side_effect.<locals>.Real.methodN)r   r   r   r   r   r   r   r   r     s   r   )r   )rK   r	   r   r   r   r   rW   ZWRONG_VALUEr3   r0   rX   r   )r   r   r   r   r   r   r   ?test_customize_wrapped_object_with_return_value_and_side_effect  s    

zHMockTest.test_customize_wrapped_object_with_return_value_and_side_effectc             C   sL   G dd dt }| }t|d}dd |j_tj|j_| | tj d S )Nc               @   s   e Zd Zdd ZdS )zWMockTest.test_customize_wrapped_object_with_return_value_and_side_effect2.<locals>.Realc             S   s
   t  d S )N)r   )r   r   r   r   r     s    z^MockTest.test_customize_wrapped_object_with_return_value_and_side_effect2.<locals>.Real.methodN)r   r   r   r   r   r   r   r   r     s   r   )r   c               S   s   t S )N)r   r   r   r   r   r     r   z[MockTest.test_customize_wrapped_object_with_return_value_and_side_effect2.<locals>.<lambda>)rK   r	   r   rW   r   r   r3   r0   )r   r   r   r   r   r   r   @test_customize_wrapped_object_with_return_value_and_side_effect2  s    

zIMockTest.test_customize_wrapped_object_with_return_value_and_side_effect2c             C   sn   G dd dt }| }t|d}tjtg|j_tj|j_| 	| tj | 	| tj | 
t|j d S )Nc               @   s   e Zd Zdd ZdS )z^MockTest.test_customize_wrapped_object_with_return_value_and_side_effect_default.<locals>.Realc             S   s
   t  d S )N)r   )r   r   r   r   r     s    zeMockTest.test_customize_wrapped_object_with_return_value_and_side_effect_default.<locals>.Real.methodN)r   r   r   r   r   r   r   r   r     s   r   )r   )rK   r	   r   r   r   r   rW   r[   r3   r0   rX   r   )r   r   r   r   r   r   r   Gtest_customize_wrapped_object_with_return_value_and_side_effect_default  s    

zPMockTest.test_customize_wrapped_object_with_return_value_and_side_effect_defaultc             C   s4   t td}| t| t tdd}| t| d S )N)rW   r?   )r	   r   rX   )r   r   r   r   r   test_exceptional_side_effect  s    
z%MockTest.test_exceptional_side_effectc             C   s4   t td}| t| t tdd}| t| d S )N)rW   r?   )r	   KeyboardInterruptrX   )r   r   r   r   r    test_baseexceptional_side_effect  s    
z)MockTest.test_baseexceptional_side_effectc             C   s   t  }| td|j d S )Nz
Not called)r	   r`   r|   rY   )r   r   r   r   r   test_assert_called_with_message  s    z(MockTest.test_assert_called_with_messagec             C   s   t dd}| td|j d S )NZgeoffrey)r@   z'Expected 'geoffrey' to be called once\.)r	   r`   r|   r   )r   r   r   r   r   $test_assert_called_once_with_message  s    
z-MockTest.test_assert_called_once_with_messagec                s2   t   | t fdd d _|  jd d S )Nc                  s    j S )N)r   r   )r   r   r   r     r   z'MockTest.test__name__.<locals>.<lambda>r?   )r	   rX   r   r   r0   )r   r   )r   r   test__name__  s    zMockTest.test__name__c             C   sJ   G dd dt }t|dgd}|d |jd | tt|d d S )Nc               @   s   e Zd ZdS )z-MockTest.test_spec_list_subclass.<locals>.SubN)r   r   r   r   r   r   r   Sub  s   r   r?   )rI   rS   )listr	   appendrY   rX   r   r   )r   r   r   r   r   r   test_spec_list_subclass  s
    
z MockTest.test_spec_list_subclassc             C   s   G dd dt }t|d}| || t| d}| || | |j| | t jjd t|d}| || t| d}| || d S )Nc               @   s   e Zd ZdS )z#MockTest.test_spec_class.<locals>.XN)r   r   r   r   r   r   r   rH     s   rH   )rI   r	   )rJ   )rK   r	   r   assertIs	__class__r0   r   )r   rH   r   r   r   r   test_spec_class  s    

zMockTest.test_spec_classc                sL   G dd dt }t|d d _t|d  fdd}d _| t| d S )Nc               @   s   e Zd ZdZdS )z8MockTest.test_setting_attribute_with_spec_set.<locals>.XrS   N)r   r   r   r   r   r   r   r   rH      s   rH   )rI   r?   )rJ   c                  s
   d _ d S )Nr?   )r   r   )r   r   r   set_attr  s    z?MockTest.test_setting_attribute_with_spec_set.<locals>.set_attr)rK   r	   r   r   rX   r   )r   rH   r   r   )r   r   $test_setting_attribute_with_spec_set  s    

z-MockTest.test_setting_attribute_with_spec_setc             C   s4   t  }| t j| t td tt  d S )Ng    eA)sysgetrecursionlimit
addCleanupsetrecursionlimitintcopyr	   )r   currentr   r   r   	test_copy  s    zMockTest.test_copyc                s\   G dd dt }||d |  jd  fdd}| t|  fdd}| t| d S )Nc               @   s&   e Zd Zdd Zdd ZeeeZdS )z8MockTest.test_subclass_with_properties.<locals>.SubClassc             S   s   dS )NrS   r   )r   r   r   r   _get  s    z=MockTest.test_subclass_with_properties.<locals>.SubClass._getc             S   s   t dd S )Nzstrange error)	NameError)r   valuer   r   r   _set  s    z=MockTest.test_subclass_with_properties.<locals>.SubClass._setN)r   r   r   r   r   propertysome_attributer   r   r   r   SubClass  s   r   )rJ   rS   c                  s
   d _ d S )NrS   )r   r   )sr   r   test#  s    z4MockTest.test_subclass_with_properties.<locals>.testc                  s
   d _ d S )NrA   )r?   r   )r   r   r   r   '  s    )r	   r0   r   rX   r   r   )r   r   r   r   )r   r   test_subclass_with_properties  s    
z&MockTest.test_subclass_with_propertiesc             C   s>   t  }dd }|t|_|d |d | t|dd d S )Nc             S   s
   |  |S )N)
_mock_call)r   r    r   r   r   __call__.  s    z,MockTest.test_setting_call.<locals>.__call__onetwo)r	   typer   rY   rX   r   )r   r   r   r   r   r   test_setting_call,  s    

zMockTest.test_setting_callc             C   s   t  }tt|}tdd tt D }| t ||  |j|jf | dt| | dt| d  |_|_| dt| | dt| dd |_	| d	t| d S )
Nc             S   s   g | ]}| d s|qS )_)
startswith).0r~   r   r   r   
<listcomp>;  s    z%MockTest.test_dir.<locals>.<listcomp>r    r!   r"   r#   c             S   s   t g S )N)r   )r   r   r   r   r   K  r   z#MockTest.test_dir.<locals>.<lambda>r   )
r	   setdirr0   r    r!   rB   r"   r#   r   )r   r   attrs
type_attrsr   r   r   test_dir8  s    
zMockTest.test_dirc             C   sX   t tjd}tttj}tt|}| t ||  d|_| t|dd d S )N)rI   rS   versionrQ   )r	   unittestTestCaser   r   r0   r   count)r   r   Ztestcase_attrsr   r   r   r   test_dir_from_specO  s    zMockTest.test_dir_from_specc             C   sV   t tdd}|  z0ttt }ttt}| t ||  W d |  X d S )N
FILTER_DIRF)	r   rK   r   startr   r   r	   r0   stop)r   patcherr   r   r   r   r   test_filter_dir\  s    zMockTest.test_filter_dirc             C   s   t dd}| |jd tdd}| |jd tdt d}t f |}| t| | |j d | |jt t  }|jf | | t| | |j d | |jt d S )NrA   )r?   !   )rW   zfoo.bar.return_valuer?   )	r	   r0   r?   r   KeyErrorrX   rA   r   configure_mock)r   r   rO   r   r   r   test_configure_mocki  s    



zMockTest.test_configure_mockc             O   s\   y||| W n$   t  d }| || Y nX | d|f  t|}| || d S )NrQ   zException %r not raised)r   exc_infor   rd   strr0   )r   r   messagefuncrN   rO   instancemsgr   r   r   assertRaisesWithMsg~  s    zMockTest.assertRaisesWithMsgc          
   C   s(  t  }d}d}| jt||f |jddddd |jddddd |jj|jjg}x8|D ]0}d	}d
}d}| jt|||f |ddddd qVW x2|D ]*}d	}d}d}| jt|||f |dd qW x4|D ],}d	}d}d}| t|||f |ddd qW x.|D ]&}d	}d}d}| t|||f | qW d S )Nzmock(1, '2', 3, bar='foo')zExpected call: %s
Not calledrQ   2rS   r?   )rA   )r?   zfoo(1, '2', 3, foo='foo')zfoo(1, '2', 3, bar='foo')z!Expected call: %s
Actual call: %szfoo(bar='foo')zfoo(1, 2, 3)rR   zfoo())r
   r  r|   rY   r?   r   )r   r   expectedr   Z	assertersr$   actualr   r   r   'test_assert_called_with_failure_message  sF    




z0MockTest.test_assert_called_with_failure_messagec          	   C   s  t  }| |jg kd t  }|  ddi fg}| |j| |  |t  | |j| | |jjddi fg t  }| jdddddd	 ddi fd
dtddd	fg}| |j| | |jjjddtddd	fg | |jjddtddd	fg t  }| j	 
  ddi fddi fddi fg}| |j| | | jtj	 
   x:t tddfD ]$}t f |}t|j ddi fg}| |j| t f |}|   ddi fddi fg}| |j| | | jt g t f |}|ddd | |jtddd  | | jtdd  | |  jtd  t f |}|dddjjd | |jtdddjjd  | | jtddjjd  | |  jtdjjd  t f |}t| j	 
  ddi f}| |jd | | | jtj	 
    | | j	 jt
    | | j	 j
jt    qtW d S )NT r   rQ   rR   rS   r   r   )r    r!   z().foo)rQ   rR   rS   r?   z
().foo.barz().foo.bar().bazrA   )r@   zfoo.__int__r    za()z().foo.bar().baz().__int__)r   r   rk   r0   r?   r   r   dictr3   rA   rE   	call_listr   r    r!   r"   __int__)r   r   r  rO   Z	last_callr   r   r   test_mock_calls  st    







 



zMockTest.test_mock_callsc             C   sF   t  }| }|  | |jt t  g | |jt g d S )N)r	   Zwibbler0   rk   r   )r   r~   rs   r   r   r   test_child_mock_call_equal  s
    z#MockTest.test_child_mock_call_equalc             C   sF   t  }|   | |jd t   | |jd t  d S )NrQ   r   )r	   r?   rf   r   rk   r   r   r0   )r   r~   r   r   r   test_mock_call_not_equal_leaf  s    z&MockTest.test_mock_call_not_equal_leafc             C   sF   t  }|   | |jd t   | |jd t  d S )NrQ   r   )r	   r?   rA   r   rk   r   rE   )r   r~   r   r   r   !test_mock_call_not_equal_non_leaf"  s    z*MockTest.test_mock_call_not_equal_non_leafc             C   s8   t  }|jdd  | |jd tjdd  d S )NrQ   )r   rR   )r	   r?   rA   r0   rk   r   )r   r~   r   r   r   2test_mock_call_not_equal_non_leaf_params_different)  s    z;MockTest.test_mock_call_not_equal_non_leaf_params_differentc             C   s,   t  }|j  | |jd tj  d S )Nr   )r	   r?   rA   r   rk   r   rE   )r   r~   r   r   r   &test_mock_call_not_equal_non_leaf_attr0  s    
z/MockTest.test_mock_call_not_equal_non_leaf_attrc             C   s.   t  }|j  | |jd t   d S )Nr   )r	   r?   rA   r   rk   r   )r   r~   r   r   r   2test_mock_call_not_equal_non_leaf_call_versus_attr6  s    
z;MockTest.test_mock_call_not_equal_non_leaf_call_versus_attrc             C   s^   t  }|  j  | t|jd d | t|jd d | t|jd d d S )Nr   z
call.foo()rQ   zcall.foo().bar()rR   zcall.foo().bar().baz.bob())r	   r?   rA   rE   r   r0   rC   rk   )r   r~   r   r   r   test_mock_call_repr<  s
    zMockTest.test_mock_call_reprc             C   sh   G dd dt }| }| |j| | | | G dd dt }| }| |j| | | | d S )Nc               @   s   e Zd ZdS )z+MockTest.test_subclassing.<locals>.SubclassN)r   r   r   r   r   r   r   SubclassE  s   r  c               @   s   e Zd Zdd ZdS )z+MockTest.test_subclassing.<locals>.Subclassc             [   s
   t f |S )N)r	   )r   rO   r   r   r   _get_child_mockM  s    z;MockTest.test_subclassing.<locals>.Subclass._get_child_mockN)r   r   r   r  r   r   r   r   r  L  s   )r	   r   r?   assertNotIsInstance)r   r  r   r   r   r   test_subclassingD  s    zMockTest.test_subclassingc                s   t  t t t g} fdd}x|D ]z}|| t|rd|  |dd |dd |  || |  |jjddd |d d |  || q&W d S )Nc                sD   d}x:|D ]2}t | |} |t  |t  |g  q
W d S )N)r5   r6   rk   )r   r   r   r   r0   )r   namesr@   attr)r   r   r   assert_attrs]  s    

z-MockTest.test_arg_lists.<locals>.assert_attrsrQ   rR   rS   )r    )	r	   r   r
   r   callableri   r?   rA   rE   )r   rF   r  r   r   )r   r   test_arg_listsU  s$    


zMockTest.test_arg_listsc             C   s   t  }|ddd |ddd | t|jd |j\}}| |d | |tdd dtddfdtddfg}xPt||jD ]@\}}| t|d | |d	 |d	  | |d |d  qW d S )
NrQ   rS   )r    rR   r   )r!   )rR   )rQ   r   )r	   r0   lenr4   r  zipr5   )r   r   rN   rO   Zexpected_listr  r4   r   r   r   test_call_args_two_tuplex  s    
z!MockTest.test_call_args_two_tuplec             C   s  t tdddgd}| | | | gdddg | t| tdddgd}| | | | gdddg | t| t dd}| | | | gd	d
dg | t| G dd dt}t|d}| | | t t d}| | | | | gddddg | t| d S )NrQ   rR   rS   )rW   r    r!   r"   ghighic               @   s   e Zd ZdS )z/MockTest.test_side_effect_iterator.<locals>.FooN)r   r   r   r   r   r   r   Foo  s   r&  r   r   r   r   )	r	   r   r0   rX   r   r   rK   r   r   )r   r   r&  r   r   r   test_side_effect_iterator  s     

z"MockTest.test_side_effect_iteratorc             C   s`   xZt tfD ]N}tdtdf}||d}| t| | | d | t| | | d q
W d S )NrS   r   )rW   )r	   r   r_   r   rX   r0   )r   Klassiterabler~   r   r   r   $test_side_effect_iterator_exceptions  s    
z-MockTest.test_side_effect_iterator_exceptionsc             C   s   t  }tdddg|_| | | | gdddg | t| |j}| |ttg  dddg|_| | | | gdddg | t| |j}| |ttg  t }||_| | | | | gddd	d
g | t| | 	|j| d S )NrQ   rR   rS   r    r!   r"   r   r   r   r   )
r	   r   rW   r0   rX   r   r   r   r   r   )r   r   rW   Z	this_iterr   r   r   !test_side_effect_setting_iterator  s"    z*MockTest.test_side_effect_setting_iteratorc             C   s4   t dd}tdtg|_| | | gddg d S )NrR   )r3   rQ   )r	   r   r   rW   r0   )r   r   r   r   r   !test_side_effect_iterator_default  s    
z*MockTest.test_side_effect_iterator_defaultc             C   s  t  }|dd |dd |dd |dd |dd tddddifd	d
ddifddddifddi fdd
ddifg}x|D ]}|j|gdd q~W x<tddtddt dd dfD ]}| jt|j|gdd qW tddtddgtddtddgtddtddgg}x|D ]}|j|dd qW tddtddtddgtddtddgtddtddtddgtddtddtddtddtddgg}x"|D ]}| jt|j|dd qW d S )NrQ   rR   rS   )r    r   r   )r!   r    ))rS   r   r   )r	  )rQ   rR   r	  )rQ   rR   T)	any_orderr  r?   r      )r	   r   assert_has_callsrX   r|   )r   r   kallskallZ
kall_listsZ	kall_listr   r   r   test_assert_has_calls_any_order  s:    





$
.
z(MockTest.test_assert_has_calls_any_orderc       	   
   C   s  t ddddifdt dddd	d
difg}t  t dg}|t  jdd  |t jt i d	dg  g }xVt
 t fD ]F}|dd |dd |dd |dd |ddd |||f qW t
 }|  |d | jdd |jt i d	dg |||f xz|D ]r\}}xftt|D ]V}xNdD ]F}||||  }|| t|dkrH| t|jtt| qHW q>W q(W d S )NrQ   rR   r    rS   ))rS   r   r   )r!   r	  )rQ   r!   )r    )r?   r   )rQ   rR   rS   )r   r?   rA   extendspamrE   r  Zbamr   rT   r	   r   r   ranger  r/  rX   r|   r   reversed)	r   Zkalls1Zkalls2rF   r   r0  r%  steptheser   r   r   test_assert_has_calls  s<    
"






zMockTest.test_assert_has_callsc          	   C   s  ddd}t |d}|dddd |dd	d
dd |dddd ddi fddddifdi fg}|| |j|dd ||dd   |j|dd  dd ||d d  |j|d d dd tt|}| t || W d Q R X |j|dd | t ||dd   W d Q R X |j|dd  dd | t ||d d  W d Q R X |j|d d dd d S )Nc             S   s   d S )Nr   )r    r!   r"   r#   r   r   r   r]     s    z<MockTest.test_assert_has_calls_with_function_spec.<locals>.f)rI   rQ   rR   rS   )r!   r"   r   r   r   r.  )r"   r#   
         )r"   r	  )rQ   rR   rS   )r   r   r   r#   )r:  r;  r<  T)r-  r
  )N)r	   r/  r   r6  rX   r|   )r   r]   r   callsr   r   r   (test_assert_has_calls_with_function_spec  s0    



z1MockTest.test_assert_has_calls_with_function_specc             C   s   t  }|dd |dd |ddd |dd |jdd |jddd | t|j | t|jdd | jt|jdd d S )NrQ   rR   rS   )r    r   )r!   r   )r	   assert_any_callrX   r|   )r   r   r   r   r   test_assert_any_call:  s$    

zMockTest.test_assert_any_callc          	   C   s   ddd}t |d}|dddd |dd	d
dd |ddd |jdddd |dd	d
d |jdd	d
dd | jt|jdddd | t}|jdd W d Q R X | |jjt d S )Nc             S   s   d S )Nr   )r    r!   r"   r#   r   r   r   r]   U  s    z;MockTest.test_assert_any_call_with_function_spec.<locals>.f)rI   rQ   rR   rS   )r!   r"   r   r   r   r.  )r"   r#   )r    r!   r"   )r    r!   r"   r#   r   )r   )N)r	   r?  rX   r|   r   r   r   r   )r   r]   r   r   r   r   r   'test_assert_any_call_with_function_specT  s    


z0MockTest.test_assert_any_call_with_function_specc             C   sj   dd }t  }||_t|t|jg}x>|D ]6}|dd |dd | |jtddtddg q,W d S )Nc             S   s   d S )Nr   )r    r!   r   r   r   r]   i  s    z3MockTest.test_mock_calls_create_autospec.<locals>.frQ   rR   rS   r   )r   r]   r   r0   rk   r   )r   r]   objfuncsr  r   r   r   test_mock_calls_create_autospech  s    


z(MockTest.test_mock_calls_create_autospecc             C   s$   t jt dd}| dt| d S )NZ
sweet_func)r@   )r   r   rK   rB   rC   )r   r~   r   r   r   test_create_autospec_with_name{  s    z'MockTest.test_create_autospec_with_namec          	   C   s`   t  }| t |  W d Q R X | t |  W d Q R X t dd}|  |  d S )NT)unsafe)r	   rX   r   Zassert_foo_callZassret_foo_call)r   r~   r   r   r   test_mock_unsafe  s    
zMockTest.test_mock_unsafec          	   C   s<   t  }|j  |  | t |j  W d Q R X d S )N)r	   helloassert_not_calledrX   r|   )r   r~   r   r   r   test_assert_not_called  s
    
zMockTest.test_assert_not_calledc          	   C   sN   t  }| t |j  W d Q R X |  |j  |  |j  d S )N)r	   rX   r|   rH  assert_called)r   r~   r   r   r   test_assert_called  s    
zMockTest.test_assert_calledc          	   C   sd   t  }| t |j  W d Q R X |  |j  |  | t |j  W d Q R X d S )N)r	   rX   r|   rH  assert_called_once)r   r~   r   r   r   test_assert_called_once  s    
z MockTest.test_assert_called_oncec             C   s0   t  }|jddd d}| t|jj| d S )NrH  Zhero)r@   Zdaddyz call(daddy='hero', name='hello'))r	   rH  r0   rC   r4   )r   r~   textr   r   r   test_sorted_call_signature  s    z#MockTest.test_sorted_call_signaturec             C   sV   t  }t dd}t }|  |dd | |jd | | |jd | d S )N   rH  r   rQ   )r   r   indexr	   r0   r6   )r   r"   r%  r~   r   r   r   test_override_tuple_methods  s    z$MockTest.test_override_tuple_methodsc             C   s>   t dddgd}|jddd | |jt  | |jd  d S )Nr:  rR   rS   )r3   rW   T)r	   ri   r   r3   r0   rW   )r   r~   r   r   r   test_reset_return_sideeffect  s    z%MockTest.test_reset_return_sideeffectc             C   s<   t dddgd}|jdd | |jt  | |jd  d S )Nr:  rR   rS   )r3   rW   T)r3   )r	   ri   r   r3   r   rW   )r   r~   r   r   r   test_reset_return  s    zMockTest.test_reset_returnc             C   s<   t dddgd}|jdd | |jd | |jd  d S )Nr:  rR   rS   )r3   rW   T)rW   )r	   ri   r0   r3   rW   )r   r~   r   r   r   test_reset_sideeffect  s    zMockTest.test_reset_sideeffectc       	         s  G dd dt }G dd dt }G dd dt  ttttg}x<t|D ]0}||f fdd	 ||f fd	d	 qFW x|D ]}xt td
dfD ]}| }|j|j	|j
f x||fdgdgfgD ]\}}xt td
dfD ]}|j|f| |j | tt|d | tt|d d|kr:| tt|dd  |j|f| | tt|d |j	 | tt|d d|kr| tt|dd  qW qW qW qW d S )Nc               @   s   e Zd ZdZdS )z)MockTest.test_mock_add_spec.<locals>._OnerQ   N)r   r   r   r   r   r   r   r   _One  s   rW  c               @   s   e Zd ZdZdS )z)MockTest.test_mock_add_spec.<locals>._TworR   N)r   r   r   r   r   r   r   r   _Two  s   rX  c               @   s   e Zd Zd Z ZZdS )z-MockTest.test_mock_add_spec.<locals>.AnythingfourN)r   r   r   r   r   threer   r   r   r   Anything  s   r[  c                s
   |  dS )N)rI   r   )K)r[  r   r   r     r   z-MockTest.test_mock_add_spec.<locals>.<lambda>c                s
   |  dS )N)rJ   r   )r\  )r[  r   r   r     r   T)rJ   r   r   rZ  rJ   )rK   r	   r   r
   r   r   r   r  r   r   rZ  mock_add_specrX   r   r   setattr)	r   rW  rX  Zklassesr(  rO   r   OneTwor   )r[  r   test_mock_add_spec  s>    
zMockTest.test_mock_add_specc                s   xzt tfD ]n}|  t   t | tt  |   d  d j_ t | 	t d | t fdd q
W d S )Nr?   r   c                  s    d S )Nr?   r   r   )r   r   r   r     r   z;MockTest.test_mock_add_spec_magic_methods.<locals>.<lambda>)
r   r   r   r]  rK   rX   r   r  r3   r0   )r   r(  r   )r   r    test_mock_add_spec_magic_methods  s    

z)MockTest.test_mock_add_spec_magic_methodsc             C   s   xt tttfD ]}| }t |_|  | |jt g | |jt g | }tdd|_	|	  | |jg  | |jg  | }t  |_
|
  | |jg  | |jg  qW d S )Nr@   )r@   )r
   r	   r   r   r?   r0   r6   r   rk   rA   rE   )r   r(  r   r   r   r   test_adding_child_mock  s     
zMockTest.test_adding_child_mockc             C   sD   x>t tfD ]2}| }t |_|   | |jt t  g q
W d S )N)r	   r   r3   r0   rk   r   )r   r(  r   r   r   r   test_adding_return_value_mock(  s
    z&MockTest.test_adding_return_value_mockc             C   s   G dd dt }t }t |d}t |d}| }| |j | }| |j ||d ||d |  |  | 	|j
t t g d S )Nc               @   s   e Zd ZdZdZdS )z'MockTest.test_manager_mock.<locals>.Foor   r   N)r   r   r   r   r   r   r   r   r   r&  2  s   r&  r   r   )rK   r	   r   r   r   r   attach_mockr   r   r0   rk   r   )r   r&  managerp1p2Zmock_oneZmock_twor   r   r   test_manager_mock1  s    zMockTest.test_manager_mockc             C   sl   xft tfD ]Z}| }t dd|_tdd|_t| t| | |jt t g | |j	g  q
W d S )NrS   )r3   g      @)
r	   r   r  	__float__r   floatr0   rk   r   r6   )r   r(  r~   r   r   r   test_magic_methods_mock_callsG  s    z&MockTest.test_magic_methods_mock_callsc             C   s<   t jdd}|d}| }|d}| }| || d S )Ndata)	read_dataza-namezanother-name)r   rn   readr0   )r   mocked_openf1Zf1_dataf2Zf2_datar   r   r    test_mock_open_reuse_issue_21750R  s    z)MockTest.test_mock_open_reuse_issue_21750c             C   sV   t jdd}|d}dd |D }| |d d | |d d	 | t|g  d S )
NzRemarkable
Norwegian Blue)rn  za-namec             S   s   g | ]}|qS r   r   )r   liner   r   r   r   _  s    z=MockTest.test_mock_open_dunder_iter_issue.<locals>.<listcomp>r   zRemarkable
rQ   zNorwegian Blue)r   rn   r0   r   )r   rp  rq  linesr   r   r    test_mock_open_dunder_iter_issueZ  s    z)MockTest.test_mock_open_dunder_iter_issuec          	   C   sX   t t jdd}t d|0 |j}|j}td|_dd }| t| W d Q R X d S )NZJLV)r@   ztempfile.NamedTemporaryFilezTest 2 Errorc               S   s   t  d d S )NZasd)tempfileNamedTemporaryFilewriter   r   r   r   attemptk  s    z.MockTest.test_mock_open_write.<locals>.attempt)	r   rn   r   r   r3   ry  OSErrorrW   rX   )r   Zmock_namedtempZmock_filehandleZ
mock_writerz  r   r   r   test_mock_open_writed  s    
zMockTest.test_mock_open_writec             C   sJ   t jdd}dd |jj_|  }|  }| d| | d| d S )Nzfoo
barn)rn  c              W   s   dS )Nabcr   )rN   r   r   r   r   q  r   z8MockTest.test_mock_open_alter_readline.<locals>.<lambda>r}  )r   rn   r3   readlinerW   r0   )r   Zmopenfirstsecondr   r   r   test_mock_open_alter_readlineo  s    

z&MockTest.test_mock_open_alter_readlinec             C   s   t jdd}|d}|  | d|  | d|  | d|  | d|  | g |  | g |  d S )Nr?   )rn  rA   r	  )r   rn   ro  r0   r~  	readlines)r   _openr$  r   r   r   test_mock_open_after_eofw  s    z!MockTest.test_mock_open_after_eofc             C   s  xt tfD ]}| }t|}||_| | | | t|| |  | | | | t|| | }|j|_| 	dt|j | 	dt|j |  | 	dt|j | 	dt|j | }t|}| |_||j_| t|| | t| | qW d S )Nzname='mock.a')
r	   r   rC   r3   r   r0   ri   r    r!   rB   )r   r(  r~   Zoriginal_reprr   r   r   test_mock_parents  s,    zMockTest.test_mock_parentsc             C   s   t tttf}x|D ]}x|D ]z}| }|dd}||d | |j| | dt| |j	d | 
|jtj	dg | 
|jtj	dg qW qW d S )Nr?   )r@   rA   zname='mock.bar'rQ   )r	   r   r   r
   re  r   rA   rB   rC   rE   r0   rk   r   r6   )r   classesr(  Klass2r~   m2r   r   r   test_attach_mock  s    


zMockTest.test_attach_mockc             C   s   t tttf}xxt tfD ]l}xf|D ]^}| }|dd}||d | | | | dt| |  | 	|j
t    q W qW d S )Nr?   )r@   r3   zname='mock()')r	   r   r   r
   re  r   rB   rC   r?   r0   rk   r   r  )r   r  r(  r  r~   r  r   r   r   test_attach_mock_return_value  s    

z&MockTest.test_attach_mock_return_valuec             C   sj   xdt  t t t fD ]L}| t|d |`| t|d |`| t|d | 	t
t|d qW d S )Nr~   r]   )r	   r   r   r
   r2   hasattrr~   r.   r]   rX   r   r   )r   r   r   r   r   test_attribute_deletion  s    z MockTest.test_attribute_deletionc             C   s   xt  t t t fD ]t}d|_| t|d | |jd |`| t|d d|_| t|d | |jd |`| t|d qW d S )NrS   r?   r   )	r	   r   r   r
   r?   r2   r  r0   r.   )r   r   r   r   r   7test_mock_does_not_raise_on_repeated_attribute_deletion  s    z@MockTest.test_mock_does_not_raise_on_repeated_attribute_deletionc          
   C   s@   x:t  t t t fD ]"}|`| t
 |`W d Q R X qW d S )N)r	   r   r   r
   r?   rX   r   )r   r   r   r   r   4test_mock_raises_when_deleting_nonexistent_attribute  s
    z=MockTest.test_mock_raises_when_deleting_nonexistent_attributec             C   s,   t  }d|_|`|  | t|d d S )NTrg   )r	   rg   ri   r.   r  )r   r   r   r   r   /test_reset_mock_does_not_raise_on_attr_deletion  s
    z8MockTest.test_reset_mock_does_not_raise_on_attr_deletionc             C   s>   x8t  t fD ](}| |t t|_| |t |j qW d S )N)r	   r   r  r   r   r   r?   )r   r   r   r   r   test_class_assignable  s
    zMockTest.test_class_assignablec             C   s8   |  tj | ttjt | tt jt d S )N)assertIsNotNoner   r@   r0   r   r   )r   r   r   r   test_name_attribute_of_call  s    z$MockTest.test_name_attribute_of_callc             C   s8   |  tj | ttjt | tt jt d S )N)r  r   rh   r0   r   r   )r   r   r   r   test_parent_attribute_of_call  s    z&MockTest.test_parent_attribute_of_callc             C   sP   dd }t  }t||_|dd | t|jd | |jtddg d S )Nc             S   s   d S )Nr   )r    r!   r   r   r   r?     s    zBMockTest.test_parent_propagation_with_create_autospec.<locals>.foorQ   rR   )r	   r   rg   rX   r   r0   rk   r   )r   r?   r   r   r   r   ,test_parent_propagation_with_create_autospec
  s    
z5MockTest.test_parent_propagation_with_create_autospecN)tr   r   r   r,   r=   r>   rG   rL   r\   r^   ra   r   
skipUnlessr   platformre   rl   rm   ro   ru   rw   rz   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   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,  r2  r9  r>  r@  rA  rD  rE  rG  rJ  rL  rN  rP  rS  rT  rU  rV  ra  rb  rc  rd  ri  rl  rs  rv  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r*   *   s   	)"




7N
#
,(!
	5	

r*   __main__)r   r   rw  r   Zunittest.test.testmock.supportr   r   Zunittest.mockr   r   r   r   r   r	   r
   r   r   r   r   rK   r   r   r   r*   r   mainr   r   r   r   <module>   s0   4             z