
>UR                 @   sh  d  d l  Z d  d l m Z m Z m Z m Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z y e Wn e k
 r e Z Yn XGd d   d e  Z Gd d   d e  Z Gd	 d
   d
 e  Z Gd d   d e  Z Gd d   d e j  Z  e! d k rde j"   d S)    N)callableinPy3kis_instancenext)	callDEFAULTpatchsentinel	MagicMockMockNonCallableMockNonCallableMagicMockcreate_autospec)	_CallListc               @   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   5/usr/lib/python3/dist-packages/mock/tests/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)r   r   )r   r   r   r   r   &   s    z	Iter.nextN)__name__
__module____qualname__r   r   r   __next__r   r   r   r   r      s   r   c               @   sI   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   cmeth0   s    zSomething.cmethc             C   s   d  S)Nr   )r    r!   r"   r#   r   r   r   smeth4   s    zSomething.smeth)r   r   r   r$   classmethodr&   staticmethodr'   r   r   r   r   r   ,   s
   r   c               @   s   e  Z d  Z d S)SubclassN)r   r   r   r   r   r   r   r*   9   s   r*   c               @   s   e  Z d  Z d Z d Z d S)Thing   barN)r   r   r   	attributefoor   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 j 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 d1 d2   Z d3 d4   Z d5 d6   Z  d7 d8   Z! d9 d:   Z" d; d<   Z# d= d>   Z$ d? d@   Z% dA dB   Z& dC dD   Z' dE dF   Z( dG dH   Z) dI dJ   Z* dK dL   Z+ e j, e- dM  dN dO    Z. e j, e- dM  dP dQ    Z/ dR dS   Z0 dT dU   Z1 dV dW   Z2 dX dY   Z3 dZ d[   Z4 d\ d]   Z5 d^ d_   Z6 d` da   Z7 db dc   Z8 dd de   Z9 df dg   Z: dh di   Z; dj dk   Z< dl dm   Z= dn do   Z> dp dq   Z? dr ds   Z@ dt du   ZA dv dw   ZB dx dy   ZC dz d{   ZD d| d}   ZE d~ d   ZF d d   ZG d d   ZH d d   ZI d d   ZJ d d   ZK d d   ZL d d   ZM d d   ZN d d   ZO d d   ZP d d   ZQ d d   ZR d d   ZS d d   ZT d d   ZU d d   ZV d d   ZW d d   ZX e jY d d    ZZ d S)MockTestc             C   s   t  d  d  S)Nzfrom mock import *)exec)r   r   r   r   test_allE   s    zMockTest.test_allc             C   s   t    } |  j | j d  |  j | j d d  |  j t | j t   d  |  j | j d  d  |  j | j	 g  d  |  j | j
 g  d  |  j d | j d	  |  j | j d
  |  j | j d  |  j | 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 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   mockr   r   r   test_constructorL   s(    	zMockTest.test_constructorc             C   s&   t  d d   } |  j | j d  d  S)Nr8   z(return value in constructor not honoured)r   r>   r8   )r   rB   r   r   r    test_return_value_in_constructorh   s    z)MockTest.test_return_value_in_constructorc             C   sP  t  d d  } |  j d t |   |  j d t |  t |   t    d f t  d d  d f g } x | D] \ } } |  j d | t | j   |  j d | t | j     |  j d | t | j   j   |  j d	 | t |     |  j d
 | t |       |  j d | t |     j j j   j   qp Wd  S)Nnamer/   z'%s'rB   r-   z%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   rB   mocksrE   r   r   r   	test_reprn   s     $ # zMockTest.test_reprc             C   sa  Gd d   d t   } t d |  } |  j d t |   t d |    } |  j d t |   t d |  } |  j d t |   t d |    } |  j d t |   t d | d d  } |  j d t |   |  j d	 t |   t d d  } |  j d t |   t   } |  j d t |   t d d g  } |  j 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   X   s   rL   specz
 spec='X' spec_setz spec_set='X' rE   r/   z name='foo' )objectr   rF   rG   r<   )r   rL   rB   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 d d d g     f d d   } | | _ |  j |   |   |   g d d d g d  t  d	 t j  } |  j | j t j d
  d d   } t  d	 | d t j  } |  j |   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      fish   c                  s
     j    S)N)popr   )resultsr   r   rT      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   r[      s    z.MockTest.test_side_effect.<locals>.side_effectr8   )	r   r[   assertRaisesrQ   assert_called_withr5   r	   
SideEffectZRETURN)r   rB   rT   r[   r   )rZ   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 | _ |  j |   |   |   g d d d g d  d d d g   t  |  } | | _ |  j |   |   |   g d d d g d	  d  S)
NrU   rV   rX   c                  s
     j    S)N)rY   r   )rZ   r   r   rT      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   r[   r5   )r   rT   r`   rB   r   )rZ   r   test_autospec_side_effect   s    '	'z"MockTest.test_autospec_side_effectc             C   s>   d d   } t  |  } t d  | _ |  j 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   
ValueErrorr[   assertRaisesRegex)r   r`   rB   r   r   r   #test_autospec_side_effect_exception   s    z,MockTest.test_autospec_side_effect_exceptionjavaz This test only applies to Jythonc             C   s   d d  l  } t d | j j d   } y | d d d d Wn | j j k
 rX Yn X|  j d  | j d d d d d  S)	Nr   r[   zBoom!rU   rV   rW   rX   zjava exception not raised)re   r   ZlangZRuntimeExceptionfailr]   )r   re   rB   r   r   r   test_java_exception_side_effect   s    z(MockTest.test_java_exception_side_effectc             C   s  t    } d g } t  d d d | d |  } | t j d t j | j } | j   t j | _ | j } |   | j   |  j	 | j
 d d  |  j	 | j | d  |  j	 | j | d  |  j | j d	  |  j	 | j d
 d  |  j	 | j d  d  |  j	 | j g  d  |  j	 | j g  d | j g  f  |  j	 | j g   |  j	 | j t j d  |  j	 | j | d  |  j | j d  |  j	 | j d | i d  |  j	 | j | d  |  j | j j d  d  S)N	somethingrE   ZchildparentrM   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SomethingElserh   r^   r[   r8   
reset_mockr5   
_mock_namer?   r@   r3   r4   r6   r9   r:   r;   
mock_callsrA   )r   ri   rM   rB   rh   r8   r   r   r   test_reset_mock   sD    			
	
