o
    KXh)                    @   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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mZmZ G dd deZG dd	 d	eZG d
d dZdd ZG dd dejZedkrre   dS dS )    N)	ALWAYS_EQ)is_instancemock)callDEFAULTpatchsentinel	MagicMockMockNonCallableMockNonCallableMagicMock	AsyncMock_Call	_CallListcreate_autospecInvalidSpecErrorc                   @   s(   e Zd Zdd Zdd Zdd ZeZdS )Iterc                 C   s   t g d| _d S )NthisisZaniter)r   thingself r   I/opt/python-3.10.19/usr/lib/python3.10/unittest/test/testmock/testmock.py__init__      zIter.__init__c                 C   s   | S Nr   r   r   r   r   __iter__      zIter.__iter__c                 C   s
   t | jS r   )nextr   r   r   r   r   r"         
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      d S r   r   r   abcdr   r   r   meth        zSomething.methc                 C   r)   r   r   )clsr+   r,   r-   r.   r   r   r   cmeth"   r!   zSomething.cmethc                 C   r)   r   r   r+   r,   r-   r.   r   r   r   smeth%   r!   zSomething.smethr   )r$   r%   r&   r/   classmethodr2   staticmethodr4   r   r   r   r   r(      s    
r(   c                   @   s   e Zd ZdZdZdZdS )TyposN)r$   r%   r&   	autospect	auto_specset_specr   r   r   r   r7   )   s    r7   c                 C   r)   r   r   r+   r   r   r   	something/   r0   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'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 Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2dadb Z3dcdd Z4dedf Z5dgdh Z6didj Z7dkdl Z8dmdn Z9dodp Z:dqdr Z;dsdt Z<dudv Z=dwdx Z>dydz Z?d{d| Z@d}d~ ZAdd ZBdd ZCdd ZDdd 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 Zsdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd Zd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 (  MockTestc                 C   s   t d d S )Nzfrom unittest.mock import *)execr   r   r   r   test_all4   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 correctly(call_args_list not initialised correctlyz&method_calls not initialised correctlyZ_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_constructor;   s:   





