
    daf/                        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 e	j                  Ze	j                  Z G d de      Z G d de j$                        Z G d	 d
e j$                        Zedk(  r e j,                          yy)    N)catch_warnings)is_instance)	MagicMockMockpatchsentinel	mock_opencallc                       e Zd Zy)SampleExceptionN)__name__
__module____qualname__     ?/root/Python-3.12.4/Lib/test/test_unittest/testmock/testwith.pyr   r      s    r   r   c                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)WithTestc                    t        dt        z  t        j                        5  | j	                  t
        t        j                  d       d d d        | j	                  t
        t        j                         y # 1 sw Y   .xY wN%s.something	unpatched)r   r   r   
Something2assertEqual	something	Somethingselfs    r   test_with_statementzWithTest.test_with_statement   s^    >H,h.A.AB 	JY(;(;[I	JH$6$67	J 	Js   &A55A>c                 ^   | j                  t              5  t        dt        z  t        j
                        5  | j                  t        t        j
                  d       t               # 1 sw Y   nxY w	 d d d        n# 1 sw Y   nxY w| j                  t        t        j                         y r   )	assertRaisesr   r   r   r   r   r   r   r   r   s    r   test_with_statement_exceptionz&WithTest.test_with_statement_exception   s    / 	(~0(2E2EF (  H,?,?M%''( ( (	( 	( 	( 	H$6$67s   "A>0A((A1	-A>>Bc                    t        dt        z        5 }| j                  t        |d       | j	                  t        |t              d       d d d        | j                  t        t        j                         y # 1 sw Y   .xY w)Nr   r   zpatching wrong type)	r   r   r   r   
assertTruer   r   r   r   r   mock_somethings     r   test_with_statement_aszWithTest.test_with_statement_as    sh    >H,- 	3YDOOK	B13	3 	H$6$67		3 	3s   8A88Bc                     G d dt               }|j                  }t        j                   |d      5  | j                  |j                  |d       d d d        | j	                  |j                  |       y # 1 sw Y   &xY w)Nc                       e Zd ZdZy)6WithTest.test_patch_object_with_statement.<locals>.FoofooN)r   r   r   r   r   r   r   Foor*   )   s    Ir   r,   r   r   )objectr   r   assertNotEqualr   )r   r,   originals      r    test_patch_object_with_statementz)WithTest.test_patch_object_with_statement(   sh    	& 	==\\#{+ 	FxE	F1	F 	Fs   A55A>c                    t        d      5  t        dt        z        5 }t        dt        z        5 }| j                  t        |d       | j                  t
        |d       d d d        d d d        d d d        | j                  t        t        j                         | j                  t
        t        j                         y # 1 sw Y   bxY w# 1 sw Y   fxY w# 1 sw Y   jxY w)NT)recordr   %s.something_elser   )	r   r   r   r   r   something_elser   r   SomethingElser   r&   mock_something_elses      r   test_with_statement_nestedz#WithTest.test_with_statement_nested1   s    4( 	.~01 .^UK^aiKiEj .  oB  NKH  1D!,.. .	. 	H$6$67)?)?@. . . .	. 	.s9   CC/C"C*CCCC	CC$c                 (   t        dt        z  t        j                        5 }| j	                  t
        |d       | j	                  |t        j                  d       d d d        | j	                  t
        t        j                         y # 1 sw Y   .xY w)Nr   r   zwrong patchr   r   r   Patchedr   r   r   r%   s     r   test_with_statement_specifiedz&WithTest.test_with_statement_specified<   st    >H,h.>.>? 	N>YD^X-=-=}M	N 	H$6$67	N 	Ns   9BBc                 ^   t               }t               |_        t               |_        d|j                  _        |5 }| j	                  ||j                  j                         d d d        |j                  j                          |j                  j                  d d d        y # 1 sw Y   AxY w)NF)r   	__enter____exit__return_valuer   assert_called_with)r   mockms      r   testContextManagerMockingz"WithTest.testContextManagerMockingC   s    v%*" 	=QQ ; ;<	=))+((tT:	= 	=s   'B##B,c                 "   t               }| j                  t              5  |5  ddz    d d d        d d d        |j                  j	                          | j                  |j                  j                         y # 1 sw Y   QxY w# 1 sw Y   UxY w)Nr+      )r   r!   	TypeErrorr>   rA   r$   r?   called)r   rB   s     r   $test_context_manager_with_magic_mockz-WithTest.test_context_manager_with_magic_mockO   ss    {y) 	 		 	))+,,- 	 	s!   BA9B9B	>BBc                    t        dt        z  t        j                        5 }| j	                  t
        |d       t        dt        z        5 }| j	                  t
        |d       d d d        | j	                  t
        |d       d d d        | j	                  t
        t        j                  d       y # 1 sw Y   NxY w# 1 sw Y   ;xY w)Nr   r   zrestored with wrong instanceznot restoredr:   )r   r&   