zMockTest.test_reset_mockc             C   s    t    } | | _ | j   d  S)N)r   r8   rj   )r   rB   r   r   r   test_reset_mock_recursion  s    		z"MockTest.test_reset_mock_recursionc             C   s   t  j   } | j   d  S)N)rB   	mock_openrj   )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    } |  j t | j t   d  |   } |  j |   | d  | j   | t j  } |  j | j d  |  j | j	 d d  |  j | j
 t j f i  f d  |  j | j t j f i  f g d  t j | _ | t j d t j } |  j | t j d	  |  j | j	 d
 d  |  j | j
 t j f d t j i f d  |  j | 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 incoreectzcall_args not setz(call_args_list not initialised correctlykeyzincorrect return valuerV   zcall_count incorrectzcall_args_list not set)r   r7   r   r8   r5   rj   r	   Argr4   r6   r9   r:   ZReturnValueZKeyArg)r   rB   resultZret_valr   r   r   	test_call  s4    		
zMockTest.test_callc             C   s   t    } |   | t j  | d t j  | t j d t j |  j | j f  t j f f d t j i f t j f d t j i f g  |  j | j t j f d t j i f  d  S)Nkw)r   r	   rr   ZKwargr5   r:   r9   )r   rB   r   r   r   test_call_args_comparison9  s    	z"MockTest.test_call_args_comparisonc             C   s   t    } |   | j   |  j t | j d  | j   |  j t | j  | d d d d d d d | j d d d d d d d d  S)NrU   rV   rX   r    rW   r!   Znothing)r   r]   r\   AssertionErrorrj   )r   rB   r   r   r   test_assert_called_withI  s    	

