
    =e/                         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                     dS dS )    N)catch_warnings)is_instance)	MagicMockMockpatchsentinel	mock_opencallc                       e Zd ZdS )SampleExceptionN)__name__
__module____qualname__     6/usr/lib/python3.11/unittest/test/testmock/testwith.pyr   r      s          r   r   c                   V    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S )WithTestc                    t          dt          z  t          j                  5  |                     t
          t          j        d           d d d            n# 1 swxY w Y   |                     t
          t          j                   d S N%s.something	unpatched)r   r   r   
Something2assertEqual	something	Somethingselfs    r   test_with_statementzWithTest.test_with_statement   s    >H,h.ABB 	J 	JY(;[III	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	JH$677777s   'AAAc                 z   |                      t                    5  t          dt          z  t          j                  5  |                     t          t          j        d           t                      # 1 swxY w Y   	 d d d            n# 1 swxY w Y   |                     t          t          j                   d S r   )	assertRaisesr   r   r   r   r   r   r   r   r   s    r   test_with_statement_exceptionz&WithTest.test_with_statement_exception   s   // 	( 	(~0(2EFF ( (  H,?MMM%'''( ( ( ( ( ( ( ( (	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	H$677777s.   #B5A33A7	7B:A7	;BBBc                 8   t          dt          z            5 }|                     t          |d           |                     t          |t                    d           d d d            n# 1 swxY w Y   |                     t          t          j                   d S )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    s    >H,-- 	3YDDDOOK	BB13 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	H$677777s   AA**A.1A.c                     G d dt                     }|j        }t          j         |d          5  |                     |j        |d           d d d            n# 1 swxY w Y   |                     |j        |           d S )Nc                       e Zd ZdZdS )6WithTest.test_patch_object_with_statement.<locals>.FoofooN)r   r   r   r   r   r   r   Foor*   )   s        IIIr   r,   r   r   )objectr   r   assertNotEqualr   )r   r,   originals      r    test_patch_object_with_statementz)WithTest.test_patch_object_with_statement(   s    	 	 	 	 	& 	 	 	=\#{++ 	F 	FxEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F11111s   AA Ac                    t          d          5  t          dt          z            5 }t          dt          z            5 }|                     t          |d           |                     t
          |d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     t          t          j                   |                     t
          t          j                   d S )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1 .^UK^aiKiEjEj .  oB  NKHHH  1D!,. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	H$6777)?@@@@@sX   B4B9B:BB

BB
BB4B!	!B4$B!	%B44B8;B8c                 >   t          dt          z  t          j                  5 }|                     t
          |d           |                     |t          j        d           d d d            n# 1 swxY w Y   |                     t
          t          j                   d S )Nr   r   zwrong patchr   r   r   Patchedr   r   r   r%   s     r   test_with_statement_specifiedz&WithTest.test_with_statement_specified<   s    >H,h.>?? 	N>YDDD^X-=}MMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	H$677777s   >A--A14A1c                 d   t                      }t                      |_        t                      |_        d|j        _        |5 }|                     ||j        j                   d d d            n# 1 swxY w Y   |j                                         |j                            d d d            d S )NF)r   	__enter____exit__return_valuer   assert_called_with)r   mockms      r   testContextManagerMockingz"WithTest.testContextManagerMockingC   s    vv%*" 	=QQ ;<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=))+++((tT:::::s   !A00A47A4c                 4   t                      }|                     t                    5  |5  ddz    d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j                                         |                     |j        j                   d S )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   s   {{y)) 	 	  		              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	))+++,-----s1   A>AA	AA	AAAc                    t          dt          z  t          j                  5 }|                     t
          |d           t          dt          z            5 }|                     t
          |d           d d d            n# 1 swxY w Y   |                     t
          |d           d d d            n# 1 swxY w Y   |                     t
          t          j        d           d S )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   sU   >H,h.>?? 	=>YDDD~011 EZ  JDDDE E E E E E E E E E E E E E E Y;= = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	H$6GGGGGs5   4B3B 4B3 B	B3B	B33B7:B7c                    t          dt          z            5 }|                     t          |d           t          dt          z            5 }|                     t          |d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     t          t
          j                   |                     t          t
          j                   d S )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DD*X566 .:M  1D!,. . .. . . . . . . . . . . . . . .	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	H$6777)?@@@@@s5   4BA5)B5A9	9B<A9	=BBBc                    i }t          j        |ddi          5  |                     |ddi           d d d            n# 1 swxY w Y   |                     |i            |                     t                    5  t          j        |ddi          5  |                     |ddi           t	          d          # 1 swxY w Y   	 d d d            n# 1 swxY w Y   |                     |i            d S )NabKonrad)r   dictr   r!   	NameError)r   r+   s     r   test_dict_context_managerz"WithTest.test_dict_context_managerr   s   Zc3Z(( 	. 	.S3*---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.b!!!y)) 	* 	*C#s,, * *  sCj111)))* * * * * * * * *	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*
 	b!!!!!s?   ?AA:C(B::B>	>CB>	CCCc                     G d d          } |            }t          j        |d          5 }t          j        |d          5 }|                                 d d d            n# 1 swxY w Y   |                     |j        d           |                     |j        d           |                                 d d d            n# 1 swxY w Y   |                     |j        d           d S )Nc                       e Zd Zd ZdS )5WithTest.test_double_patch_instance_method.<locals>.Cc                     d S )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   sl   	 	 	 	 	 	 	 	 ACC\!S!! 	Va%%               V.222V.222CCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*A.....s6   CA$C$A(	(C+A(	,ACC	C	N)r   r   r   r   r"   r'   r0   r8   r<   rD   rI   rL   rN   rU   ra   r   r   r   r   r      s        8 8 88 8 88 8 82 2 2A A A8 8 8	; 	; 	;. . .