mock_agains      r   "test_with_statement_same_attributez+WithTest.test_with_statement_same_attributeY   s    >H,h.>.>? 	=>YD~01 EZ  JDE Y;=	= 	H$6$6GE E	= 	=s#   *B=B1$B=1B:	6B==Cc                    t        dt        z        5 }| j                  t        |d       t        dt        z        5 }| j                  t        |d       d d d        d d d        | j                  t        t
        j                         | j                  t        t
        j                         y # 1 sw Y   ZxY w# 1 sw Y   ^xY w)Nr   r   r3   )r   r   r   r   r4   r   r   r5   r6   s      r   test_with_statement_imbricatedz'WithTest.test_with_statement_imbricatedf   s    >H,- 	.YD*X56 .:M  1D!,..	. 	H$6$67)?)?@. .	. 	.s"   *B:B.B:.B7	3B::Cc                    i }t        j                  |ddi      5  | j                  |ddi       d d d        | j                  |i        | j                  t              5  t        j                  |ddi      5  | j                  |ddi       t	        d      # 1 sw Y   ixY w# 1 sw Y   nxY w	 d d d        n# 1 sw Y   nxY w| j                  |i        y )NabKonrad)r   dictr   r!   	NameError)r   r+   s     r   test_dict_context_managerz"WithTest.test_dict_context_managerr   s    ZZc3Z( 	.S3*-	.b!y) 	*C#s, *  sCj1))	. 	.
* * *	* 	* 	*
 	b!s)   BB:8 B$B!$B-	)B::Cc                     G d d      } |       }t        j                  |d      5 }t        j                  |d      5 }|j                          d d d        | j                  j                  d       | j                  |j                  d       |j                          d d d        | j                  j                  d       y # 1 sw Y   vxY w# 1 sw Y   2xY w)Nc                       e Zd Zd Zy)5WithTest.test_double_patch_instance_method.<locals>.Cc                      y )Nr   r   s    r   fz7WithTest.test_double_patch_instance_method.<locals>.C.f   s    r   N)r   r   r   rZ   r   r   r   CrX      s    r   r[   rZ      r   )r   r-   rZ   r   
call_count)r   r[   cpatch1patch2s        r   !test_double_patch_instance_methodz*WithTest.test_double_patch_instance_method   s    	 	 C\\!S! 	Va% V..2V..2CCE	 	**A. 	 	s#   CCACC	
CCN)r   r   r   r   r"   r'   r0   r8   r<   rD   rI   rL   rN   rU   ra   r   r   r   r   r      sA    8882A8	;.
H	A"/r   r   c                   f    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zy)TestMockOpenc                     t               }t        dt        z  |d      5 }| j                  ||       t	        d       d d d        |j                  d       y # 1 sw Y   xY wN%s.openTcreater+   )r	   r   r   assertIsopenassert_called_once_withr   rB   patcheds      r   test_mock_openzTestMockOpen.test_mock_open   sV    {9x'd; 	wMM'4(K	 	$$U+		 	s   AA!c                    t               }|j                  }t        dt        z  |d      5  t	        d      5 }|j                          d d d        d d d        t        d      t               j                         t               j                         t               j                  d d d       g}| j                  |j                  |       | j                  |       y # 1 sw Y   xY w# 1 sw Y   xY wre   )r	   r@   r   r   rj   readr
   r>   r?   r   