z MockTest.test_assert_called_withc          
   C   s   d  d d  } t  d |  } | d d d d d | j d d d  | j d	 d d d d d  |  j t | j d d d d d |  j t   } | j d
 d  Wd  QRXt | j d  r |  j | j j t  d  S)Nc             S   s   d  S)Nr   )r    r!   r"   r#   r   r   r   r`   Y  s    z9MockTest.test_assert_called_with_function_spec.<locals>.frM   rU   r!   rV   r"   rX   r    e   	__cause__)	r   r]   r\   rw   hasattr	exceptionassertIsInstancer{   	TypeError)r   r`   rB   cmr   r   r   %test_assert_called_with_function_specX  s    z.MockTest.test_assert_called_with_function_specc                s     f d d   } t  d t   j  } | |  t  d t j  } | |  t  d t   j  } | |  t  d t j  } | |  t  d t   j  } | |  d  S)Nc                sk   |  d d d d d |  j  d d d  |  j  d d d d d d    j t |  j  d d d d d d  S)NrU   r!   rV   r"   rX   r    )r]   r\   rw   )rB   )r   r   r   _checkk  s
    z<MockTest.test_assert_called_with_method_spec.<locals>._checkrM   )r   r   r$   r&   r'   )r   r   rB   r   )r   r   #test_assert_called_with_method_specj  s    



z,MockTest.test_assert_called_with_method_specc                s   t            j       |  j t   j    j   |  j t   j    d d d d   j d d d d   j     d d d d |  j t   f d d    d  S)Nr/   r-   rI   rV   c                  s     j  d d d d S)NZbobr-   rI   rV   )assert_called_once_withr   )rB   r   r   <lambda>  s    z7MockTest.test_assert_called_once_with.<locals>.<lambda>)r   r   r\   rw   rj   )r   r   )rB   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 | j d d d  | j d	 d d d d d  |  j t | j d d d d d |  j t   } | j d
 d  Wd  QRXt | j d  r |  j | j j t  | d d d  |  j t | j d d d  |  j 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>.frM   rU   r!   rV   r"   rX   r    ry   rz   r{         r,   )	r   r   r\   rw   r|   r}   r~   r{   r   )r   r`   rB   r   r   r   r   *test_assert_called_once_with_function_spec  s     z3MockTest.test_assert_called_once_with_function_specc             C   s   t    } | j } |  j t | t   d  |  j | j | d  t    } d | j _ |  j | j   d d  |  j | 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   rh   r7   r   r5   r8   r4   )r   rB   rh   r   r   r   #test_attribute_access_returns_mocks  s    			z,MockTest.test_attribute_access_returns_mocksc             C   sB   t    } | j } |  j | j d d  |  j | j | d  d  S)Nrh   z attribute name not set correctlyz"attribute parent not set correctly)r   rh   r5   rk   r?   )r   rB   rh   r   r   r   (test_attributes_have_name_and_parent_set  s    		z1MockTest.test_attributes_have_name_and_parent_setc             C   s   t    } | j d d d  | j j d d t j |  j | j j d d d t j i f g d  |  j | j d d	 d d  i f d d
 d t j i f g d  d  S)NrX   rW   r,   Zcakerh   z#method calls not recorded correctlyzsomething_else.something)r,   )rX   )r,   )r   rh   something_elser	   ZCaker5   r;   )r   rB   r   r   r   test_method_calls_recorded  s    	z#MockTest.test_method_calls_recordedc             C   s8  t    } | j   |  j | j d g  |  j | j d f  i  f g  t    } | j d  |  j | j d	 g  |  j | j d d
 i  f g  t    } | j d d  |  j | j d d d i f g  |  j | j d f  d d i f g  t    } | j d d d |  j | j d d d d i f g  d  S)Nrh   	differentxrU   ZsomeZmore)	somethingr   )r   r   )r   )r   )r   rh   r5   r;   )r   rB   r   r   r    test_method_calls_compare_easily  s"    	
		"%	z)MockTest.test_method_calls_compare_easilyc             C   sa   xZ d g d f D]I } x@ d D]8 } t  | | i   } | j |  j t d t | d  q Wq Wd  S)Nrh   rM   rN   z-Mock object has no attribute 'something_else'r   )z	something)zspeczspec_set)r   rh   rc   AttributeErrorgetattr)r   rM   argrB   r   r   r   test_only_allowed_methods_exist  s    z(MockTest.test_only_allowed_methods_existc                sU   Gd 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   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                sK   |  j  |  j |  j   j t d t |  d    j 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   rc   r   r   )rB   )r   r   r   test_attributes  s    z0MockTest.test_from_spec.<locals>.test_attributesrM   )rO   r   )r   r   r   r   )r   r   test_from_spec  s    zMockTest.test_from_specc             C   se   t    } t  d |  } |  j |   |    | j   | d d d d | j d d d d d  S)NwrapsrU   rV   rW   rX   )r   r5   rj   r]   )r   realrB   r   r   r   test_wraps_calls  s    	
zMockTest.test_wraps_callsc             C   sH   t    } t  d |  } d | _ |  j |   d  |  j | j  d  S)Nr   rX   )r   r8   r5   r3   r4   )r   r   rB   r   r   r   ,test_wraps_call_with_nondefault_return_value$  s
    		z5MockTest.test_wraps_call_with_nondefault_return_valuec                s   Gd d   d t   } |   } t d |    |  j   j   | j    |  j t   f d d    |  j   j | j    j j d d d d	 } | j j j d d d d	 |  j | | j j    d  S)
Nc               @   s   e  Z d  Z e   Z d S)z,MockTest.test_wraps_attributes.<locals>.RealN)r   r   r   r   r.   r   r   r   r   Real/  s   r   r   c                  s     j  S)N)rW   r   )rB   r   r   r   6  s    z0MockTest.test_wraps_attributes.<locals>.<lambda>rU   rV   rW   rX   )	rO   r   r5   r.   r\   r   ZassertNotEqualZfrogr]   )r   r   r   rs   r   )rB   r   test_wraps_attributes.  s    	zMockTest.test_wraps_attributesc             C   sH   t  d t  } |  j t |  t  d t d   } |  j t |  d  S)Nr[   r/   )r   r   r\   )r   rB   r   r   r   test_exceptional_side_effect>  s    z%MockTest.test_exceptional_side_effectc             C   sH   t  d t  } |  j t |  t  d t d   } |  j t |  d  S)Nr[   r/   )r   KeyboardInterruptr\   )r   rB   r   r   r    test_baseexceptional_side_effectF  s    z)MockTest.test_baseexceptional_side_effectc             C   s#   t    } |  j t d | j  d  S)Nz
Not called)r   rc   rw   r]   )r   rB   r   r   r   test_assert_called_with_messageN  s    	z(MockTest.test_assert_called_with_messagec             C   s)   t  d d  } |  j t d | j  d  S)NrE   Zgeoffreyz'Expected 'geoffrey' to be called once\.)r   rc   rw   r   )r   rB   r   r   r   $test_assert_called_once_with_messageT  s    	z-MockTest.test_assert_called_once_with_messagec                sE   t      |  j t   f d d    d   _ |  j   j d  d  S)Nc                  s     j  S)N)r   r   )rB   r   r   r   ]  s    z'MockTest.test__name__.<locals>.<lambda>r/   )r   r\   r   r   r5   )r   r   )rB   r   test__name__[  s    		zMockTest.test__name__c             C   se   Gd d   d t   } t d | d g   } | j d  | j j d  |  j 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   Subd  s   r   rM   r/   rX   )listr   appendr]   r\   r   r   )r   r   rB   r   r   r   test_spec_list_subclassc  s
    z MockTest.test_spec_list_subclassc             C   s   Gd d   d t   } t d |  } |  j | |  t d |    } |  j | |  |  j | j |  |  j t   j j d  t d |  } |  j | |  t d |    } |  j | |  d  S)Nc               @   s   e  Z d  Z d S)z#MockTest.test_spec_class.<locals>.XN)r   r   r   r   r   r   r   rL   n  s   rL   rM   r   rN   )rO   r   r~   assertIs	__class__r5   r   )r   rL   rB   r   r   r   test_spec_classm  s    zMockTest.test_spec_classc                sl   Gd d   d t   } t d |    d   _ t d |      f d d   } d   _ |  j t |  d  S)Nc               @   s   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   rL     s   rL   rM   r/   rN   c                  s   d   _  d  S)Nr/   )r   r   )rB   r   r   set_attr  s    z?MockTest.test_setting_attribute_with_spec_set.<locals>.set_attr)rO   r   r   r   r\   r   )r   rL   r   r   )rB   r   $test_setting_attribute_with_spec_set  s    		z-MockTest.test_setting_attribute_with_spec_setc             C   sF   t  j   } |  j t  j |  t  j t d   t j t    d  S)Ng    eA)sysgetrecursionlimit