zMockTest.test_constructorc                 C   s   t d d}| |jd d S )NrF   z(return value in constructor not honoured)r   rL   rF   rP   r   r   r    test_return_value_in_constructorW   s   
z)MockTest.test_return_value_in_constructorc                 C   s*   dd }t |}d|j_| | d d S )Nc                   S   r)   r   r   r   r   r   r   f^   r0   z9MockTest.test_change_return_value_via_delegate.<locals>.f   )r   r   rF   rC   r   rT   r   r   r   r   %test_change_return_value_via_delegate]   s   z.MockTest.test_change_return_value_via_delegatec                 C   sP   dd }t |}t |j_| t |  W d    d S 1 s!w   Y  d S )Nc                   S   r)   r   r   r   r   r   r   rT   e   r0   z8MockTest.test_change_side_effect_via_delegate.<locals>.f)r   	TypeErrorr   side_effectassertRaisesrV   r   r   r   $test_change_side_effect_via_delegated   s   
"z-MockTest.test_change_side_effect_via_delegatec                 C   s   t dd}| dt| | dt| t| t  dft dddfg}|D ]P\}}| d| t|j | d| t|  | d| t| j | d	| t|  | d
| t|   | d| t|  jj j q'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idr_   r\   Zbingbaz)r   r   mocksr^   r   r   r   	test_reprl   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                   @      e Zd ZdS )z'MockTest.test_repr_with_spec.<locals>.XNr$   r%   r&   r   r   r   r   X}       rh   specz
 spec='X' spec_setz spec_set='X' r\   )rk   r^   z name='foo' r]   rk   )objectr   r`   ra   rJ   r   rh   r   r   r   r   test_repr_with_spec|   s$   


zMockTest.test_repr_with_specc                    s   t  }dd }||_| jt|dddd |jdddd g d  fdd}||_| | | | gg d	d
 t tjd}| |jtjd dd }t |tjd}| | tj d S )Nc                  _      t d)NZkablooie)SystemError)argskwargsr   r   r   effect      z)MockTest.test_side_effect.<locals>.effectrU         fishrU   rw   rx   c                            S r   popr   resultsr   r   ru      rv   rx   rw   rU   zside effect not used correctlyrY   z#side effect in constructor not usedc                   S      t S r   r   r   r   r   r   rY      r!   z.MockTest.test_side_effect.<locals>.side_effect)rY   rF   )	r   rY   rZ   rr   assert_called_withrC   r	   
SideEffectRETURN)r   r   ru   rY   r   r   r   test_side_effect   s$   zMockTest.test_side_effectc                    s   g d  fdd}dd }t |}g d|_| | | | gg dd g d t |}||_| | | | gg dd d S )	Nr{   c                      r|   r   r}   r   r   r   r   ru      rv   z2MockTest.test_autospec_side_effect.<locals>.effectc                   S   r)   r   r   r   r   r   r   rT      r0   z-MockTest.test_autospec_side_effect.<locals>.fz1side effect not used correctly in create_autospecr   z'callable side effect not used correctly)r   rY   rC   )r   ru   rT   r   r   r   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   r)   r   r   r   r   r   r   rT      r0   z7MockTest.test_autospec_side_effect_exception.<locals>.fzBazinga!)r   
ValueErrorrY   assertRaisesRegexrV   r   r   r   #test_autospec_side_effect_exception   s   
z,MockTest.test_autospec_side_effect_exceptionc              	   C   s  G dd dt }tj |d | td t|j W d    n1 s&w   Y  | td tjj |ddd  W d    n1 sGw   Y  | td tjj |jd	dd  W d    n1 siw   Y  | td
 tjj |d|jd  W d    n1 sw   Y  | td tjj |d|jd  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nc                   @   s   e Zd ZG dd deZdS )z&MockTest.test_autospec_mock.<locals>.Ac                   @   s   e Zd ZdZdS )z(MockTest.test_autospec_mock.<locals>.A.BN)r$   r%   r&   Cr   r   r   r   B       r   N)r$   r%   r&   rn   r   r   r   r   r   A   s    r   r   z8Cannot autospec attr 'B' from target <MagicMock spec='A'z(Cannot autospec attr 'B' from target 'A'TZautospecz-Cannot autospec attr 'C' as the patch target r   z!Cannot spec attr 'B' as the spec rj   z%Cannot spec attr 'B' as the spec_set rl   )rn   r   r   r   r   r   r   start)r   r   r   r   r   test_autospec_mock   s<   "zMockTest.test_autospec_mockc                 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 )Nr<   child)r^   parentrk   r<   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SomethingElser<   r   rY   rF   
reset_mockrC   
_mock_namerM   rN   rA   rB   rD   rG   rH   rI   
mock_callsrO   )r   r   rk   r   r<   rF   r   r   r   test_reset_mock   sV   





zMockTest.test_reset_mockc                 C   s   t  }||_|  d S r   )r   rF   r   rP   r   r   r   test_reset_mock_recursion  s   z"MockTest.test_reset_mock_recursionc                 C   s   t  }|  d S r   )r   	mock_openr   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
jtjfd | |j
ji 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 setrU   zcall_count incorrectzcall_args not setr@   )keyzincorrect return valuerw   r   zcall_args_list not set)r   rE   r   rF   rC   r   r	   ArgrB   rD   rG   rs   rt   rH   ZReturnValueZKeyArg)r   r   resultZret_valr   r   r   	test_call  sP   



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jtjf | |jjdtji | 	|jdk d S )N)kwr   r   za long sequence)
r   r	   r   ZKwargrC   rH   rG   rs   rt   rA   rP   r   r   r   test_call_args_comparison@  s"   

z"MockTest.test_call_args_comparisonc                 C   s2  t  }| ||k | ||k | |t  k | |t  k | |t jk | |t jk | t j|k | t j|k | |tk | |tk t t  }t t j}| ||k | ||k | ||k | ||k | |tk | |tk | |dk | |dk d S )NrU   )r   r
   rE   rA   ANYr   r   )r   ZmmZcall1Zcall2r   r   r   test_calls_equal_with_anyV  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 )NrU   rw   rx   rz   Znothingr+   r,   )r   r   rZ   AssertionErrorr   rP   r   r   r   test_assert_called_withr  s   z MockTest.test_assert_called_withc                 C   s    t  }|t   |tj d S r   )r
   r   r   r   r   mr   r   r   test_assert_called_with_any  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    n1 sAw   Y  | |jjt d S )Nc                 S   r)   r   r   r3   r   r   r   rT     r0   z9MockTest.test_assert_called_with_function_spec.<locals>.frj   rU   rw   rx   r,   r-   r+   r,   r-      er   )r   r   rZ   r   assertIsInstance	exception	__cause__rX   r   rT   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 )NrU   rw   rx   r   r   )r   rZ   r   r   r   r   r   _check  s   

z<MockTest.test_assert_called_with_method_spec.<locals>._checkrj   )r   r(   r/   r2   r4   )r   r   r   r   r   r   #test_assert_called_with_method_spec  s   z,MockTest.test_assert_called_with_method_specc                 C   s   d}|  t|d t   W d    n1 sw   Y  |  t|d tdd  W d    d S 1 s<w   Y  d S )Nz"Expected '{0}' to have been calledr   Z	test_namer]   )r   r   formatr   assert_called)r   msgr   r   r   $test_assert_called_exception_message  s   "z-MockTest.test_assert_called_exception_messagec                    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\   r_   rw   rc   c                      s    j ddddS )Nbobr_   rw   r   assert_called_once_withr   r   r   r   <lambda>      z7MockTest.test_assert_called_once_with.<locals>.<lambda>)r   r   rZ   r   r   r   r   r   r   test_assert_called_once_with  s   
z%MockTest.test_assert_called_once_withc                    s6   t    d  d | ttd fdd d S )NrU   rw   zCalls: [call(1), call(2)]c                      s
     dS )Nrw   r   r   r   r   r   r        
 zAMockTest.test_assert_called_once_with_call_list.<locals>.<lambda>)r   r   r   reescaper   r   r   r   &test_assert_called_once_with_call_list  s   
z/MockTest.test_assert_called_once_with_call_listc                 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    n1 sAw   Y  | |jjt |ddd | t|jddd | t|jddd d S )Nc                 S   r)   r   r   r3   r   r   r   rT     r0   z>MockTest.test_assert_called_once_with_function_spec.<locals>.frj   rU   rw   rx   r   r   r   r            r   )r   r   rZ   r   r   r   r   rX   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 namerx   zmethod returned wrong valuez!method didn't record being called)r   r<   rE   r   rC   rF   rB   r   r   r<   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 )Nr<   z attribute name not set correctlyz"attribute parent not set correctly)r   r<   rC   r   rM   r   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 )Nrx   ry   r   )caker<   )r   r   z#method calls not recorded correctly)rx   rz   zsomething_else.something)r   r<   something_elser	   ZCakerC   rI   rP   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 )Nr   r<   r   	different)r<   r   r   rU   xr   Zmore)somer   )r   r<   rC   rI   rP   r   r   r    test_method_calls_compare_easily  s&   


z)MockTest.test_method_calls_compare_easilyc              	   C   sH   dgdfD ]}dD ]}t di ||i}|j | tdt|d q	qd S )Nr<   r   )rk   rm   z-Mock object has no attribute 'something_else'r   r   )r   r<   r   AttributeErrorgetattr)r   rk   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>.Somethingrx   Nc                 S   r)   r   r   r   r   r   r   y<  r0   z,MockTest.test_from_spec.<locals>.Something.y)r$   r%   r&   r   __something__r   r   r   r   r   r(   9  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_attributesrj   )rn   r   )r   r(   r   r   r   r   test_from_spec8  s   zMockTest.test_from_specc                 C   sJ   t  }t |d}| | |  |  |dddd |jdddd d S )NwrapsrU   rw   rx   ry   )r   rC   r   r   r   realr   r   r   r   test_wraps_callsR  s   
zMockTest.test_wraps_callsc                    s8   G dd dt }| }t|d | t fdd d S )Nc                   @   rf   )zFMockTest.test_wraps_prevents_automatic_creation_of_mocks.<locals>.RealNrg   r   r   r   r   Real_  ri   r   r   c                      r|   r   )Znew_attrr   r   r   r   r   e      zJMockTest.test_wraps_prevents_automatic_creation_of_mocks.<locals>.<lambda>)rn   r   rZ   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 )Nr   rx   )r   rF   rC   rA   rB   r   r   r   r   ,test_wraps_call_with_nondefault_return_valueh  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  s    
r   r   c                          j S r   ry   r   r   r   r   r   z      z0MockTest.test_wraps_attributes.<locals>.<lambda>rU   rw   rx   ry   )	rn   r   rC   r   rZ   r   assertNotEqualZfrogr   )r   r   r   r   r   r   r   test_wraps_attributesr  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                   @      e Zd Zdd ZdS )z[MockTest.test_customize_wrapped_object_with_side_effect_iterable_with_default.<locals>.Realc                 S      t jS r   )r	   ORIGINAL_VALUEr   r   r   r   method     zbMockTest.test_customize_wrapped_object_with_side_effect_iterable_with_default.<locals>.Real.methodNr$   r%   r&   r   r   r   r   r   r         r   r   )rn   r   r	   VALUE1r   r   rY   rC   r   rZ   StopIterationr   r   r   r   r   r   r   Dtest_customize_wrapped_object_with_side_effect_iterable_with_default  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                   @   r   )zNMockTest.test_customize_wrapped_object_with_side_effect_iterable.<locals>.Realc                 S   r)   r   r   r   r   r   r   r     r0   zUMockTest.test_customize_wrapped_object_with_side_effect_iterable.<locals>.Real.methodNr   r   r   r   r   r     r   r   r   )
rn   r   r	   r   VALUE2r   rY   rC   rZ   r   r   r   r   r   7test_customize_wrapped_object_with_side_effect_iterable  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                   @   r   )zOMockTest.test_customize_wrapped_object_with_side_effect_exception.<locals>.Realc                 S   r)   r   r   r   r   r   r   r     r0   zVMockTest.test_customize_wrapped_object_with_side_effect_exception.<locals>.Real.methodNr   r   r   r   r   r     r   r   r   )rn   r   RuntimeErrorr   rY   rZ   r   r   r   r   8test_customize_wrapped_object_with_side_effect_exception  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                   @   r   )zNMockTest.test_customize_wrapped_object_with_side_effect_function.<locals>.Realc                 S   r)   r   r   r   r   r   r   r     r0   zUMockTest.test_customize_wrapped_object_with_side_effect_function.<locals>.Real.methodNr   r   r   r   r   r     r   r   c                   S   r   r   )r	   VALUEr   r   r   r   rY     r   zUMockTest.test_customize_wrapped_object_with_side_effect_function.<locals>.side_effectr   )rn   r   r   rY   rC   r	   r   )r   r   rY   r   r   r   r   r   7test_customize_wrapped_object_with_side_effect_function  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                   @   r   )zFMockTest.test_customize_wrapped_object_with_return_value.<locals>.Realc                 S   r)   r   r   r   r   r   r   r     r0   zMMockTest.test_customize_wrapped_object_with_return_value.<locals>.Real.methodNr   r   r   r   r   r     r   r   r   )rn   r   r	   r   r   rF   rC   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                   @   r   )zVMockTest.test_customize_wrapped_object_with_return_value_and_side_effect.<locals>.Realc                 S   r)   r   r   r   r   r   r   r     r0   z]MockTest.test_customize_wrapped_object_with_return_value_and_side_effect.<locals>.Real.methodNr   r   r   r   r   r     r   r   r   )rn   r   r	   r   r   r   rY   ZWRONG_VALUErF   rC   rZ   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                   @   r   )zWMockTest.test_customize_wrapped_object_with_return_value_and_side_effect2.<locals>.Realc                 S   r)   r   r   r   r   r   r   r     r0   z^MockTest.test_customize_wrapped_object_with_return_value_and_side_effect2.<locals>.Real.methodNr   r   r   r   r   r     r   r   r   c                   S   r   r   r   r   r   r   r   r     r0   z[MockTest.test_customize_wrapped_object_with_return_value_and_side_effect2.<locals>.<lambda>)rn   r   r   rY   r	   r   rF   rC   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                   @   r   )z^MockTest.test_customize_wrapped_object_with_return_value_and_side_effect_default.<locals>.Realc                 S   r)   r   r   r   r   r   r   r     r0   zeMockTest.test_customize_wrapped_object_with_return_value_and_side_effect_default.<locals>.Real.methodNr   r   r   r   r   r     r   r   r   )rn   r   r	   r   r   r   rY   r   rF   rC   rZ   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   s   ddi}t |d}| |dd | |d t  | d|v  d|j_| |dd tj|j_| |dd | |dd  | |d t  | d|v  d|d< | |dd | |d t  | d|v  |d= | |dd  d S )Nr\   r_   r   rF   rc   spam)r
   rC   getr   rA   rF   r	   r   )r   dataZwrapped_dictr   r   r   test_magic_method_wraps_dict  s$   

z%MockTest.test_magic_method_wraps_dictc                 C   sT   G dd d}t |d}| }| |dd | |d d | | d d S )Nc                   @      e Zd Zdd Zdd ZdS )z3MockTest.test_magic_method_wraps_class.<locals>.Fooc                 S   s   |S r   r   )r   indexr   r   r   __getitem__  r!   z?MockTest.test_magic_method_wraps_class.<locals>.Foo.__getitem__c                 S      dS Nr\   r   r   r   r   r   __custom_method__  r!   zEMockTest.test_magic_method_wraps_class.<locals>.Foo.__custom_method__N)r$   r%   r&   r  r  r   r   r   r   Foo  s    r  r   rw   r\   )r
   rC   r  r  )r   r  klassobjr   r   r   test_magic_method_wraps_class  s   
	z&MockTest.test_magic_method_wraps_classc                 C   4   t td}| t| t tdd}| t| d S Nr   r\   )r   r   rZ   rP   r   r   r   test_exceptional_side_effect     
z%MockTest.test_exceptional_side_effectc                 C   r  r  )r   KeyboardInterruptrZ   rP   r   r   r    test_baseexceptional_side_effect%  r  z)MockTest.test_baseexceptional_side_effectc                 C   s   t  }| td|j d S )Nz
not called)r   r   r   r   rP   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geoffreyr]   z'Expected 'geoffrey' to be called once\.)r   r   r   r   rP   r   r   r   $test_assert_called_once_with_message3  s
   
z-MockTest.test_assert_called_once_with_messagec                    s2   t   | t fdd d _|  jd d S )Nc                      r   r   )r$   r   r   r   r   r   <  r   z'MockTest.test__name__.<locals>.<lambda>r\   )r   rZ   r   r$   rC   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                   @   rf   )z-MockTest.test_spec_list_subclass.<locals>.SubNrg   r   r   r   r   SubC  ri   r  r\   rj   rx   )listr   appendr   rZ   r   r   )r   r  r   r   r   r   test_spec_list_subclassB  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                   @   rf   )z#MockTest.test_spec_class.<locals>.XNrg   r   r   r   r   rh   M  ri   rh   rj   r   rl   )rn   r   r   assertIs	__class__rC   r$   ro   r   r   r   test_spec_classL  s   

zMockTest.test_spec_classc                 C   s   G dd d}t |d}| || t | d}| || | |j| | t  jjd t |d}| || t | d}| || d S )Nc                   @   rf   )z2MockTest.test_spec_class_no_object_base.<locals>.XNrg   r   r   r   r   rh   a  ri   rh   rj   r   rl   )r   r   r!  r"  rC   r$   ro   r   r   r   test_spec_class_no_object_base`  s   