mock_callsri   )r   rB   handlerZ   expected_callss        r   test_mock_open_context_managerz+TestMockOpen.test_mock_open_context_manager   s    {""9x'd; 	e 	 u+tv'7'7'946;;=&//$d;=.9a  	 	s"   C(C	C(C%	!C((C1c                    t               }t        dt        z  |d      5  t        d      5 }|j	                          d d d        t        d      5 }|j	                          d d d        d d d        t        d      t               j                         t               j	                         t               j                  d d d       t        d      t               j                         t               j	                         t               j                  d d d       g}| j                  |j                  |       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nrf   Trg   r+   bar)
r	   r   r   rj   rp   r
   r>   r?   r   rq   )r   rB   rZ   rs   s       r   -test_mock_open_context_manager_multiple_timesz:TestMockOpen.test_mock_open_context_manager_multiple_times   s    {9x'd; 	e e 	 K))+TV[[]FOOD$-K))+TV[[]FOOD$-	/
 	.9  	 	s9   ED4EE !E4D=	9E E		EEc                     t               }t        |       t        dt        z  |d      5 }| j	                  ||       t        d       d d d        |j                  d       y # 1 sw Y   xY wre   )r   r	   r   r   ri   rj   rk   rl   s      r   test_explicit_mockzTestMockOpen.test_explicit_mock   s]    {$9x'd; 	wMM'4(K	 	$$U+		 	s   A##A,c                     t        d      }t        dt        z  |d      5  t        d      }|j	                         }d d d        | j                  d       y # 1 sw Y   xY w)Nr+   	read_datarf   Trg   rv   r	   r   r   rj   rp   r   r   rB   hresults       r   test_read_datazTestMockOpen.test_read_data   sX    5)9x'd; 	UAVVXF	 	'		 	s   AA"c                    t        d      }t        dt        z  |d      5  t        d      }|j	                         }|j	                         }|j	                         }d d d        | j                  d       | j                  d       | j                  d	       | j                  j	                         d
       t        d      }t        dt        z  |d      5  t        d      }|j	                         }d d d        | j                  d       | j                  |j	                         d
       y # 1 sw Y   xY w# 1 sw Y   HxY w)Nfoo