addCleanupsetrecursionlimitintcopyr   )r   Zcurrentr   r   r   	test_copy  s    zMockTest.test_copyz no old style classes in Python 3c                s   Gd d   d  } t  d |    d   _ |  j t   f d d    t  d |      d   _ |  j t   f d d    d  S)Nc               @   s   e  Z d  Z d Z d S)z1MockTest.test_spec_old_style_classes.<locals>.Foo   N)r   r   r   r-   r   r   r   r   Foo  s   r   rM   r,   c                  s     j  S)N)r/   r   )rB   r   r   r     s    z6MockTest.test_spec_old_style_classes.<locals>.<lambda>c                  s     j  S)N)r/   r   )rB   r   r   r     s    )r   r-   r\   r   )r   r   r   )rB   r   test_spec_old_style_classes  s    		z$MockTest.test_spec_old_style_classesc                s   Gd d   d  } t  d |    d   _ |  j t   f d d      f d d   } |  j t |  t  d |      d   _ |  j t   f d	 d      f d
 d   } |  j t |  d  S)Nc               @   s   e  Z d  Z d Z d S)z5MockTest.test_spec_set_old_style_classes.<locals>.Foor   N)r   r   r   r-   r   r   r   r   r     s   r   rN   r,   c                  s     j  S)N)r/   r   )rB   r   r   r     s    z:MockTest.test_spec_set_old_style_classes.<locals>.<lambda>c                  s   d   _  d  S)NrX   )r/   r   )rB   r   r   _set  s    z6MockTest.test_spec_set_old_style_classes.<locals>._setc                  s     j  S)N)r/   r   )rB   r   r   r     s    c                  s   d   _  d  S)NrX   )r/   r   )rB   r   r   r     s    )r   r-   r\   r   )r   r   r   r   )rB   r   test_spec_set_old_style_classes  s    		z(MockTest.test_spec_set_old_style_classesc                s   Gd d   d t   } | d |    |  j   j d    f d d   } |  j t |    f d d   } |  j t |  d  S)Nc               @   s7   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)NrX   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   r     s    z=MockTest.test_subclass_with_properties.<locals>.SubClass._setN)r   r   r   r   r   propertysome_attributer   r   r   r   SubClass  s   r   rN   rX   c                  s   d   _  d  S)NrX   )r   r   )sr   r   test  s    z4MockTest.test_subclass_with_properties.<locals>.testc                  s   d   _  d  S)Nr-   )r/   r   )r   r   r   r     s    )r   r5   r   r\   r   r   )r   r   r   r   )r   r   test_subclass_with_properties  s    z&MockTest.test_subclass_with_propertiesc             C   sU   t    } d d   } | t |  _ | d  | j d  |  j t | d d  d  S)Nc             S   s   |  j  |  S)N)Z
_mock_call)r   r    r   r   r   __call__  s    z,MockTest.test_setting_call.<locals>.__call__onetwo)r   typer   r]   r\   r   )r   rB   r   r   r   r   test_setting_call  s    	
zMockTest.test_setting_callc             C   s   t    } t t |   } t d d   t t   D  } |  j t   | |  | j | j f |  j d t |   |  j d t |   d  | _ | _ |  j d t |   |  j d t |   d d   | _	 |  j d	 t |   d  S)
Nc             S   s%   g  |  ] } | j  d   s |  q S)_)
startswith).0mr   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     s    z#MockTest.test_dir.<locals>.<lambda>r   )
r   setdirr5   r    r!   rF   r"   r#   r   )r   rB   attrs
type_attrsr   r   r   test_dir  s    	zMockTest.test_dirc             C   s|   t  d t j  } t t t j   } t t |   } |  j t   | |  d | _ |  j t |  j d  d  d  S)NrM   rX   versionrU   )r   unittestTestCaser   r   r5   r   count)r   rB   Ztestcase_attrsr   r   r   r   test_dir_from_spec  s    	zMockTest.test_dir_from_specc          
   C   ss   t  j t d d  } | j   zB t t t     } t t t   } |  j t   | |  Wd  | j   Xd  S)NZ