z'MockTest.test_spec_class_no_object_basec                    sL   G dd dt }t|d d _t|d  fdd}d _| t| d S )Nc                   @      e Zd ZdZdS )z8MockTest.test_setting_attribute_with_spec_set.<locals>.Xrx   N)r$   r%   r&   r   r   r   r   r   rh   u  r   rh   rj   r\   rl   c                      
   d _ d S r  r   r   r   r   r   set_attr|  r#   z?MockTest.test_setting_attribute_with_spec_set.<locals>.set_attr)rn   r   r   r   rZ   r   )r   rh   r'  r   r   r   $test_setting_attribute_with_spec_sett  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   r  Nrx   r   r   r   r   r   _get  r!   z=MockTest.test_subclass_with_properties.<locals>.SubClass._getc                 S   rq   )Nzstrange error)	NameError)r   valuer   r   r   _set  rv   z=MockTest.test_subclass_with_properties.<locals>.SubClass._setN)r$   r%   r&   r2  r5  propertysome_attributer   r   r   r   SubClass  s    r8  rl   rx   c                      r&  r1  )r7  r   sr   r   test  r#   z4MockTest.test_subclass_with_properties.<locals>.testc                      r&  )Nr_   r\   r   r9  r   r   r;    r#   )r   rC   r7  rZ   r3  r   )r   r8  r;  r   r9  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 r   )Z_increment_mock_callZ