bar
baz
r{   rf   Trg   rv   foo
bar
baz
 r+   r	   r   r   rj   readliner   )r   rB   r   line1line2line3r   s          r   test_readline_datazTestMockOpen.test_readline_data   s    #459x'd; 	!UAJJLEJJLEJJLE		!
 	(((r* 5)9x'd; 	"UAZZ\F	" 	'r*!	! 	!	" 	"s   <D4E 4D= E	c                    t        d      }t        dt        z  |d      5  t        d      }|D cg c]  }| }}d d d        | j	                  d   d       | j	                  |d	   d
       | j	                  |d   d       | j	                  j                         d       | j                  t              5  t        |       d d d        y c c}w # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r{   rf   Trg   rv   r   r   r\   r      r   r   )	r	   r   r   rj   r   r   r!   StopIterationnext)r   rB   r   lliness        r   test_dunder_iter_dataz"TestMockOpen.test_dunder_iter_data   s    #459x'd; 	#UA !N1QNEN	# 	q7+q7+q7+r*}- 	G	 	 #	# 	#	 	s'   C	CC9CCCC(c                    t        d      }t        dt        z  |d      5  t        d      }t	        |      }t	        |      }|D cg c]  }| }}d d d        | j                  d       | j                  d       | j                  d	   d
       | j                  j                         d       y c c}w # 1 sw Y   hxY w)Nr   r{   rf   Trg   rv   r   r   r   r   r   )r	   r   r   rj   r   r   r   )r   rB   r   r   r   r   r   s          r   test_next_datazTestMockOpen.test_next_data   s     #459x'd; 	#UAGEGE !N1QNEN		#
 	((q7+r*	 #		# 	#s   &B:	B5B:5B::Cc                    t        d      }t        dt        z  |d      5  t        d      }|j	                         }d d d        | j                  g d       t        d      }t        dt        z  |d      5  t        d      }|j	                         }d d d        | j                  |g d	       y # 1 sw Y   wxY w# 1 sw Y   *xY w)
Nr   r{   rf   Trg   rv   )r   r   r   foo
bar
baz)r   r   bazr	   r   r   rj   	readlinesr   r~   s       r   test_readlines_dataz TestMockOpen.test_readlines_data   s    #459x'd; 	#UA[[]F	# 	!<= ?39x'd; 	#UA[[]F	# 	!:;	# 	#	# 	#s   B4;C 4B= C	c                     t        d      }t        dt        z  |d      5  t        dd      5 }|j	                         }d d d        d d d        | j                  d       y # 1 sw Y   $xY w# 1 sw Y   (xY w)N   r{   rf   Trg   abcrbr}   )r   rB   rZ   r   s       r   test_read_byteszTestMockOpen.test_read_bytes  sp    7+9x'd; 	"eT" "a"	" 	)" "	" 	"s"   A/A# A/#A,	(A//A8c                 ~   t        d      }t        dt        z  |d      5  t        dd      5 }|j	                         }|j	                         }|j	                         }d d d        d d d        | j                  d       | j                  d	       | j                  d
       y # 1 sw Y   HxY w# 1 sw Y   LxY w)N   abc
def
ghi
r{   rf   Trg   r   r      abc
   def
   ghi
r   )r   rC   rZ   r   r   r   s         r   test_readline_bytesz TestMockOpen.test_readline_bytes  s     239x'48 	%eT" %a





%	%
 	)))% %	% 	%s"   B31B' B3'B0	,B33B<c                     t        d      }t        dt        z  |d      5  t        dd      5 }|j	                         }d d d        d d d        | j                  g d       y # 1 sw Y   &xY w# 1 sw Y   *xY w)	Nr   r{   rf   Trg   r   r   )r   r   r   r   )r   rC   rZ   r   s       r   test_readlines_bytesz!TestMockOpen.test_readlines_bytes   sr     239x'48 	'eT" 'a'	' 	!?@' '	' 	's"   A1A% A1%A.	*A11A:c                 b   d}t        |      }| j                   |       j                  d      |d d        | j                   |       j                  d      |d d         |       }| j                  |j                  d      |d d        | j                  |j                  d      |dd         y )Nr   r{   
   )r	   r   rp   )r   	some_datarB   rZ   s       r   !test_mock_open_read_with_argumentz.TestMockOpen.test_mock_open_read_with_argument(  s     $	9-R)CR.9R)CR.9FYs^4Yrs^4r   c                    t        d      }t        dt        z  |d      5  t        d      }|j	                         }|j                         }d d d        | j                  d       | j                  dd	g       t        d      }t        dt        z  |d      5  t        d      }|j	                         }|j                         }d d d        | j                  |d       | j                  |d
       y # 1 sw Y   xY w# 1 sw Y   :xY w)Nr   r{   rf   Trg   rv   r   r   r   zbar
baz
)r	   r   r   rj   r   r   r   rp   )r   rB   r   r   rests        r   test_interleaved_readsz#TestMockOpen.test_interleaved_reads5  s     #459x'd; 	!UAJJLE;;=D	! 	(12#459x'd; 	UAJJLE668D	 	(|,	! 	!	 	s   ,C6,D6C?Dc                    t        d      } |       }d|j                  _        d|j                  _        dg|j                  _        | j                  |j                         d       | j                  |j                         d       | j                  |j	                         dg       | j                  |j                         d       | j                  |j                         d       y )Nr+   r{   rv   )r	   rp   r@   r   r   r   )r   rB   rr   s      r   test_overriding_return_valuesz*TestMockOpen.test_overriding_return_valuesI  s    5)#( ',$).%.*E2))+eW5 	*E2*E2r   N)r   r   r   rn   rt   rw   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   rc      sN    ,
!:,(+.+<$*	*A
5-(3r   rc   __main__)unittestwarningsr   #test.test_unittest.testmock.supportr   unittest.mockr   r   r   r   r	   r
   r   r   r5   r4   	Exceptionr   TestCaser   rc   r   mainr   r   r   <module>r      sz     # ; K K 	(( 'i &{/x   {/|I38$$ I3X zHMMO r   