FILTER_DIRF)	r   rO   rB   startr   r   r   r5   stop)r   Zpatcherr   r   r   r   r   test_filter_dir  s    
zMockTest.test_filter_dirc             C   s   t  d d  } |  j | j d  t d d  } |  j | j d  d t d d d t   i } t  |   } |  j t |  |  j | j j   d  |  j | j t  t    } | j |   |  j t |  |  j | j j   d  |  j | j t  d  S)Nr/   r-   r[   zfoo.bar.return_value!   )	r   r5   r/   r
   KeyErrorr\   r-   r~   Zconfigure_mock)r   rB   rS   r   r   r   test_configure_mock  s    	zMockTest.test_configure_mockc          	   O   sp   y | | |   Wn( t  j   d } |  j | |  Yn X|  j d | f  t |  } |  j | |  d  S)NrU   zException %r not raised)r   exc_infor~   rf   strr5   )r   r}   messagefuncrR   rS   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 } xL | D]D } d } d	 } d
 } |  j t | | | f | d d d d d qy WxC | D]; } d } d } d
 } |  j t | | | f | d d q WxF | D]> } d } d } d
 } |  j t | | | f | d d d  qWx= | D]5 } d } d } d
 } |  j t | | | f |  qWWd  S)Nzmock(1, '2', 3, bar='foo')zExpected call: %s
Not calledrU   2rX   r-   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)rV   zfoo())r   r   rw   r]   r/   r   )r   rB   expectedr   Z	assertersr$   Zactualr   r   r   'test_assert_called_with_failure_message2  sF    	z0MockTest.test_assert_called_with_failure_messagec          	   C   s  t    } |  j | j g  k d  t    } |   d f  i  f g } |  j | j |  | j   | j t j    |  j | j |  |  j | j j d f  i  f g  t    } |   j d d d d d d d	 d f  i  f d
 d t d d d d	  f g } |  j | j |  |  j | j j j d d t d d d d	  f g  |  j | j j d d t d d d d	  f g  t    } |   j j	   j
   d f  i  f d f  i  f d f  i  f g } |  j | j |  |  j |   j t j j	   j
   j    xt   t d d  f D]} t  |   } t | j  d f  i  f g } |  j | j |  t  |   } | j     d f  i  f d f  i  f g } |  j | j |  |  j | j   j t   g  t  |   } | d  d  d  |  j | j t d  d  d  j    |  j |   j t d  d  j    |  j |     j t d  j    t  |   } | d  d  d  j j j d  |  j | j t d  d  d  j j j d  j    |  j |   j t d  d  j j j d  j    |  j |     j t d  j j j d  j    t  |   } t |   j j	   j
    d f  i  f } |  j | j d |  |  j |   j t j j	   j
   j   j    |  j |   j j	   j t j
   j   j    |  j |   j j	   j
 j t   j   j    qWd  S)NT rU   rV   rX   r    r   r!   r   z().foor/   z
().foo.barz().foo.bar().bazrE   r-   zfoo.__int__za()z().foo.bar().baz().__int__)rU   rV   rX   )rU   rV   rX   )rU   rV   rX   )r
   r   rl   r5   r/   r   r   dictr8   r-   rI   	call_listr   r    r!   r"   __int__)r   rB   r   rS   Z	last_callr   r   r   test_mock_callsi  st    		
"	"-""	+(%%.(""zMockTest.test_mock_callsc             C   s   Gd d   d t   } |   } |  j | j |  |  j |   |  Gd d   d t   } |   } |  j | j |  |  j |   |  d  S)Nc               @   s   e  Z d  Z d S)z+MockTest.test_subclassing.<locals>.SubclassN)r   r   r   r   r   r   r   r*     s   r*   c               @   s   e  Z d  Z d d   Z d S)z+MockTest.test_subclassing.<locals>.Subclassc             [   s
   t  |   S)N)r   )r   rS   r   r   r   _get_child_mock  s    z;MockTest.test_subclassing.<locals>.Subclass._get_child_mockN)r   r   r   r   r   r   r   r   r*     s   )r   r~   r/   assertNotIsInstance)r   r*   rB   r   r   r   test_subclassing  s    		zMockTest.test_subclassingc                s   t    t   t   t   g }   f d d   } x | D] } | |  t |  r |   | d d  | d d  | j   | |  | j   | j j d d d | j d  j   j d  | j   | |  q7 Wd  S)Nc                sZ   d } xM | D]E } t  |  |  }   j | t    j | t    j | g   q Wd  S)Nr:   r;   rl   )zcall_args_listzmethod_callsz
mock_calls)r   r~   r   r   r5   )rB   namesrE   attr)r   r   r   assert_attrs  s    z-MockTest.test_arg_lists.<locals>.assert_attrsrU   rV   r    rX   )	r   r
   r   r   r   rj   r/   r-   rI   )r   rJ   r   rB   r   )r   r   test_arg_lists  s$    