_mock_callr   r   r   r   __call__  s   

z,MockTest.test_setting_call.<locals>.__call__onetwo)r   typer>  r   rZ   rX   )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 r   )r   r9  r   r   r   r     r   z#MockTest.test_dir.<locals>.<lambda>r    )
r   setdirrC   r+   r,   r`   r-   r.   r    )r   r   attrs
type_attrsr   r   r   test_dir  s   
zMockTest.test_dirc                 C   sX   t tjd}tttj}tt|}| t ||  d|_| t|dd d S )Nrj   rx   versionrU   )r   unittestTestCaserG  rH  rC   rL  count)r   r   Ztestcase_attrsrI  r   r   r   test_dir_from_spec  s   zMockTest.test_dir_from_specc                 C   s\   t tdd}|  zttt }ttt}| t ||  W |  d S |  w )NZ
FILTER_DIRF)	r   rn   r   r   rG  rH  r   rC   stop)r   ZpatcherrI  rJ  r   r   r   test_filter_dir  s   zMockTest.test_filter_dirc                 C   s6   t  }d|j_| dt| |`| dt| d S )NrU   r   )r   r   rF   r`   rH  rJ   rP   r   r   r   ,test_dir_does_not_include_deleted_attributes  s
   z5MockTest.test_dir_does_not_include_deleted_attributesc                 C   s   t dd}| |jd tdd}| |jd tdt d}t di |}| t| | |j d | |jt t  }|jdi | | t| | |j d | |jt d S )Nr_   r<  !   )rY   zfoo.bar.return_valuer\   r   )	r   rC   r\   r
   KeyErrorrZ   r_   r   Zconfigure_mock)r   r   rt   r   r   r   test_configure_mock  s    

zMockTest.test_configure_mockc                 O   sR   |  |}||i | W d    n1 sw   Y  t|j}| || d S r   )rZ   strr   rC   )r   r   messagefuncrs   rt   contextr   r   r   r   assertRaisesWithMsg  s
   
zMockTest.assertRaisesWithMsgc              
   C   s  t  }d}d}d}| jt|||f |jddddd |jddddd	 |jj|jjg}|D ]}d
}d}d}| jt|||f |ddddd q-|D ]}d
}d}d}| jt|||f |dd qH|D ]}d
}d}d}| t|||f |ddd q`|D ]}d
}d}d}| t|||f | qyd S )Nznot called.zmock(1, '2', 3, bar='foo')z0expected call not found.
Expected: %s
Actual: %srU   2rx   r\   )r_   r<  zfoo(1, '2', 3, foo='foo')zfoo(1, '2', 3, bar='foo')zfoo(bar='foo')zfoo(1, 2, 3)rw   zfoo())r   r[  r   r   r\   r   )r   r   actualexpectedrX  Z	assertersr/   r   r   r   'test_assert_called_with_failure_message  sV   
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	 
   t tddfD ]}t di |}t|j ddi fg}| |j| t di |}|   ddi fddi fg}| |j| | | jt g t di |}|ddd | |jtddd  | | jtdd  | |  jtd  t di |}|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 di |}t| j	 
  ddi f}| |jd | | | jtj	 
    | | j	 jt
    | | j	 j
jt    qd S )NT r   rU   rw   rx   r   r   r   z().foor{   r\   z
().foo.barz().foo.bar().bazr_   r]   zfoo.__int__r+   za()z().foo.bar().baz().__int__)r
   r!  r   rC   r\   r  r   dictrF   r_   rc   	call_listr-  r+   r,   r-   __int__)r   r   r^  rt   Z	last_callr   r   r   test_mock_calls=  s   






zMockTest.test_mock_callsc                 C   sF   t  }| }|  | |jt t  g | |jt g d S r   )r   ZwibblerC   r   r   )r   r   r   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 NrU   r   )r   r\   r<   r   r   r   r   rC   r   r   r   r   test_mock_call_not_equal_leaf     z&MockTest.test_mock_call_not_equal_leafc                 C   sF   t  }|   | |jd t   | |jd t  d S rg  r   r\   r_   r   r   r   rc   r   r   r   r   !test_mock_call_not_equal_non_leaf  ri  z*MockTest.test_mock_call_not_equal_non_leafc                 C   s8   t  }|jdd  | |jd tjdd  d S )NrU   r   rw   )r   r\   r_   rC   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   rj  r   r   r   r   &test_mock_call_not_equal_non_leaf_attr  s   
z/MockTest.test_mock_call_not_equal_non_leaf_attrc                 C   s.   t  }|j  | |jd t   d S rm  )r   r\   r_   r   r   r   r   r   r   r   2test_mock_call_not_equal_non_leaf_call_versus_attr  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()rU   zcall.foo().bar()rw   zcall.foo().bar().baz.bob())r   r\   r_   rc   r   rC   ra   r   r   r   r   r   test_mock_call_repr  s
   zMockTest.test_mock_call_reprc                 C   s0   t  }||_t|  | t| d d S )Nz<Mock name='mock\(\)' id='\d+'>)r   r\   ra   ZassertRegexr   r   r   r   test_mock_call_repr_loop  s   z!MockTest.test_mock_call_repr_loopc                 C   s   t  }| t g|jv  d S r   )r   rA   r   r   r   r   r   r   test_mock_calls_contains  s   z!MockTest.test_mock_calls_containsc                 C   sh   G dd dt }| }| |j| | | | G dd dt }| }| |j| | | | d S )Nc                   @   rf   )+MockTest.test_subclassing.<locals>.SubclassNrg   r   r   r   r   Subclass  ri   rt  c                   @   r   )rs  c                 [   s   t di |S )Nr   )r   )r   rt   r   r   r   _get_child_mock  s   z;MockTest.test_subclassing.<locals>.Subclass._get_child_mockN)r$   r%   r&   ru  r   r   r   r   rt    r   )r   r   r\   assertNotIsInstance)r   rt  r   r   r   r   test_subclassing  s   zMockTest.test_subclassingc                    s   t  t t t g} fdd}|D ]=}|| t|r1|  |dd |dd |  || |  |jjddd |d d |  || qd S )Nc                    s@   d}|D ]}t | |} |t  |t  |g  qd S )N)rH   rI   r   )r   r   r   r  rC   )r   namesr^   attrr   r   r   assert_attrs  s   