H 
H 
H	A 	A 	A" " "/ / / / /r   r   c                   h    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dS )TestMockOpenc                     t                      }t          dt          z  |d          5 }|                     ||           t	          d           d d d            n# 1 swxY w Y   |                    d           d S N%s.openTcreater+   )r	   r   r   assertIsopenassert_called_once_withr   rB   patcheds      r   test_mock_openzTestMockOpen.test_mock_open   s    {{9x'd;;; 	wMM'4(((KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$$U+++++s   &AA"Ac                 L   t                      }|j        }t          dt          z  |d          5  t	          d          5 }|                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          d          t                                                      t                                                      t                                          d d d           g}| 	                    |j
        |           |                     ||           d S 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   sh   {{"9x'd;;; 	 	e               	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 u++tvv'7'7'9'9466;;==&&//$d;;=.999a     s5   A8 A!A8!A%	%A8(A%	)A88A<?A<c                 d   t                      }t          dt          z  |d          5  t          d          5 }|                                 d d d            n# 1 swxY w Y   t          d          5 }|                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          d          t                                                      t                                                      t                                          d d d           t          d          t                                                      t                                                      t                                          d d d           g}|                     |j	        |           d S )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               	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 KK))++TVV[[]]FFOOD$--KK))++TVV[[]]FFOOD$--	/
 	.99999sX   B,AB,A	B,!A	"B,4B	B,B	B,B	B,,B03B0c                    t                      }t          |           t          dt          z  |d          5 }|                     ||           t          d           d d d            n# 1 swxY w Y   |                    d           d S re   )r   r	   r   r   ri   rj   rk   rl   s      r   test_explicit_mockzTestMockOpen.test_explicit_mock   s    {{$9x'd;;; 	wMM'4(((KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$$U+++++s   &A**A.1A.c                     t          d          }t          dt          z  |d          5  t          d          }|                                }d d d            n# 1 swxY w Y   |                     |d           d S )Nr+   	read_datarf   Trg   rv   r	   r   r   rj   rp   r   r   rB   hresults       r   test_read_datazTestMockOpen.test_read_data   s    5)))9x'd;;; 	 	UAVVXXF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'''''s   $AA"Ac                 :   t          d          }t          dt          z  |d          5  t          d          }|                                }|                                }|                                }d d d            n# 1 swxY w Y   |                     |d           |                     |d           |                     |d	           |                     |                                d
           t          d          }t          dt          z  |d          5  t          d          }|                                }d d d            n# 1 swxY w Y   |                     |d           |                     |                                d
           d S )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559x'd;;; 	! 	!UAJJLLEJJLLEJJLLE		! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!
 	(((((((((r*** 5)))9x'd;;; 	" 	"UAZZ\\F	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	'''r*****s$   ABB
B"$EEEc                 <   t          d          }t          dt          z  |d          5  t          d          }d |D             }d d d            n# 1 swxY w Y   |                     |d         d	           |                     |d
         d           |                     |d         d           |                     |                                d           |                     t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nr   r{   rf   Trg   rv   c                     g | ]}|S r   r   .0ls     r   
<listcomp>z6TestMockOpen.test_dunder_iter_data.<locals>.<listcomp>       NNN1QNNNr   r   r   r\   r      r   r   )	r	   r   r   rj   r   r   r!   StopIterationnext)r   rB   r   liness       r   test_dunder_iter_dataz"TestMockOpen.test_dunder_iter_data   s   #45559x'd;;; 	# 	#UA"NNNNE	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	q7+++q7+++q7+++r***}-- 	 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AAA4DDDc                    t          d          }t          dt          z  |d          5  t          d          }t	          |          }t	          |          }d |D             }d d d            n# 1 swxY w Y   |                     |d           |                     |d	           |                     |d
         d           |                     |                                d           d S )Nr   r{   rf   Trg   rv   c                     g | ]}|S r   r   r   s     r   r   z/TestMockOpen.test_next_data.<locals>.<listcomp>   r   r   r   r   r   r   r   )r	   r   r   rj   r   r   r   )r   rB   r   r   r   r   s         r   test_next_datazTestMockOpen.test_next_data   s     #45559x'd;;; 	# 	#UAGGEGGE"NNNNE		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#
 	((((((q7+++r*****s   :A11A58A5c                    t          d          }t          dt          z  |d          5  t          d          }|                                }d d d            n# 1 swxY w Y   |                     |g d           t          d          }t          dt          z  |d          5  t          d          }|                                }d d d            n# 1 swxY w Y   |                     |g d	           d S )
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   sw   #45559x'd;;; 	# 	#UA[[]]F	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	!<!<!<=== ?3339x'd;;; 	# 	#UA[[]]F	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	!:!:!:;;;;;s#   $AA"A($CCCc                 .   t          d          }t          dt          z  |d          5  t          dd          5 }|                                }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |d           d S )N   r{   rf   Trg   abcrbr}   )r   rB   rZ   r   s       r   test_read_byteszTestMockOpen.test_read_bytes  s   7+++9x'd;;; 	" 	"eT"" "a" " " " " " " " " " " " " " "	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	)))))4   A4AA4A!	!A4$A!	%A44A8;A8c                    t          d          }t          dt          z  |d          5  t          dd          5 }|                                }|                                }|                                }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |d           |                     |d	           |                     |d
           d S )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  sU    23339x'4888 	% 	%eT"" %a





% % % % % % % % % % % % % % %	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
 	)))))))))))s4   B=B9BB			BB		BB #B c                 2   t          d          }t          dt          z  |d          5  t          dd          5 }|                                }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |g d           d S )	Nr   r{   rf   Trg   r   r   )r   r   r   r   )r   rC   rZ   r   s       r   test_readlines_bytesz!TestMockOpen.test_readlines_bytes   s    23339x'4888 	' 	'eT"" 'a' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	!?!?!?@@@@@r   c                    d}t          |          }|                      |                                d          |d d                    |                      |                                d          |d d                     |            }|                     |                    d          |d d                    |                     |                    d          |dd                     d S )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)CRC.999R)CRC.999DFFYss^444Yrss^44444r   c                    t          d          }t          dt          z  |d          5  t          d          }|                                }|                                }d d d            n# 1 swxY w Y   |                     |d           |                     |dd	g           t          d          }t          dt          z  |d          5  t          d          }|                                }|                                }d d d            n# 1 swxY w Y   |                     |d           |                     |d
           d S )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559x'd;;; 	! 	!UAJJLLE;;==D	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	(((1222#45559x'd;;; 	 	UAJJLLE6688D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	(((|,,,,,s#   8A//A36A38DDDc                    t          d          } |            }d|j        _        d|j        _        dg|j        _        |                     |                                d           |                     |                                d           |                     |                                dg           |                     |                                d           |                     |                                d           d S )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22))++eW555 	**E222**E2222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      s        , , ,
! 
! 
!: : :, , ,( ( (+ + +.  + + +< < <$* * *	* 	* 	*A A A
5 
5 
5- - -(3 3 3 3 3r   rc   __main__)unittestwarningsr   unittest.test.testmock.supportr   unittest.mockr   r   r   r   r	   r
   r   r   r5   r4   	Exceptionr   TestCaser   rc   r   mainr   r   r   <module>r      s"    # # # # # # 6 6 6 6 6 6 K K K K K K K K K K K K K K K K 	( ' & & & &i & & &{/ {/ {/ {/ {/x  {/ {/ {/|I3 I3 I3 I3 I38$ I3 I3 I3X zHMOOOOO r   