zMockTest.test_arg_listsc             C   s  t    } | d d d | d d d |  j t | j  d  | j \ } } |  j | d  |  j | t d d   d	 t d d  f d
 t d d  f g } xf t | | j  D]R \ } } |  j t |  d  |  j | d | d  |  j | d | d  q Wd  S)NrU   r    rX   rV   r!   r   r   )rV   )rU   )rV   )r   r5   lenr9   r   zipr:   )r   rB   rR   rS   Zexpected_listr   r9   r   r   r   test_call_args_two_tuple  s    	*z!MockTest.test_call_args_two_tuplec             C   s  t  d t d d d g   } |  j |   |   |   g d d d g  |  j t |  t d d d d g  } |  j |   |   |   g d d d g  |  j t |  t  d d  } |  j |   |   |   g d	 d
 d g  |  j t |  Gd d   d t  } t d |  } |  j |   |  t  d t    } |  j |   |   |   |   g d d d d g  |  j t |  d  S)Nr[   rU   rV   rX   r    r!   r"   Z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   r   	  s   r   r   r   r   r   )	r   r   r5   r\   StopIterationr
   rO   r~   r   )r   rB   r   r   r   r   test_side_effect_iterator  s     +++!z"MockTest.test_side_effect_iteratorc             C   s`  t    } t d d d g  | _ |  j |   |   |   g d d d g  |  j t |  | j } |  j | t t g     d d d g | _ |  j |   |   |   g d d d g  |  j t |  | j } |  j | t t g     t   } | | _ |  j |   |   |   |   g d d d	 d
 g  |  j t |  |  j	 | j |  d  S)NrU   rV   rX   r    r!   r"   r   r   r   r   )
r   r   r[   r5   r\   r   r~   r   r   r   )r   rB   r[   Z	this_iterr   r   r   !test_side_effect_setting_iterator  s"    	+	+			!z*MockTest.test_side_effect_setting_iteratorc             C   s   x{ t  t f D]m } t d t d f } | d |  } |  j t |  |  j |   d  |  j t |  |  j |   d  q Wd  S)NrX   r,   r[   )r   r
   rb   r   r\   r5   )r   Klassiterabler   r   r   r   $test_side_effect_iterator_exceptions*  s    z-MockTest.test_side_effect_iterator_exceptionsc             C   sJ   t  d d  } t d t g  | _ |  j |   |   g d d g  d  S)Nr8   rV   rU   )r   r   r   r[   r5   )r   rB   r   r   r   !test_side_effect_iterator_default4  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 f  d d i f d d d d i f d d i  f d f  d d i f g } x$ | D] } | j | g d	 d
 q WxT t d d  t d d  t   d d  d f D]% } |  j t | j | g d	 d
 q Wt 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Wt 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
 qXWd  S)NrU   rV   r    rX   r   r!   r,   r   	any_orderTr   r/   r   r   rX   r   )r  rU   rV   )r   r  )rU   rV   )r   r   assert_has_callsr\   rw   )r   rB   kallsZkallZ
kall_listsZ	kall_listr   r   r   test_assert_has_calls_any_order9  s:    	$4	!''E	z(MockTest.test_assert_has_calls_any_orderc       	   	   C   s3  t  d d  d d i f d t  d d  d d d d i f g } t  j   t  j d  g } | j t  j   j d d  j    | j t  j t   d	 i  j	 d g  j    g  } xq t
   t   f D]] } | d d  | d d  | d d  | d d  | d d d | j | | f  q Wt
   } | j   | j d  | j   j d d  | j t   d	 i  j	 d g  | j | | f  x | D] \ } } x t t |   D]l } xc d D][ } | | | |  } | j |  t |  d k r|  j t | j t t |    qWqWqWd  S)NrU   rV   r    rX   r   r!   r,   r   r/   rX   r   )r
  )rU   )rU   rV   rX   )r   r/   r-   extendZspamrI   r   Zbamr   rW   r   r
   r   ranger   r  r\   rw   r   reversed)	r   Zkalls1Zkalls2rJ   rB   r  r   stepZtheser   r   r   test_assert_has_callse  s<    %1	