z-MockTest.test_arg_lists.<locals>.assert_attrsrU   rw   rx   r;   )	r   r
   r   r   callabler   r\   r_   rc   )r   rd   rz  r   r   r   r   test_arg_lists  s(   


zMockTest.test_arg_listsc                 C   s   t  }|ddd |ddd | t|jd | |jjd | |jjtdd dtddfdtddfg}t||jD ] \}}| t|d | |d	 |d	  | |d |d  q?d S )
NrU   rx   r;   rw   r   r,   )rw   rU   r   )	r   rC   lenrG   rs   rt   rb  ziprH   )r   r   Zexpected_listr^  rG   r   r   r   test_call_args_two_tuple  s   z!MockTest.test_call_args_two_tuplec                 C   s  t tg dd}| | | | gg d | t| tg dd}| | | | gg d | t| t dd}| | | | gg d | t| G dd dt}t|d}| | | t t d}| | | | | gg d | t| d S )	Nr{   r   r   Zghi)ghic                   @   rf   )z/MockTest.test_side_effect_iterator.<locals>.FooNrg   r   r   r   r   r    ri   r  r   )	r   r   rC   rZ   r   r
   rn   r   r   )r   r   r  r   r   r   test_side_effect_iterator  s"   

z"MockTest.test_side_effect_iteratorc                 C   s\   t tfD ]'}tdtdf}||d}| t| | | d | t| | | d qd S )Nrx   r   r   )r   r
   r   rU  rZ   rC   )r   Klassiterabler   r   r   r   $test_side_effect_iterator_exceptions&  s   
z-MockTest.test_side_effect_iterator_exceptionsc                 C   s   t  }tg d|_| | | | gg d | t| |j}| |ttg  g d|_| | | | gg d | t| |j}| |ttg  t }||_| | | | | gg d | t| | 	|j| d S )Nr{   r   r   )
r   r   rY   rC   rZ   r   r   rA  r   r!  )r   r   rY   Z	this_iterr   r   r   !test_side_effect_setting_iterator0  s$   
z*MockTest.test_side_effect_setting_iteratorc                 C   s4   t dd}tdtg|_| | | gddg d S )Nrw   rR   rU   )r   r   r   rY   rC   rP   r   r   r   !test_side_effect_iterator_defaultE  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}|D ]
}|j|gdd q>tddtddt dd dfD ]}| jt|j|gdd qXtddtddgtddtddgtddtddgg}|D ]	}|j|dd qt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}|D ]}| jt|j|dd qd S )NrU   rw   rx   r;   r   r   r}  r+   )rx   r   r   )r`  rU   rw   r`  r  TZ	any_orderr\  r\   r      )r   r   assert_has_callsrZ   r   )r   r   kallskallZ
kall_listsZ	kall_listr   r   r   test_assert_has_calls_any_orderJ  sF   




"*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 }t
 t fD ]#}|dd |dd |dd |dd |ddd |||f qDt
 }|  |d | jdd |jt i d	dg |||f |D ]1\}}tt|D ]&}dD ]!}||||  }|| t|dkr| t|jtt| qqqd S )NrU   rw   r+   rx   r  r   r}  r`  r~  r,   r;   r<  r   r{   )r   r\   r_   extendr  rc   rc  ZbamrG  rz   r   r
   r  ranger  r  rZ   r   r  reversed)	r   Zkalls1Zkalls2rd   r   r  r  stepZtheser   r   r   test_assert_has_callsv  sH   
"






zMockTest.test_assert_has_callsc              	   C   sD  G dd d}t |}|| fD ]$}|jddddd |tjdddddg |tddddg q|  || fD ]6}| t|jt g |ddd |tdtdddg |jtdt ddg q>|  tdt	dt 	dt ddddg}|D ]}| t|j|g qd S )Nc                   @   s,   e Zd Zdd ZdddZG dd dZdS )	z=MockTest.test_assert_has_calls_nested_spec.<locals>.Somethingc                 S   r)   r   r   r   r   r   r   r     r0   zFMockTest.test_assert_has_calls_nested_spec.<locals>.Something.__init__Nc                 S   r)   r   r   r*   r   r   r   r/     r0   zBMockTest.test_assert_has_calls_nested_spec.<locals>.Something.methc                   @   r
  )zAMockTest.test_assert_has_calls_nested_spec.<locals>.Something.Fooc                 S   r)   r   r   r   r   r   r   r     r0   zJMockTest.test_assert_has_calls_nested_spec.<locals>.Something.Foo.__init__c                 S   r)   r   r   )r   r+   r,   r   r   r   meth1  r0   zGMockTest.test_assert_has_calls_nested_spec.<locals>.Something.Foo.meth1N)r$   r%   r&   r   r  r   r   r   r   r    s    r  r   )r$   r%   r&   r   r/   r  r   r   r   r   r(     s    
r(   rU   rw   rx   r.   r   )
r   r/   r  r   r   rZ   r   r  r  Znon_existent)r   r(   Z
mock_classr   Zinvalid_callsr  r   r   r   !test_assert_has_calls_nested_spec  s0   
" z*MockTest.test_assert_has_calls_nested_specc                 C   sJ   t  }|     |    t    }|	| d S r   )
r
   r\   r_   rc   r?  r@  threer   rc  r  )r   r   callsr   r   r   )test_assert_has_calls_nested_without_spec  s
   z2MockTest.test_assert_has_calls_nested_without_specc                 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    n1 s~w   Y  |j|dd | t ||dd   W d    n1 sw   Y  |j|dd  dd | t ||d d  W d    n1 sw   Y  |j|d d dd d S )Nc                 S   r)   r   r   r3   r   r   r   rT     r0   z<MockTest.test_assert_has_calls_with_function_spec.<locals>.frj   rU   rw   rx   r   r   r   r   r  r-   r.   
         )r-   r`  r{   )r   r   r   r.   )r  r  r  Tr  ra  r   )r   r  r  r  rZ   r   )r   rT   r   r  r   r   r   (test_assert_has_calls_with_function_spec  s8   


z1MockTest.test_assert_has_calls_with_function_specc                 C   s   d	dd}t |d}|d | tdtd}|t g W d    n1 s,w   Y  | |j	j
 | tdtd}|t tddg W d    n1 sZw   Y  | |j	j
t d S )
Nc                 S   r)   r   r   r   r   r   r   rT     r0   zAMockTest.test_assert_has_calls_not_matching_spec_error.<locals>.frj   rU   z^{}$z5Calls not found.
Expected: [call()]
Actual: [call(1)]zError processing expected calls.
Errors: [None, TypeError('too many positional arguments')]
Expected: [call(), call(1, 2)]
Actual: [call(1)]rw   r   )r   r   r   r   r   r   r  r   rL   r   r   r   rX   r   r   r   r   -test_assert_has_calls_not_matching_spec_error  s2   

	z6MockTest.test_assert_has_calls_not_matching_spec_errorc                 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 )NrU   rw   rx   r;   r   r}  r   )r   assert_any_callrZ   r   rP   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    n1 sZw   Y  | |jjt d S )Nc                 S   r)   r   r   r3   r   r   r   rT   #  r0   z;MockTest.test_assert_any_call_with_function_spec.<locals>.frj   rU   rw   rx   r   r   r   r   r  r  r   r3   r   r   r   )r   r  rZ   r   r   r   r   rX   r   r   r   r   'test_assert_any_call_with_function_spec"  s   


z0MockTest.test_assert_any_call_with_function_specc                 C   sf   dd }t  }||_t|t|jg}|D ]}|dd |dd | |jtddtddg qd S )Nc                 S   r)   r   r   r   r   r   r   rT   6  r0   z3MockTest.test_mock_calls_create_autospec.<locals>.frU   rw   rx   r   )r   rT   r   rC   r   r   )r   rT   r  ZfuncsrY  r   r   r   test_mock_calls_create_autospec5  s   

z(MockTest.test_mock_calls_create_autospecc                 C   s$   t jt dd}| dt| d S )NZ
sweet_funcr]   )r   r   rn   r`   ra   r   r   r   r   test_create_autospec_with_nameG  s   z'MockTest.test_create_autospec_with_namec              	   C   st   G dd d}dD ].}| j |d tt||}|  |  | t|d W d    n1 s2w   Y  q	d S )Nc                   @   s$   e Zd Zedd Zedd ZdS )zMMockTest.test_create_autospec_classmethod_and_staticmethod.<locals>.TestClassc                 S   r)   r   r   )r1   r   r   r   class_methodN  r!   zZMockTest.test_create_autospec_classmethod_and_staticmethod.<locals>.TestClass.class_methodc                   S   r)   r   r   r   r   r   r   static_methodQ  r!   z[MockTest.test_create_autospec_classmethod_and_staticmethod.<locals>.TestClass.static_methodN)r$   r%   r&   r5   r  r6   r  r   r   r   r   	TestClassM  s
    
r  )r  r  )r   Z	extra_arg)ZsubTestr   r   r   r   rZ   rX   )r   r  r   Zmock_methodr   r   r   1test_create_autospec_classmethod_and_staticmethodL  s   z:MockTest.test_create_autospec_classmethod_and_staticmethodc                 C   sD  t  }d}| t| |  W d    n1 sw   Y  | t| |  W d    n1 s4w   Y  | t| |  W d    n1 sNw   Y  | t| |  W d    n1 shw   Y  | t| |  W d    n1 sw   Y  t dd}|  |  |  |  |  d S )Nz1is not a valid assertion. Use a spec for the mockT)unsafe)r   r   r   Zassert_foo_callZassret_foo_callZasert_foo_callZaseert_foo_callZassrt_foo_call)r   r   r   r   r   r   test_mock_unsafe[  s.   





zMockTest.test_mock_unsafec                 C   sB   G dd dt }t|d}|  |  |j  |j  d S )Nc                   @   r
  )z.MockTest.test_mock_safe_with_spec.<locals>.Fooc                 S   r)   r   r   r   r   r   r   
assert_barr  r!   z9MockTest.test_mock_safe_with_spec.<locals>.Foo.assert_barc                 S   r)   r   r   r   r   r   r   
assertSomeu  r!   z9MockTest.test_mock_safe_with_spec.<locals>.Foo.assertSomeN)r$   r%   r&   r  r  r   r   r   r   r  q  s    r  rj   )rn   r   r  r  assert_called_oncer   r  r   r   r   r   test_mock_safe_with_specp  s   

z!MockTest.test_mock_safe_with_specc                 C   sR   t  }|j  |  | t |j  W d    d S 1 s"w   Y  d S r   )r   helloassert_not_calledrZ   r   r   r   r   r   test_assert_not_called  s   
"zMockTest.test_assert_not_calledc                 C   s*   t  }|dd | ttd|j d S )NrU   rw   zCalls: [call(1, 2)])r   r   r   r   r   r  r   r   r   r   test_assert_not_called_message  s   
z'MockTest.test_assert_not_called_messagec                 C   sb   t  }| t |j  W d    n1 sw   Y  |  |j  |  |j  d S r   )r   rZ   r   r  r   r   r   r   r   test_assert_called  s   
zMockTest.test_assert_calledc                 C   s   t  }| t |j  W d    n1 sw   Y  |  |j  |  | t |j  W d    d S 1 s@w   Y  d S r   )r   rZ   r   r  r  r   r   r   r   test_assert_called_once  s   
"z MockTest.test_assert_called_oncec                 C   s2   t  }|dd |d | ttd|j d S )NrU   rw   rx   zCalls: [call(1, 2), call(3)])r   r   r   r   r   r  r   r   r   r   test_assert_called_once_message  s   
z(MockTest.test_assert_called_once_messagec                 C   sN   t  }| t}|  W d    n1 sw   Y  | dt|j d S )NzCalls:)r   rZ   r   r  rJ   rW  r   )r   r   r   r   r   r   *test_assert_called_once_message_not_called  s
   
z3MockTest.test_assert_called_once_message_not_calledc                 C   s0   t  }|jddd d}| t|jj| d S )Nr  Zhero)r^   Zdaddyz call(name='hello', daddy='hero'))r   r  rC   ra   rG   )r   r   textr   r   r   test_ordered_call_signature  s   z$MockTest.test_ordered_call_signaturec                 C   sV   t  }t dd}t }|  |dd | |jd | | |jd | d S )N   r  r   rU   )r   rO  r  r   rC   rI   )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  rw   rx   rF   rY   T)r   r   r   rF   rC   rY   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  rw   rx   r  TrR   )r   r   r   rF   r   rY   r   r   r   r   test_reset_return     zMockTest.test_reset_returnc                 C   s<   t dddgd}|jdd | |jd | |jd  d S )Nr  rw   rx   r  Tr   )r   r   rC   rF   rY   r   r   r   r   test_reset_sideeffect  r  zMockTest.test_reset_sideeffectc                 C   s@   t t ddd}| | d |jdd | | d d S )NrU   rR   rT   T)r
   rC   rT   r   r   r   r   r   r   test_reset_return_with_children  s   z(MockTest.test_reset_return_with_childrenc                 C   sD   t t ddgdd}| |jjd  |jdd | |jjd  d S )Nrw   rx   r   r  T)r
   r   rT   rY   r   rC   r   r   r   r   +test_reset_return_with_children_side_effect  s   z4MockTest.test_reset_return_with_children_side_effectc           	         s  G dd dt }G dd dt }G dd dt  ttttg}t|D ]}||f fdd	 ||f fd	d	 q"|D ]}t td
dfD ]y}| }|j|j	|j
f ||fdgdgffD ]a\}}t td
dfD ]T}|j|fi | |j | tt|d | tt|d d|v r| tt|dd  |j|fi | | tt|d |j	 | tt|d d|v r| tt|dd  qjq^qGq=d S )Nc                   @   r%  )z)MockTest.test_mock_add_spec.<locals>._OnerU   Nr$   r%   r&   r?  r   r   r   r   _One  r   r  c                   @   r%  )z)MockTest.test_mock_add_spec.<locals>._Tworw   N)r$   r%   r&   r@  r   r   r   r   _Two  r   r  c                   @   s   e Zd Zd Z ZZdS )z-MockTest.test_mock_add_spec.<locals>.AnythingZfourN)r$   r%   r&   r?  r@  r  r   r   r   r   Anything  s    r  c                    
   |  dS )Nrj   r   Kr  r   r   r     r   z-MockTest.test_mock_add_spec.<locals>.<lambda>c                    r  )Nrl   r   r  r  r   r   r     r   Trl   r?  r@  r  rm   )rn   r   r
   r   r   r  r  rb  r?  r@  r  mock_add_specrZ   r   r   setattr)	r   r  r  Zklassesr  rt   r   ZOneZTwor   r  r   test_mock_add_spec  sV   

zMockTest.test_mock_add_specc                    s|   t tfD ]7}|  t   t | tt  |   d  d j_ t | 	t d | t fdd qd S )Nr\   r   c                      s    d S r  r   r   r   r   r   r   #  r   z;MockTest.test_mock_add_spec_magic_methods.<locals>.<lambda>)
r
   r   r-  r  rn   rZ   rX   rd  rF   rC   )r   r  r   r   r    test_mock_add_spec_magic_methods  s   

z)MockTest.test_mock_add_spec_magic_methodsc                 C   s   t ttttfD ]V}| }t |_|  | |jt g | |j	t g | }tdd|_
|
  | |jg  | |j	g  | }t  |_|  | |jg  | |j	g  qd S )Nr^   r]   )r   r   r
   r   r   r\   rC   rI   r   r   r_   rc   r   r  r   r   r   r   test_adding_child_mock&  s&   
zMockTest.test_adding_child_mockc                 C   s@   t tfD ]}| }t |_|   | |jt t  g qd S r   )r   r
   rF   rC   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  I  s    r  r?  r@  )rn   r   r   r   r+  rQ  attach_mockr@  r?  rC   r   r   )r   r  managerZp1Zp2Zmock_oneZmock_twor   r   r   test_manager_mockH  s   zMockTest.test_manager_mockc                 C   sh   t tfD ]-}| }t dd|_tdd|_t| t| | |jt t g | |j	g  qd S )Nrx   rR   g      @)
r   r
   rd  	__float__r-  floatrC   r   r   rI   )r   r  r   r   r   r   test_magic_methods_mock_calls^  s   z&MockTest.test_magic_methods_mock_callsc                 C   s<   t jdd}|d}| }|d}| }| || d S )Nr  Z	read_dataa-namezanother-name)r   r   readrC   )r   mocked_openf1Zf1_dataf2Zf2_datar   r   r    test_mock_open_reuse_issue_21750i  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 Bluer  r  c                 S      g | ]}|qS r   r   rE  liner   r   r   rF  v  r   z=MockTest.test_mock_open_dunder_iter_issue.<locals>.<listcomp>r   zRemarkable
rU   zNorwegian Blue)r   r   rC   r  )r   r  r  linesr   r   r    test_mock_open_dunder_iter_issueq  s   z)MockTest.test_mock_open_dunder_iter_issuec                 C   s   t jdd}|d}t|}| }dd |D }| |d | |d | |d d	 | t|g  | t t| W d    d S 1 sJw   Y  d S )
Nz1st line
2nd line
3rd liner  r  c                 S   r  r   r   r  r   r   r   rF    r   z6MockTest.test_mock_open_using_next.<locals>.<listcomp>z	1st line
z	2nd line
r   z3rd line)r   r   r"   r'   rC   r  rZ   r   )r   r  r  Zline1Zline2r  r   r   r   test_mock_open_using_next{  s   
"z"MockTest.test_mock_open_using_nextc                 C   s,   t jdd}d|jj_| dt|  d S )Nfoo
barnr  abc)r   r   rF   readlinerC   r"   )r   mopenr   r   r   3test_mock_open_next_with_readline_with_return_value  s   
z<MockTest.test_mock_open_next_with_readline_with_return_valuec                 C   sn   t t jdd}t d| |j}|j}td|_dd }| t| W d    d S 1 s0w   Y  d S )NZJLVr]   ztempfile.NamedTemporaryFilezTest 2 Errorc                   S   s   t  d d S )NZasd)tempfileNamedTemporaryFilewriter   r   r   r   attempt  r   z.MockTest.test_mock_open_write.<locals>.attempt)	r   r   r
   r   rF   r  OSErrorrY   rZ   )r   Zmock_namedtempZmock_filehandleZ
mock_writer  r   r   r   test_mock_open_write  s   
"zMockTest.test_mock_open_writec                 C   sJ   t jdd}dd |jj_|  }|  }| d| | d| d S )Nr  r  c                  W   r  )Nr  r   )rs   r   r   r   r     r0   z8MockTest.test_mock_open_alter_readline.<locals>.<lambda>r  )r   r   rF   r  rY   rC   )r   r  firstsecondr   r   r   test_mock_open_alter_readline  s   

z&MockTest.test_mock_open_alter_readlinec                 C   s   t jdd}|d}|  | d|  | d|  | d|  | d|  | g |  | g |  d S )Nr\   r  r_   r`  )r   r   r  rC   r  	readlines)r   _openr  r   r   r   test_mock_open_after_eof  s   z!MockTest.test_mock_open_after_eofc                 C   s
  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d S )Nzname='mock.a')