"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 d d i  f d d d d i f d i  f g } | j |  | j | d d | j | d d    | j | d d   d d | j | d  d   | j | d  d  d d t t |   } |  j t   | j |  Wd  QRX| j | d d |  j t   | j | d d    Wd  QRX| j | d d   d d |  j t   | j | d  d   Wd  QRX| 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>.frM   rU   r!   rV   r"   rX   r   r   r,   r#   r   
         r   r  T)rU   rV   rX   )r   r   r,   )r  r  r  r   r   r   r   )r   r  r   r  r\   rw   )r   r`   rB   Z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 | j d d  | j d d  | j d d d |  j t | j  |  j t | j d d  |  j t | j d d d  S)NrU   rV   r    rX   r!   r,   r   )r   assert_any_callr\   rw   )r   rB   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 | j d d d  | j d d d d d d  | j d	 d
 d d  | j d d	 d d
 d d d d  |  j t | j d d d d d |  j t   } | j d d  Wd  QRXt | j d  r'|  j | j j t  d  S)Nc             S   s   d  S)Nr   )r    r!   r"   r#   r   r   r   r`     s    z;MockTest.test_assert_any_call_with_function_spec.<locals>.frM   rU   r!   rV   r"   rX   r   r   r,   r#   r   r    ry   rz   r{   )	r   r  r\   rw   r|   r}   r~   r{   r   )r   r`   rB   r   r   r   r   'test_assert_any_call_with_function_spec  s    "z0MockTest.test_assert_any_call_with_function_specc             C   s   d d   } t    } | | _ t |  t |  j g } xS | D]K } | d d  | d d  |  j | j t d d  t d d  g  q@ Wd  S)Nc             S   s   d  S)Nr   )r    r!   r   r   r   r`     s    z3MockTest.test_mock_calls_create_autospec.<locals>.frU   rV   rX   r   )r   r`   r   r5   rl   r   )r   r`   objZfuncsr   r   r   r   test_mock_calls_create_autospec  s    			z(MockTest.test_mock_calls_create_autospecc             C   s2   t  j t   d d } |  j d t |   d  S)NrE   Z
sweet_func)rB   r   rO   rF   rG   )r   r   r   r   r   test_create_autospec_with_name  s    z'MockTest.test_create_autospec_with_namec             C   sr   t    } |  j t   | j   Wd  QRX|  j t   | j   Wd  QRXt  d d  } | j   | j   d  S)NZunsafeT)r   r\   r   Zassert_foo_callZassret_foo_call)r   r   r   r   r   test_mock_unsafe  s    	
zMockTest.test_mock_unsafec          	   C   sH   t    } | j j   | j   |  j t   | j j   Wd  QRXd  S)N)r   helloZassert_not_calledr\   rw   )r   r   r   r   r   test_assert_not_called   s
    	
zMockTest.test_assert_not_calledc             C   sE   t    } | j d d d d  d } |  j t | j j  |  d  S)NrE   r  ZdaddyZheroz call(daddy='hero', name='hello'))r   r  r5   rG   r9   )r   r   textr   r   r   test_sorted_call_signature  s    	z#MockTest.test_sorted_call_signaturec             C   ss   t  j   } t  j d d  } t   } | j   | j d d  |  j | j d |  |  j | j d |  d  S)N   r  r   rU   )r   r   indexr   r5   r;   )r   r"   r   r   r   r   r   test_override_tuple_methods  s    	
z$MockTest.test_override_tuple_methodsc       	   
      s  Gd d   d t   } Gd d   d t   } Gd d   d t     t t t t g } xL t |  D]> } | j |   f d d   | j |   f d	 d   qa Wxr| D]j} xat   t d
 d  f D]G} |   } | j | j	 | j
 f x| | f d g d g f g D] \ } } x t   t d
 d  f D] } | j | |  | j |  j t t | d  |  j t t | d  d
 | k r|  j t t | d d   | j | |  |  j t t | d  | j	 |  j t t | d  d
 | k r2|  j t t | d d   q2WqWq Wq Wd  S)Nc               @   s   e  Z d  Z d Z d S)z)MockTest.test_mock_add_spec.<locals>._OnerU   N)r   r   r   r   r   r   r   r   _One  s   r"  c               @   s   e  Z d  Z d Z d S)z)MockTest.test_mock_add_spec.<locals>._TworV   N)r   r   r   r   r   r   r   r   _Two  s   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   threer   r   r   r   Anything  s   r%  c                s   |  d    S)NrM   r   )K)r%  r   r   r   $  s    z-MockTest.test_mock_add_spec.<locals>.<lambda>c                s   |  d    S)NrN   r   )r&  )r%  r   r   r   %  s    rN   Tr   r   r$  )rO   r   r
   r   r   r   r   r   r   r   r$  mock_add_specr\   r   r   setattr)	r   r"  r#  Zklassesr   rS   rB   ZOneZTwor   )r%  r   test_mock_add_spec  s>     	+zMockTest.test_mock_add_specc                s   x t  t f D] } |     t      j t  |  j t t    |       d d   j _   j t  |  j	 t    d  |  j t   f d d    q Wd  S)Nr/   r   c                  s     d S)Nr/   r   r   )rB   r   r   r   [  s    z;MockTest.test_mock_add_spec_magic_methods.<locals>.<lambda>)
r
   r   r   r'  rO   r\   r   r   r8   r5   )r   r   r   )rB   r    test_mock_add_spec_magic_methodsM  s    	
	z)MockTest.test_mock_add_spec_magic_methodsc             C   s  xt  t t t f D] } |   } t   | _ | j   |  j | j t j   g  |  j | j t j   g  |   } t d d  | _	 | j	   |  j | j g   |  j | j g   |   } t     | _
 | j
   |  j | j g   |  j | j g   q Wd  S)NrE   )r   r   r
   r   r/   r5   r;   r   rl   r-   rI   )r   r   rB   r   r   r   test_adding_child_mock^  s     	
	
	
zMockTest.test_adding_child_mockc             C   s\   xU t  t f D]G } |   } t   | _ |     |  j | j t   t     g  q Wd  S)N)r   r
   r8   r5   rl   r   )r   r   rB   r   r   r   test_adding_return_value_mockv  s
    	
z&MockTest.test_adding_return_value_mockc             C   s   Gd d   d t   } t   } t j  | d  } t j  | d  } | j   } |  j | j  | j   } |  j | j  | j | d  | j | d  | j   | j   |  j	 | j
 t j   t j   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     s   r   r   r   )rO   r   r   r   r   r   attach_mockr   r   r5   rl   r   )r   r   ZmanagerZp1Zp2Zmock_oneZmock_twor   r   r   test_manager_mock  s    	

zMockTest.test_manager_mockc             C   s   x t  t f D] } |   } t  d d  | _ t d d  | _ t |  t |  |  j | j t j   t j   g  |  j | j	 g   q Wd  S)Nr8   rX   g      @)
r   r
   r   	__float__r   floatr5   rl   r   r;   )r   r   r   r   r   r   test_magic_methods_mock_calls  s    	

%z&MockTest.test_magic_methods_mock_callsc             C   sV   t  j d d  } | d  } | j   } | d  } | j   } |  j | |  d  S)N	read_datadataza-namezanother-name)rB   ro   readr5   )r   Zmocked_openf1Zf1_dataf2Zf2_datar   r   r    test_mock_open_reuse_issue_21750  s    z)MockTest.test_mock_open_reuse_issue_21750c          
   C   sv   t  j t  j d d   } t  j d |  B | j } | j } t d  | _ d d   } |  j t |  Wd  QRXd  S)NrE   ZJLVztempfile.NamedTemporaryFilezTest 2 Errorc               S   s   t  j   j d  d  S)NZasd)tempfileZNamedTemporaryFilewriter   r   r   r   attempt  s    z.MockTest.test_mock_open_write.<locals>.attempt)	rB   ro   r
   r   r8   r9  OSErrorr[   r\   )r   Zmock_namedtempZmock_filehandleZ
mock_writer:  r   r   r   test_mock_open_write  s    		zMockTest.test_mock_open_writec             C   si   t  j d d  } d d   | j j _ |   j   } |   j   } |  j d |  |  j d |  d  S)Nr2  zfoo
barnc              W   s   d S)Nabcr   )rR   r   r   r   r     s    z8MockTest.test_mock_open_alter_readline.<locals>.<lambda>r=  )rB   ro   r8   readliner[   r5   )r   Zmopenfirstsecondr   r   r   test_mock_open_alter_readline  s    z&MockTest.test_mock_open_alter_readlinec             C   sw  xpt  t f D]b} |   } t |  } | | _ |  j |   |  |  j t |  |  | j   |  j |   |  |  j t |  |  |   } | j | _ |  j	 d t | j   |  j	 d t | j   | j   |  j	 d t | j   |  j	 d t | j   |   } t |  } |   | _ | | j _ |  j t |  |  |  j t | j    |  q Wd  S)Nzname='mock.a')
r   r
   rG   r8   r   r5   rj   r    r!   rF   )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] } |   } | d d  } | j | d  |  j | j |  |  j d t |   | j j	 d  |  j
 | j t j j	 d  g  |  j
 | j t j j	 d  g  q& Wq Wd  S)NrE   r/   r-   zname='mock.bar'rU   )r   r
   r   r   r-  r   r-   rF   rG   rI   r5   rl   r   r;   )r   classesr   Klass2r   m2r   r   r   test_attach_mock  s    	"zMockTest.test_attach_mockc             C   s   t  t t t f } x t  t f D] } x | D] } |   } | d d  } | j | d  |  j |   |  |  j d t |   | j   |  j	 | j
 t   j   j    q, Wq Wd  S)NrE   r/   r8   zname='mock()')r   r
   r   r   r-  r   rF   rG   r/   r5   rl   r   r   )r   rC  r   rD  r   rE  r   r   r   test_attach_mock_return_value  s    	
z&MockTest.test_attach_mock_return_valuec             C   s   x t    t   t   t   f D]j } |  j t | d   | ` |  j t | d   | ` |  j t | d   |  j	 t
 t | d  q Wd  S)Nr   r`   )r   r
   r   r   r7   r|   r   r3   r`   r\   r   r   )r   rB   r   r   r   test_attribute_deletion  s    z MockTest.test_attribute_deletionc             C   sQ   xJ t    t   f D]6 } |  j | t  t | _ |  j | t  | j q Wd  S)N)r   r
   r   r   r   r~   r/   )r   rB   r   r   r   test_class_assignable  s
    	zMockTest.test_class_assignablec             C   s   x t  t t t f D] } | d d d d  } | j d d d  t j |  } t j |  } | j j d d d  |  j	 | j
  |  j t | |   |  j | t  |  j d t |   |  j | j d  q Wd  S)NrE   r/   r.   rX   rU   rV   z
name="foo")r
   r   r*   r   r/   pickledumpsloadsr   r3   r4   r7   r   r~   r+   rF   rG   r5   r.   )r   r   rB   r3  newr   r   r   test_pickle  s    zMockTest.test_pickleN)[r   r   r   r2   rC   rD   rK   rP   r_   ra   rd   r   Z
skipUnlessr   platformrg   rm   rn   rp   rt   rv   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZskipIfr   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.  r1  r7  r<  rA  rB  rF  rG  rH  rI  ZexpectedFailurerN  r   r   r   r   r0   C   s   	)"



7N#
,(!	5		r0   __main__)#Z	unittest2r   Zmock.tests.supportr   r   r   r   r   rJ  r   r8  rB   r   r   r   r	   r
   r   r   r   r   Z	mock.mockr   Zunicoder   r   rO   r   r   r*   r+   r   r0   r   mainr   r   r   r   <module>   s0   "@     