r   r
   ra   rF   r!  rC   r   r+   r,   r`   )r   r  r   Zoriginal_reprr   r   r   test_mock_parents  s.   zMockTest.test_mock_parentsc                 C   s   t tttf}|D ]B}|D ]=}| }|dd}||d | |j| | dt| |j	d | 
|jtj	dg | 
|jtj	dg qqd S )Nr\   r]   r_   zname='mock.bar'rU   )r   r
   r   r   r  r!  r_   r`   ra   rc   rC   r   r   rI   r   Zclassesr  ZKlass2r   Zm2r   r   r   test_attach_mock  s   
zMockTest.test_attach_mockc                 C   s   t tttf}t tfD ]4}|D ]/}| }|dd}||d | | | | dt| |  | 	|j
t    qq
d S )Nr\   r]   rF   zname='mock()')r   r
   r   r   r  r!  r`   ra   r\   rC   r   r   rc  r  r   r   r   test_attach_mock_return_value  s   
z&MockTest.test_attach_mock_return_valuec                 C   s
  t  }tjt dddn}| |j d ||d |d td |d t	dt	dt	dg}t	dt	dt	dg}| |j
| | |jj
| | tj
| | |j
| | d	t|jj | |j d	 W d    d S 1 s~w   Y  d S )
N
.somethingTr   r<   r   rU   rw   rx   
mock.child)r   r   r   r$   rC   Z_extract_mock_namer  r   r<   r   r   r`   ra   )r   r   Z	mock_funcZparent_callsZchild_callsr   r   r   test_attach_mock_patch_autospec  s    
"z(MockTest.test_attach_mock_patch_autospecc              
   C   s  t jt dddI}t }||d t }|jddddd	 |tj	t j
ddddd	g |jtt j
ddddd	g |tt j
ddddd	g W d    n1 sVw   Y  t jt d
dd.}t }||d td |tdg ttdg |tdg W d    n1 sw   Y  t jt dddM}t }||d t }|jddddd	 |t t jddddd	g |jtddddd	g |t t jddddd	g W d    d S 1 sw   Y  d S )N.Something.methTr   attach_methrU   rw   rx   r   r  r  attach_func
.Something
attach_obj)r   r   r$   r   r  r(   r/   r  r   r  r   r<   r  r  )r   Zmockedr  r  r   r   r   )test_attach_mock_patch_autospec_signature  s8   	
""z2MockTest.test_attach_mock_patch_autospec_signaturec                 C   sf   t  t t t fD ]&}| t|d |`| t|d |`| t|d | 	t
t|d q
d S )Nr   rT   )r   r
   r   r   rE   hasattrr   rA   rT   rZ   r   r   rP   r   r   r   test_attribute_deletion  s   z MockTest.test_attribute_deletionc                 C   s   t  t t t fD ]:}d|_| t|d | |jd |`| t|d d|_| t|d | |jd |`| t|d q
d S )Nrx   r\   r   )	r   r
   r   r   r\   rE   r  rC   rA   rP   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   sP   t  t t t fD ]}|`| t
 |`W d    n1 s w   Y  q
d S r   )r   r
   r   r   r\   rZ   r   rP   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 )NTr   )r   r   r   rA   r  rP   r   r   r   /test_reset_mock_does_not_raise_on_attr_deletionC  s
   z8MockTest.test_reset_mock_does_not_raise_on_attr_deletionc                 C   s:   t  t fD ]}| |t t|_| |t |j qd S r   )r   r
   rv  r-  r"  r   r\   rP   r   r   r   test_class_assignableM  s   zMockTest.test_class_assignablec                 C   8   |  tj | ttjt | tt jt d S r   )assertIsNotNoner   r^   rC   rA  r   r   r   r   r   test_name_attribute_of_callU     z$MockTest.test_name_attribute_of_callc                 C   r  r   )r  r   r   rC   rA  r   r   r   r   r   test_parent_attribute_of_call\  r  z&MockTest.test_parent_attribute_of_callc                 C   sd   dd }t  }t||_|dd | t|jd | |jtddg | dt	|jj
 d S )Nc                 S   r)   r   r   r   r   r   r   r\   f  r0   zBMockTest.test_parent_propagation_with_create_autospec.<locals>.foorU   rw   r   )r   r   r   rZ   rX   rC   r   r   r`   ra   r   )r   r\   r   r   r   r   ,test_parent_propagation_with_create_autospecd  s   
z5MockTest.test_parent_propagation_with_create_autospecc                 C   sp   dd }t  }|t|ddd |dd | t|jd | |jjtddg | 	dt
|jj d S )	Nc                 S   r)   r   r   r   r   r   r   r\   r  r0   zGMockTest.test_parent_propagation_with_autospec_attach_mock.<locals>.foor_   r]   r   rU   rw   r   )r   r  r   r   rZ   rX   rC   r   r   r`   ra   r   )r   r\   r   r   r   r   1test_parent_propagation_with_autospec_attach_mockp  s   z:MockTest.test_parent_propagation_with_autospec_attach_mockc           	         s   t jj}| dd | tdD tjd=  fdd | tjt  t  ddl	m
}m}m}m} ||||tg}|D ]}|td	}| |t q?W d    d S 1 sXw   Y  d S )
Nc                 S   s   t tjd| S )Nr   )r  rM  r   )r   r   r   r   r     s    z9MockTest.test_isinstance_under_settrace.<locals>.<lambda>zsys.moduleszunittest.mockc                    s    S r   r   )frameeventr   tracer   r   r    r!   z6MockTest.test_isinstance_under_settrace.<locals>.tracer   )r   r
   r   r   rj   )rM  r   r   r+  rb  r)  modulessettracegettraceunittest.mockr   r
   r   r   r   r(   r   )	r   Z	old_patchr   r
   r   r   rd   r   r  r   r  r   test_isinstance_under_settrace}  s"   	



"z'MockTest.test_isinstance_under_settracec                 C   s^   G dd d}| }t jjj|dtd W d    n1 sw   Y  | |jjjd d S )Nc                   @   r   )zFMockTest.test_bool_not_called_when_passing_spec_arg.<locals>.Somethingc                 S   s   t j | _d S r   )rM  r   r
   obj_with_bool_funcr   r   r   r   r     s   zOMockTest.test_bool_not_called_when_passing_spec_arg.<locals>.Something.__init__N)r$   r%   r&   r   r   r   r   r   r(     r   r(   r  rj   r   )rM  r   r   rn   rC   r  __bool__rD   )r   r(   r  r   r   r   *test_bool_not_called_when_passing_spec_arg  s   4z3MockTest.test_bool_not_called_when_passing_spec_argc              	   C   s$  G dd d}|  t! tt ddd W d    n1 s!w   Y  W d    n1 s0w   Y  |  t  tj|ddd W d    n1 sNw   Y  W d    n1 s]w   Y  |  t! tt ddd W d    n1 s|w   Y  W d    n1 sw   Y  |  t  tj|ddd W d    n1 sw   Y  W d    n1 sw   Y  |  t! tt ddd W d    n1 sw   Y  W d    n1 sw   Y  |  t! tj|ddd W d    n	1 sw   Y  W d    n	1 sw   Y  |  t t|dd}W d    n	1 s1w   Y  |  t$ tjt d	tdd
 W d    n	1 sSw   Y  W d    n	1 scw   Y  |  t$ tjt d	tdd W d    n	1 sw   Y  W d    n	1 sw   Y  |  t$ tjt d	tdd W d    n	1 sw   Y  W d    n	1 sw   Y  tt dddd W d    n	1 sw   Y  tj|dddd W d    n	1 sw   Y  tt dddd W d    n	1 sw   Y  tj|dddd W d    n	1 s1w   Y  tt dddd W d    n	1 sLw   Y  tj|dddd W d    n	1 sfw   Y  t|ddd}tjt ddddd	 W d    d S 1 sw   Y  d S )Nc                   @   r%  )z/MockTest.test_misspelled_arguments.<locals>.Foor?  Nr  r   r   r   r   r    r   r  r  T)r8   r?  )r9   )r:   r  )r/   r8   )r/   r9   )r/   r:   )r  r8   )r  r9   )r  r:   )r:   r  z.Typos)r8   r:   r9   )	rZ   r   r   r$   rn   r   r   Zmultipler   r  r   r   r   test_misspelled_arguments  s   202022444$z"MockTest.test_misspelled_argumentsN)r$   r%   r&   r?   rQ   rS   rW   r[   re   rp   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(  r0  r=  rB  rK  rP  rR  rS  rV  r[  r_  re  rf  rh  rk  rl  rn  ro  rp  rq  rr  rw  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  r  r  r  r  r   r!  r   r   r   r   r=   2   s   	)&	


!

	8N
#
,((
	5	


'
r=   __main__)!r.  r   r)  r  Ztest.supportr   rM  Zunittest.test.testmock.supportr   r   r  r   r   r   r	   r
   r   r   r   r   r   r   r   r   rn   r   r(   r7   r<   rN  r=   r$   mainr   r   r   r   <module>   sD    <
                 <